CPAN - CPAN - Wikipedia

CPAN logosu

Kapsamlı Perl Arşiv Ağı (CPAN) bir depo 250.000'in üzerinde yazılım modülleri ve 39.000 dağıtım için eşlik eden belgeler Perl Programlama dili 12.000'den fazla katılımcı tarafından.[1] CPAN ya arşiv ağını ya da ağa bir arayüz olarak ve otomatikleştirilmiş bir yazılım yükleyicisi olarak görev yapan Perl programını belirtebilir (bir şekilde bir Paketleme yöneticisi ). CPAN'daki çoğu yazılım ücretsiz ve açık kaynaklı yazılım.[2]

Tarih

CPAN, 1993 yılında tasarlandı ve Ekim 1995'ten beri çevrimiçi olarak aktif.[3] Dayanmaktadır CTAN model ve dağınık Perl arşivlerinin yapısını birleştirmek için bir yer olarak başladı.[4]

Rol

Birçok gibi Programlama dilleri Perl, harici kullanmak için mekanizmalara sahiptir. kütüphaneler bir dosya oluşturmak, birçok program tarafından kullanılan ortak rutinleri içerir. Perl bunları çağırıyor modüller. Perl modülleri genellikle birkaç tanesinden birine kurulur dizinler kimin yollar Perl'e yerleştirilir çevirmen ilk olduğunda derlenmiş; açık Unix benzeri işletim sistemleri ortak yollar şunları içerir: / usr / lib / perl5, / usr / local / lib / perl5ve birkaç alt dizini.

Perl, küçük bir dizi çekirdek modüller. Bunlardan bazıları ExtUtils :: MakeMaker gibi önyükleme görevlerini gerçekleştirir,[5] yaratmak için kullanılan Makefiles diğer genişletme modüllerini oluşturmak ve kurmak için; List :: Util gibi diğerleri[6] sadece yaygın olarak kullanılmaktadır.

CPAN'ın temel amacı, programcıların Perl standart dağıtımına dahil olmayan modülleri ve programları bulmalarına yardımcı olmaktır. Yapısı ademi merkeziyetçi. Yazarlar kendi modüllerini korur ve geliştirir. Aynı görev veya amaç için çatallanma ve rakip modüller oluşturma yaygındır. Yüklenen herhangi bir dağıtım için otomatik olarak kurulan üçüncü taraf bir hata izleme sistemi vardır, ancak yazarlar aşağıdaki gibi farklı bir hata izleme sistemi kullanmayı tercih edebilir: GitHub. Benzer şekilde GitHub, dağıtımlar için kaynağı depolamak için popüler bir konum olsa da, yazarın tercih ettiği herhangi bir yerde depolanabilir veya herkesin erişimine açık olmayabilir. Bakımcılar başkalarına modüllerini sürdürme veya devralma izni verebilir ve terk edilmiş modülleri devralmak isteyenler için yöneticiler tarafından izinler verilebilir. Güncellenen dağıtımların önceki sürümleri, yükleyici tarafından silinene kadar CPAN'da tutulur ve BackPAN adı verilen ikincil bir yansıma ağı, CPAN'dan silinse bile dağıtımları korur.[7] Ayrıca, CPAN ve tüm modüllerinin tam geçmişi GitPAN projesi olarak mevcuttur,[8] tüm modüllerin eksiksiz geçmişini kolayca görmeye ve çatalların kolay bakımına izin verir. CPAN ayrıca Perl'in yeni sürümlerinin yanı sıra ilgili projeleri dağıtmak için de kullanılır. Papağan ve Raku.

Yapısı

CPAN'daki dosyalar şu şekilde anılır: dağıtımlar. Bir dağıtım, bir veya daha fazla modül, belge dosyası veya ortak bir arşivleme biçiminde paketlenmiş programlardan oluşabilir. gzip ile sıkıştırılmış katran arşiv veya bir ZIP dosya. Dağıtımlarda genellikle kurulum komut dosyaları bulunur (genellikle Makefile.PL veya Build.PL) ve dağıtımın içeriğinin düzgün çalıştığını doğrulamak için çalıştırılabilen test komut dosyaları. Yeni dağıtımlar Perl Yazarlar Yükleme Sunucusuna yüklenir veya DURAKLAT (bkz. Bölüm PAUSE ile dağıtımları yükleme ).

