Perl Modül Kurulumu: Eksiksiz Teknik Kılavuz
Perl modülleri, HTTP isteklerinden veritabanı erişimine, XML ayrıştırma ve kriptografiye kadar uzanan görevler için önceden oluşturulmuş işlevsellikle temel dili genişletmek amacıyla tasarlanmış, .pm uzantılı dosyalarda saklanan bağımsız, yeniden kullanılabilir Perl kodu paketleridir. Bunları doğru şekilde kurmak — ister CPAN, cpanm veya manuel derleme yoluyla olsun — her Perl geliştiricisi veya sistem yöneticisi için temel bir beceridir.
Bu kılavuz, kök olmayan ortamlar, bağımlılık çözümlemesi, sürüm sabitleme ve kurulum sonrası doğrulama dahil olmak üzere her kurulum yöntemini derinlemesine ele almaktadır — çoğu öğreticinin tamamen atladığı ayrıntılar.
Perl Modülleri Nedir ve Neden Önemlidir
Perl modülü, betik içine fonksiyonlar, değişkenler veya nesne yönelimli arayüzler aktaran, ad alanı kapsamlı bir pakettir. Modüller @INC arama yolunda bulunur ve use ile derleme zamanında ya da require ile çalışma zamanında yüklenir. Bu ayrım önemlidir: use Module betiğiniz çalışmadan önce değerlendirilir; yani eksik bir modül, çalışma zamanı sürprizine yol açmak yerine anında ölümcül bir hataya neden olur.
Kapsamlı Perl Arşiv Ağı (CPAN), binlerce katkıcı tarafından yazılmış 200.000’den fazla modül dağıtımına ev sahipliği yapar. Her üretim Perl ortamı — ister bare-metal bir sunucuda, ister bir VPS‘te, ister paylaşımlı bir ortamda çalışsın — güvenilir bir modül kurulum iş akışına bağlıdır.
Yöntem 1: CPAN Kabuğu Aracılığıyla Perl Modüllerini Kurma
Yerleşik CPAN istemcisi, her standart Perl kurulumunda bulunur. Bağımlılık çözümlemesini, modül getirmeyi, derlemeyi, test etmeyi ve kurulumu otomatik olarak gerçekleştirir.
İlk CPAN Yapılandırması
Yeni bir sistemde, CPAN kabuğunun ilk çağrısı etkileşimli bir yapılandırma sihirbazını tetikler. Bunu atlamak ve makul varsayılanları otomatik olarak kabul etmek için:
perl -MCPAN -e 'CPAN::Shell->install("CPAN")'Ya da kabuğu doğrudan başlatın:
perl -MCPAN -e shellKabuk içinde herhangi bir modülü adıyla kurun:
cpan[1]> install LWP::Simple
cpan[2]> install DBITek Satırlık Etkileşimsiz Kurulum
Betiklenmiş dağıtımlar veya CI boru hatları için kabuğu tamamen atlayın:
perl -MCPAN -e 'install("LWP::Simple")'Kritik uç durum: CPAN etkileşimsiz bir çalıştırma sırasında yapılandırma isterse (Docker kapsayıcılarında veya minimal işletim sistemi görüntülerinde yaygındır), önce otomatik yapılandırmayı zorlayın:
perl -MCPAN -e 'my $c = CPAN::HandleConfig->load; CPAN::Shell->install("LWP::Simple")'Ya da çalıştırmadan önce ortam değişkenini ayarlayın:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install("LWP::Simple")'CPAN İstemcisinin Kendisini Güncelleme
Güncel olmayan bir CPAN istemcisi, TLS el sıkışma hatalarının ve bozuk bağımlılık grafiklerinin sık görülen bir kaynağıdır. Eski bir sistemde başka bir şey kurmadan önce güncelleyin:
cpan CPANYöntem 2: cpanm (CPAN Minus) — Tercih Edilen Üretim Aracı
cpanm, tam CPAN kabuğundan önemli ölçüde daha hızlı olan, sıfır yapılandırmalı, bağımlılık farkında bir CPAN istemcisidir. Daha temiz çıktı üretir, çoğu bağımlılık zincirini sessizce yönetir ve local::lib ile perlbrew ile temiz bir şekilde entegre olur. Herhangi bir ciddi dağıtım iş akışı için cpanm doğru varsayılan seçimdir.
cpanm Kurulumu
curl -L https://cpanmin.us | perl - --sudo App::cpanminuscurl kullanılamıyorsa:
wget -O - https://cpanmin.us | perl - --sudo App::cpanminusZaten çalışan bir CPAN istemciniz olan sistemlerde:
cpan App::cpanminuscpanm ile Modül Kurma
cpanm LWP::Simple
cpanm DBI
cpanm MooseBelirli Bir Sürümü Kurma
Sürüm sabitleme, yeniden üretilebilir derlemeler için gereklidir. Tam bir sürümü kurmak için:
cpanm GAAS/libwww-perl-6.67.tar.gzYa da @version sözdizimini kullanın:
cpanm LWP::Simple@6.67cpanfile‘dan Kurma
Proje düzeyinde bağımlılık yönetimi için gereksinimlerinizi bir cpanfile‘da tanımlayın:
requires 'LWP::Simple', '>= 6.00';
requires 'DBI', '>= 1.643';
requires 'Moose';Ardından tüm bildirilen bağımlılıkları tek bir komutla kurun:
cpanm --installdeps .Bu, pip install -r requirements.txt veya npm install‘ın Perl eşdeğeridir ve her üretim dağıtım betiğinde yer almalıdır.
Yöntem 3: Kaynak Tarball’dan Manuel Kurulum
Manuel kurulum; hava boşluklu ortamlarda çalışırken, bir modül henüz CPAN’da yokken veya derlemeden önce yama uygulamanız gerektiğinde zorunludur.
Adım 1: Tarball’ı İndirin
Dağıtım arşivini search.cpan.org veya metacpan.org’dan alın ya da sunucunuza manuel olarak aktarın:
wget https://cpan.metacpan.org/authors/id/G/GA/GAAS/libwww-perl-6.67.tar.gzAdım 2: Arşivi Çıkarın
tar -xzf libwww-perl-6.67.tar.gz
cd libwww-perl-6.67Adım 3: Makefile.PL veya Build.PL Kullanarak Derleme
Çoğu CPAN dağıtımı iki derleme sisteminden birini kullanır. Devam etmeden önce hangisinin mevcut olduğunu kontrol edin.
Makefile.PL için (ExtUtils::MakeMaker):
perl Makefile.PL
make
make test
sudo make installBuild.PL için (Module::Build):
perl Build.PL
./Build
./Build test
sudo ./Build installHer adımın yaptığı:
perl Makefile.PL— Perl kurulumunuzu ve sistem kütüphanelerini inceleyerek platforma özgü birMakefileoluşturur.make— Tüm XS (C uzantısı) kodunu derler ve saf Perl dosyalarını hazırlar.make test— Dağıtımın test paketini derlenmiş dosyalara karşı çalıştırır. Üretim sistemlerinde bu adımı asla atlamamalısınız; başarısız bir test paketi, ortamınızda veya modülün kendisinde bir sorun olduğunun kesin bir işaretidir.sudo make install— Derlenmiş dosyaları sistem Perl kütüphane yoluna kopyalar.
Tuzak: make test başarısızlık bildirirse make install‘a geçmeyin. t/ dizinindeki test çıktısını inceleyin. Birçok başarısızlık, gerçek hatalardan değil, eksik isteğe bağlı bağımlılıklardan veya ortama özgü yapılandırmadan kaynaklanır.
Yöntem 4: Kök Olmayan ve Paylaşımlı Ortamlar için local::lib
Paylaşımlı barındırmada, yönetilen sunucularda veya sudo erişiminizin olmadığı herhangi bir ortamda, local::lib tüm modül kurulumlarını ana klasörünüzdeki bir dizine yönlendirir. Bu, doğru mimari yaklaşımdır — bir geçici çözüm değil.
local::lib Kurulumu
Herhangi bir CPAN erişiminiz varsa:
cpanm --local-lib=~/perl5 local::libYa da CPAN kabuğu aracılığıyla:
perl -MCPAN -e 'install("local::lib")'Ortamı Etkinleştirme
Aşağıdakileri ~/.bashrc veya ~/.bash_profile‘nize ekleyin:
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"Kabuğunuzu yeniden yükleyin:
source ~/.bashrcBu, hem perl hem de cpanm‘ın otomatik olarak yerel kütüphane dizininizi kullanması için PERL5LIB, PERL_LOCAL_LIB_ROOT, PERL_MB_OPT, PERL_MM_OPT ve PATH‘yi ayarlar.
local::lib’e Modül Kurma
Etkinleştirmenin ardından, sonraki tüm cpanm çağrıları herhangi bir ek bayrak olmaksızın ~/perl5‘e kurulum yapar:
cpanm LWP::Simple
cpanm MojoliciousÖnemli nüans: cPanel ile VPS‘e dağıtım yapıyorsanız, cPanel kendi Perl ortamını sistem Perl’inden ayrı olarak yönetir. Sistem yoluna kurulan modüller, cPanel’in Perl yorumlayıcısı tarafından görünmeyebilir. Kurmadan önce which perl ve perl -V ile hangi Perl ikili dosyasının kullanıldığını her zaman doğrulayın.
Yöntem 5: Sistem Paket Yöneticisi
Debian/Ubuntu ve RHEL/CentOS sistemlerinde, birçok popüler CPAN modülü yerel işletim sistemi paketleri olarak paketlenmiştir. Bu yaklaşım sistem güncellemeleriyle entegre olur ve derleme araç zinciri gereksinimlerini ortadan kaldırır.
Debian/Ubuntu:
sudo apt-get install libwww-perl libdbi-perl libmoose-perlRHEL/CentOS/Fedora:
sudo dnf install perl-LWP-Simple perl-DBI perl-MooseSistem paketleri ile CPAN arasında ne zaman tercih yapılmalı:
| Kriter | Sistem Paketi | CPAN / cpanm |
|---|---|---|
| — | — | — |
| Sürüm güncelliği | Çoğunlukla eski | Her zaman en güncel |
| Bağımlılık yönetimi | İşletim sistemi tarafından yönetilen | CPAN tarafından yönetilen |
| Derleme araç zinciri gerekli | Hayır | Evet (XS modülleri için) |
| Üretim sunucuları için uygun | Evet, kararlılık için | Evet, sabitlemeyle |
| İnternet olmadan çalışır | Evet (yerel yansıma) | Yansıma kurulumu gerektirir |
| Sistem güncellemeleriyle entegre olur | Evet | Hayır |
| local::lib’i destekler | Hayır | Evet |
Perl Modül Kurulum Yöntemlerinin Karşılaştırması
| Yöntem | Kök Gerekli | Hız | Çevrimdışı Destek | Sürüm Sabitleme | En İyi Kullanım Durumu |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| CPAN kabuğu | Evet (varsayılan) | Yavaş | Hayır | Sınırlı | Eski sistemler, ilk kurulum |
| `cpanm` | İsteğe bağlı | Hızlı | Yerel yansımayla | Evet | Tüm modern iş akışları |
| Manuel tarball | İsteğe bağlı | Manuel | Evet | Evet | Hava boşluklu, yamalı derlemeler |
| `local::lib` | Hayır | Hızlı (cpanm ile) | Hayır | Evet | Paylaşımlı barındırma, kök olmayan |
| Sistem paketleri | Evet | Hızlı | Evet (önbelleğe alınmış) | Hayır | Kararlılık odaklı sunucular |
Modül Kurulumunu Doğrulama
Kurulumun ardından, modülün yüklenebilir olduğunu her zaman onaylayın ve sürümünü kontrol edin:
perl -MLWPSimple -e 'print $LWP::Simple::VERSION, "n"'$VERSION skalerini doğrudan dışa aktarmayan modüller için şunu kullanın:
perl -e 'use LWP::Simple; print "OKn"'Bir modülün diskte nereye kurulduğunu bulmak için:
perl -MLWP::Simple -e 'print $INC{"LWP/Simple.pm"}, "n"'Perl’inizin kullandığı tam @INC arama yolunu incelemek için:
perl -e 'print join("n", @INC), "n"'Yaygın Kurulum Hatalarını Giderme
Eksik C Derleyicisi veya Derleme Araçları
XS modülleri (C uzantılarına sahip olanlar) bir C derleyicisi ve make gerektirir. Debian/Ubuntu’da:
sudo apt-get install build-essentialRHEL/CentOS’ta:
sudo dnf groupinstall "Development Tools"CPAN Yansımalarına Başarısız TLS/SSL Bağlantıları
cpanm veya CPAN kabuğu SSL hatalarıyla başarısız olursa, önce gerekli modülleri kurun:
sudo cpan Mozilla::CA IO::Socket::SSL LWP::Protocol::httpsBu, özellikle HTTPS trafiğini de işleyen Perl uygulamaları dağıtırken geçerlidir — web katmanındaki SSL Sertifikalarınızı güvence altına alan SSL altyapısının aynısı Perl ortamınıza da yansıtılmalıdır.
Bağımlılık Çakışmaları
Bir modül, zaten kurulu olanla çakışan bir bağımlılık sürümü gerektirdiğinde, cpanm‘ın --notest bayrağını dikkatli kullanın ya da ortamı local::lib veya perlbrew ile izole edin:
cpanm --notest Problematic::ModuleTestlerin neden başarısız olduğunu anlamadan üretimde --notest kullanmayın. Bu, derleme boru hattındaki tek otomatik güvenlik denetimini bastırır.
Kurulum Sırasında İzin Reddedildi
make install izin hatalarıyla başarısız olursa ve sudo kullanılamıyorsa, yerel bir kütüphaneye yönlendirin:
cpanm --local-lib=~/perl5 LWP::SimpleKurulumdan Sonra Modül Bulunamadı
perl -MModule::Name -e 1 “Can’t locate” bildirirse, modül @INC‘da olmayan bir yola kurulmuştur. Kontrol edin:
perl -V | grep -A 20 '@INC'Ardından ya doğru yola yeniden kurun ya da PERL5LIB‘yi ayarlayın:
export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB"Sunucu Altyapısında Perl Uygulamaları Dağıtma
Üretim Perl uygulamaları için — özellikle Mojolicious, Catalyst veya Dancer2 gibi çerçeveler kullananlar — modül yönetimi, sonradan düşünülen bir şey değil, altyapı olarak ele alınmalıdır.
Önerilen üretim iş akışı:
- Tüm bağımlılıkları minimum sürüm kısıtlamalarıyla bildirmek için bir
cpanfilekullanın. - Dağıtım betiğinizde
cpanm --installdeps .kullanın. - Beklenmedik yükseltmeleri önlemek için kritik modül sürümlerini sabitleyin.
- Dağıtmadan önce CI boru hattınızda
make testveyacpanm --test-onlyçalıştırın. - Uygulama ortamlarını sistem Perl’inden izole etmek için
local::libveyaperlbrewkullanın.
Web isteklerini işleyen, e-posta işleyen veya veritabanlarıyla etkileşime giren Perl uygulamaları, VPS Barındırma ve Dedicated Sunucular üzerindeki yaygın iş yükleridir. Özel altyapıda, Perl sürümü, derleme araç zinciri ve modül yolları üzerinde tam kontrole sahipsiniz — bu da paylaşımlı ortamlarda local::lib‘yi zorunlu kılan kısıtlamaları ortadan kaldırır.
Perl uygulamanız işlemsel e-posta gönderiyorsa, Email::Sender veya MIME::Lite modülleri doğrudan SMTP altyapısıyla entegre olur. Bunu güvenilir bir E-posta Barındırma hizmetiyle eşleştirmek, yanlış yapılandırılmış aktarım ayarları nedeniyle uygulama postanızın spam olarak işaretlenmemesini sağlar.
Teknik Karar Kontrol Listesi
Durumunuz için doğru kurulum yaklaşımını seçmek üzere bu matrisi kullanın:
- Kök erişiminiz var ve en son modül sürümüne ihtiyacınız var — Sistem genelinde kurulumla
cpanmkullanın. - Paylaşımlı barındırmadasınız veya sudo’nuz yok —
local::libilecpanmkullanın. - Hava boşluklu veya çevrimdışı bir ortamdasınız — Tarball’ları manuel olarak indirin ve kaynaktan derleyin.
- Birden fazla sunucuda yeniden üretilebilir derlemelere ihtiyacınız var — Dağıtım boru hattınızda bir
cpanfilevecpanm --installdeps .kullanın. - İşletim sistemi düzeyinde kararlılık ve otomatik güvenlik güncellemelerine ihtiyacınız var — İyi paketlenmiş modüller için sistem paketlerini (
apt,dnf) kullanın. - Bir makinede birden fazla Perl sürümü çalıştırıyorsunuz — Perl kurulumlarını yönetmek için
perlbrewkullanın, ardından her birindecpanmkullanın. - Bir modül test paketinde başarısız oluyor — Kurmadan önce araştırın. MetaCPAN’daki modülün sorun izleyicisini kontrol edin.
- Bir Perl uygulamasının bağımlılıklarını sistemden izole etmeniz gerekiyor — Tam izolasyon için
perlbrew+local::libkombinasyonunu kullanın.
SSS
Bir Perl modülü yüklerken use ile require arasındaki fark nedir?
use Module derleme zamanında işlenir ve modül bulunamazsa betiği hemen sonlandırır. require Module çalışma zamanında değerlendirilir ve koşullu yüklemeye izin verir. Çoğu modül için use doğru seçimdir çünkü eksik bağımlılıkları yürütme başlamadan önce yakalar.
Neden cpanm yeni bir sunucuda “SSL verification failed” hatasıyla başarısız oluyor?
cpanm istemcisi, CPAN yansımalarına HTTPS bağlantıları için LWP::Protocol::https kullanır. Minimal bir işletim sistemi kurulumunda, gerekli SSL kütüphaneleri (IO::Socket::SSL, Mozilla::CA) bulunmayabilir. Önce sistem paket yöneticiniz aracılığıyla bunları kurun: sudo apt-get install libssl-dev, ardından cpan IO::Socket::SSL.
İnternet erişimi olmadan Perl modülleri kurabilir miyim?
Evet. Bağlantılı bir makinede MetaCPAN’dan .tar.gz dağıtımını indirin, hedef sunucuya aktarın ve perl Makefile.PL && make && make test && sudo make install kullanarak manuel olarak derleyin. Ekip genelinde çevrimdışı erişim için CPAN::Mini kullanarak yerel bir CPAN yansıması da kurabilirsiniz.
Şu anda hangi modül sürümünün kurulu olduğunu nasıl kontrol edebilirim?
perl -MModule::Name -e 'print Module::Name->VERSION, "n"' çalıştırın. Örneğin: perl -MLWP::Simple -e 'print $LWP::Simple::VERSION, "n"'. Alternatif olarak, hem kurulu sürümü hem de CPAN’da mevcut olan en son sürümü görmek için cpanm --info Module::Name kullanın.
Bir modül başarıyla kurulursa ancak betiğim hâlâ bulamazsa ne yapmalıyım?
Modül, Perl’inizin @INC‘ında olmayan bir dizine kurulmuştur. Tam dahil etme yolunu görmek için perl -V çalıştırın, ardından bunu perl -MModule::Name -e 'print $INC{"Module/Name.pm"}' çıktısıyla karşılaştırın. Ya doğru ön eke yeniden kurun ya da betiğinizi çalıştırmadan önce Perl’i doğru dizine yönlendirmek için PERL5LIB‘yi dışa aktarın.