2003 yılında dağıtımlar, adı verilen meta veri dosyalarını içermeye başladı. META.yml, dağıtımın adını, sürümünü, bağımlılıklarını ve diğer yararlı bilgileri gösteren; ancak, tüm dağıtımlar meta veri içermez. Bir dağıtımda meta veriler bulunmadığında, PAUSE yazılımı dağıtımdaki kodu aynı bilgileri aramak için analiz etmeye çalışır; bu mutlaka çok güvenilir değildir. 2010 yılında, bu spesifikasyonun 2. versiyonu oluşturuldu[9] adlı yeni bir dosya aracılığıyla kullanılacak META.json, YAML format dosyası genellikle aşağıdakiler için de dahildir: geriye dönük uyumluluk.

Binlerce dağıtım ile CPAN'ın kullanışlı olması için yapılandırılması gerekir. Yazarlar, modüllerini genellikle Perl modül adlarının doğal hiyerarşisine yerleştirirler (örneğin Apache :: DBI veya Lingua :: TR :: Çekim) amaca veya alana göre, ancak bu zorunlu değildir.

CPAN modülü dağıtımları genellikle şu şekilde adlara sahiptir: CGI-Uygulama-3.1 (nerede :: modülün adında kullanılan bir kısa çizgi ile değiştirildi ve sürüm numarası ada eklendi), ancak bu yalnızca bir kuraldır; birçok önemli dağıtım, özellikle birden çok modül içerenler, kuralları bozar. Güvenlik kısıtlamaları, bir dağıtımın aynı dosya adıyla değiştirilmesini engeller, bu nedenle neredeyse tüm dağıtım adları bir versiyon numarası.

Bileşenler

CPAN'ın dağıtım altyapısı, dünya çapında 60'tan fazla ülkede 250'den fazla aynadan oluşan ağından oluşmaktadır.[10] Her tam aynada yaklaşık 31 gigabayt veri.[11]

Çoğu ayna, CPAN ana sitesinden saatlik, günlük veya günlük olarak güncellenir.[12] Bazı siteler, diğer birçok yazılımı yansıtan büyük FTP sunucularıdır, ancak diğerleri yalnızca Perl'i yoğun bir şekilde kullanan şirketlerin sahip olduğu sunuculardır. Antarktika hariç her kıtada en az iki ayna var.

Perl programcılarının CPAN'da sıralama yapmasına yardımcı olmak için birkaç arama motoru yazılmıştır. Resmi arama.cpan.org metin aramasını, göz atılabilir bir modül dizini ve CPAN'da bulunan tüm dağıtımların çıkarılmış kopyalarını içerir. 16 Mayıs 2018'de Perl Vakfı, search.cpan.org'un yaşlanan kod tabanı ve bakım yükü nedeniyle 29 Haziran 2018'de (19 yıllık faaliyetten sonra) kapatılacağını duyurdu. Kullanıcıların geçişi yapılacak ve üçüncü taraf alternatif MetaCPAN'a yönlendirilecektir.[13][14]

CPAN Testçileri, CPAN'a yüklenirken dağıtımları indirip test edecek gönüllüler grubudur. Bu, yazarların modüllerini başka türlü erişemeyecekleri birçok platform ve ortamda test etmesini sağlar, böylece taşınabilirliği ve bir dereceye kadar kaliteyi teşvik etmeye yardımcı olur. Duman test uzmanları, daha sonra harmanlanan ve ana rapor sitesi, istatistikler ve bağımlılıklar dahil olmak üzere çeşitli sunum web siteleri için kullanılan raporlar gönderir.

Yazarlar yeni dağıtımları CPAN'a şu yolla yükleyebilir: Perl Yazarlar Yükleme Sunucusu (DURAKLAT). Bunu yapmak için bir PAUSE hesabı talep etmeleri gerekir.

Kayıt olduktan sonra, şu adreste bir web arayüzü kullanabilirler: pause.perl.org veya bir FTP dosyaları dizinlerine yüklemek ve silmek için arabirim. Yüklemedeki modüller, yalnızca modül adı daha önce kullanılmamışsa standart olarak dizine eklenecektir ( ilk gelen yükleyiciye izin) veya yükleyicinin bu ad için izni varsa ve modül mevcut herhangi bir girişten daha yüksek bir sürümse.[15] Bu, PAUSE'ın web arayüzü aracılığıyla belirtilebilir.

CPAN.pm, CPANPLUS ve cpanminus

Ayrıca CPAN adında bir Perl çekirdek modülü de bulunmaktadır; genellikle depodan CPAN.pm adıyla ayrılır. CPAN.pm temelde dağıtımları aramak, indirmek ve kurmak için kullanılabilen etkileşimli bir kabuktur. Adlı etkileşimli bir kabuk cpan Perl çekirdeğinde de sağlanır ve CPAN.pm'yi çalıştırmanın olağan yoludur. Kısa bir yapılandırma sürecinden ve yansıtma seçiminden sonra, modülleri otomatik olarak indirmek, paketinden çıkarmak, derlemek, test etmek ve kurmak için kullanıcının bilgisayarında bulunan araçları kullanır. Aynı zamanda kendini güncelleme yeteneğine de sahiptir.

CPAN.pm'yi daha temiz ve daha modern bir şeyle değiştirme çabası, CPANPLUS (veya CPAN ++) modül setiyle sonuçlandı. CPANPLUS, modülleri indirmenin, derlemenin ve yüklemenin arka uç çalışmasını komut vermek için kullanılan etkileşimli kabuktan ayırır. Ayrıca, kriptografik imza denetimi ve test sonucu raporlama gibi çeşitli gelişmiş özellikleri de destekler. Son olarak, CPANPLUS bir dağıtımı kaldırabilir. CPANPLUS, 5.10.0 sürümünde Perl çekirdeğine eklenmiş ve 5.20.0 sürümünde kaldırılmıştır.

Bu CPAN kurulumcularına daha küçük, daha yalın modern bir alternatif, cpanminus adı altında geliştirildi. cpanminus, sınırlı bellek ortamlarında sıklıkla ihtiyaç duyulduğu gibi çok daha küçük bellek ayak izine sahip olacak ve yalnızca beklenen çekirdek Perl modüllerinin mevcut olmasını gerektirecek şekilde kendi kendini kurabilecek şekilde bağımsız bir komut dosyası olarak kullanılabilecek şekilde tasarlanmıştır. Ayrıca CPAN'dan App :: cpanminus modülü olarak da mevcuttur. cpanm senaryo. Kalıcı bir yapılandırmayı sürdürmez veya buna dayanmaz, ancak yalnızca ortam ve komut satırı seçenekleri tarafından yapılandırılır. cpanminus'un etkileşimli bir kabuk bileşeni yoktur. Önkoşulları belirlemek için cpanfile formatını tanır, CPAN kurulumu için tasarlanmayan geçici Perl projelerinde yararlıdır. cpanminus ayrıca dağıtımları kaldırma yeteneğine de sahiptir.

Bu modüllerin her biri, bir dağıtımın bağımlılıklar ve ön koşulları otomatik olarak veya bireysel kullanıcı onayı ile yinelemeli olarak kurun. Her biri FTP ve HTTP'yi destekler ve güvenlik duvarları ve proxy'ler aracılığıyla çalışabilir.

Etkilemek

Deneyimli Perl programcıları genellikle Perl'in gücünün yarısının CPAN'da olduğunu söylerler. Adı Perl's Katil uygulaması.[16] Kabaca eşdeğerdir PECL ve ARMUT için PHP; PyPI (Python Paket Dizini) deposu Python; RubyGems için Yakut; CRAN için R; npm için Node.js; LuaRocks için Lua; Uzman için Java; ve Hackage için Haskell. CPAN'ın tahkim edilmiş ad alanlarını, bir test rejimini ve iyi tanımlanmış bir dokümantasyon stilini kullanması onu benzersiz kılar.

Perl geliştirici topluluğu için önemi göz önüne alındığında, CPAN hem şekillendirir hem de Perl kültürü. "Kendi kendini tayin eden usta kütüphaneci", Jarkko Hietaniemi genellikle katılır 1 Nisan Şaka Günü espriler; 1 Nisan 2002'de site geçici olarak CJAN, "J" nin "Java" anlamına geldiği yer. 2003 yılında www.cpan.org alan adı yönlendirildi Matt'in Senaryo Arşivi, Perl topluluğunda kötü yazılmış kodlara sahip olduğu için rezil bir site.[17][18][19]

CPAN'daki dağıtımların bir kısmı şaka olarak dağıtılır. Acme:: hiyerarşi şaka modülleri için ayrılmıştır; Örneğin, Acme :: Yapma ekler yapma kendisine verilen kodu çalıştırmayan işlev ( yapmak yerleşiktir). Dışında bile Acme :: hiyerarşi, bazı modüller hala büyük ölçüde eğlence için yazılıyor; bir örnek Lingua :: Romana :: PerligataLatince'nin bir alt kümesinde Perl programları yazmak için kullanılabilir.

2005 yılında, JavaScript ile de ilgilenen bir grup Perl geliştiricisi bir araya gelerek JSAN JavaScript Arşiv Ağı. JSAN, yaşam süresinin çoğunda uyumlu bir "topluluğa" sahip olmayan JavaScript diliyle kullanım için CPAN altyapısının neredeyse doğrudan bir bağlantı noktasıdır.

2008 yılında, CPAN yöneticisi ile bir şans toplantısının ardından Adam Kennedy Açık Kaynak Geliştiricileri Konferansı'nda, Linux çekirdek geliştiricisi Rusty Russell Kapsamlı C Arşiv Ağı CCAN'ı oluşturdu. CCAN, CPAN mimarisinin doğrudan bağlantı noktasıdır. C dili.

CRAN, Comprehensive R Archive Network, barındıran bir ayna kümesidir. R programlama dili dağıtım (lar), belgeler ve katkıda bulunan uzantılar.[20]

Yöneticiler

Adam Kennedy

2016 yılında Adam Kennedy

Adam Kennedy bir Avustralyalı Perl programcı ve birkaç CPAN yöneticisinden biri. ADAMK CPAN yazar kimliği altında, 200'ün üzerinde modül dağıtımları CPAN'a, CPAN katkı liderlik tablosunun en üstüne yerleştirir.[21] Kennedy, birçoğunu diğer yazarlardan benimsediği ve herhangi bir kayıtlı CPAN yazarının kullanımına açık olan Açık Deposuna dahil ettiği 200'den fazla CPAN modülünün ilk geliştiricisidir. Aşağıdaki gibi açık kaynak konferanslarda sık sık sunum yapıyor OSDC, OSCON, ve YAPC Perl QA hackathonlarının yanı sıra.

Kennedy, Perl programlama dili için, özellikle PPI gibi araç zinciri geliştirme ve geliştirme araçlarını geliştirmek için bazı önemli modüller geliştirdi. [22] (bir Perl ayrıştırıcı), CPAN :: Metrics[23] (CPAN'da 16 m + satır kodunda metrikler oluşturun), Taşınabilir Perl[24] (a.k.a. "Çubuktaki Perl") ve Padre (bir Perl IDE). Ayrıca Windows üzerinde Perl için platform eşitliğinin güçlü bir savunucusu olmuştur ve Windows için hem Win32 Perl Wiki hem de Strawberry Perl dağıtımını başlatmıştır.

ÜFE

Perl PPI Parser, Perl 5 kod analizi, dokümantasyonu ve yeniden düzenleme araçları için temel bir yapı taşı sağlamıştır. Perl :: Eleştirmen[25] Perl kaynak kodunu aşağıdaki kriterlere göre eleştirmek için ÜFE kullanır Perl En İyi Uygulamaları; Padre IDE, kod analizi ve yeniden düzenleme için ÜFE kullanır. PPI dokümantasyonu, "Yalnızca perl (yorumlayıcı) Perl'i (kaynak kodu) ayrıştırabilir" şeklindeki gerçekçiliğe atıfta bulunur, çünkü dinamik dil; PerlMonks'taki bir gönderi resmi bir kanıt sunuyor.[26]

Çilek Perl

Çilek Perl Windows işletim sistemi için Perl'in ikili bir dağıtımıdır. Çoğu Windows tabanlı Perl dağıtımından farklı olarak, Strawberry Perl ayrıca bir C derleyicisini, yapım aracını ve Windows ortamıyla uyumluluğu geliştirmek için önceden yapılandırılmış bazı modülleri bir araya getirir. Bu dağıtımın amacı, CPAN'da bulunan en son modülleri test etmek ve kullanmak için pratik bir ortam sağlamaktır. Larry Duvarı, Perl'in yaratıcısı, bunu Windows için iyi bir bağlantı noktası olarak onayladı.[27]

Taşınabilir Perl (a.k.a. "Çubuktaki Perl")

Taşınabilir Perl[28] taşınabilir flash bellek cihazlarına, iPod'lara, cep telefonlarına, kameralara vb. kuruluma uygun ilk Perl dağıtımıdır. İlk sürüm OSCON 2008'de USB sürücülerde dağıtıldı.[29] Bu proje için ilk çalışma Perl Vakfı'ndan bir hibe ile finanse edildi.

Kaynakça konuş

Adam Kennedy, aşağıdakiler de dahil olmak üzere dünya çapında bir dizi teknik konferansta konuşmuştur: OSCON, OSDC, Linux.conf.au ve çok sayıda YAPC Etkinlikler. Bu konuşmalar şunları içerir:

  • PITA - Gülünç Büyük Ölçekli Test, YAPC :: NA 2006 [30]
  • Hiçbir şey yanlış gidemez, Linux.conf.au 2007 [31]
  • Strawberry Perl, Win32 Platform Eşitliğini SağlamaOSCON 2008 [32]
  • Padre - Normal insanlar için Perl IDE, OSDC 2009 [33]
Mevcut çalışma

Adam taşındı San Francisco, 2012'de Amerika Birleşik Devletleri'nde California. Kaggle 2012'den 2015'e kadar bir mühendis olarak çalışmaya başladı elma 2016 yılında.[34] Şu anda Apple'da Veri Mühendisliği Yöneticisi Siri Search pozisyonunda[35]

Referanslar

  1. ^ "CPAN ön sayfası". Alındı 27 Ocak 2016.
  2. ^ "Perl ve CPAN modülleri nasıl lisanslanır?". CPAN üzerindeki modüllerin tümü olmasa da çoğu GNU Genel Kamu Lisansı (GPL) veya Sanatsal lisans altında lisanslanmıştır ...
  3. ^ "Perl'in Zaman Çizelgesi ve Kültürü".
  4. ^ "CPAN'ı Tıklamak" (PDF). TeX için bir kanonik site koleksiyonu oluşturmayı başaran CTAN projesi gibi birleşik bir yapı oluşturmak için işbirliği yapmamızı öneriyorum.
  5. ^ "ExtUtils :: MakeMaker - Modül oluştur Makefile - Perldoc Tarayıcısı". perldoc.perl.org. Alındı 18 Kasım 2020.
  6. ^ "List :: Util - Genel yardımcı program listesi alt yordamları seçimi - Perldoc Tarayıcısı". perldoc.perl.org. Alındı 18 Kasım 2020.
  7. ^ "BackPAN". Alındı 20 Aralık 2019.
  8. ^ "Gitpan nedir?". 2 Aralık 2015. Alındı 16 Kasım 2016.
  9. ^ "CPAN :: Meta :: Tarih". Alındı 20 Aralık 2019.
  10. ^ "CPAN Mirror Network". Alındı 16 Kasım 2016.
  11. ^ "CPAN nasıl yansıtılır". CPAN.org. Alındı 15 Kasım 2016.
  12. ^ "CPAN Durumu ve İstatistikleri". Alındı 9 Mayıs 2010.
  13. ^ "Bir devrin sonu: search.cpan.org'a veda etmek". log.perl.org. Alındı 22 Mayıs 2018.
  14. ^ "Search.cpan.org'a veda etmek". perl.com. Alındı 26 Haziran 2018.
  15. ^ "DURAKLAT İşletim Modeli". Alındı 20 Aralık 2019.
  16. ^ "Re: Killer Apps in PERL". Alındı 24 Şubat 2013.
  17. ^ "Perl ile Programlamanın Öğeleri". 12 Ekim 2000. Alındı 25 Nisan 2013.
  18. ^ "Bu formmail.pl'yi eğlence ve eğlence için kullanın". 7 Ağustos 2001. Alındı 25 Nisan 2013.
  19. ^ "Matt'in Senaryo Arşivi Tekrar Çarptı!". 4 Temmuz 2001. Alındı 25 Nisan 2013.
  20. ^ "CRAN nedir?". Alındı 20 Aralık 2019.
  21. ^ http://thegestalt.org/simon/perl/wholecpan.html
  22. ^ https://metacpan.org/module/PPI
  23. ^ https://metacpan.org/module/CPAN::Metrics
  24. ^ https://metacpan.org/module/Portable
  25. ^ https://metacpan.org/module/Perl::Critic
  26. ^ http://www.perlmonks.org/?node_id=663393
  27. ^ http://www.computerworld.com.au/article/270267/-z_programming_languages_perl?pp=3&fp=&fpid=
  28. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 21 Temmuz 2011'de. Alındı 30 Haziran 2009.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  29. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 6 Temmuz 2010'da. Alındı 30 Haziran 2009.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  30. ^ http://www.media-landscape.com/yapc/2006-06-26.AdamKennedy/
  31. ^ http://lca2007.linux.org.au/talk/122.html
  32. ^ http://en.oreilly.com/oscon2008/public/schedule/detail/2769
  33. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 24 Ekim 2009. Alındı 28 Kasım 2009.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  34. ^ https://www.linkedin.com/in/adamatalias
  35. ^ "Konuşmacı Bio 2019".

Dış bağlantılar