15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
21.10.2024

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 shell

Kabuk içinde herhangi bir modülü adıyla kurun:

cpan[1]> install LWP::Simple
cpan[2]> install DBI

Tek 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 CPAN

Yö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::cpanminus

curl kullanılamıyorsa:

wget -O - https://cpanmin.us | perl - --sudo App::cpanminus

Zaten çalışan bir CPAN istemciniz olan sistemlerde:

cpan App::cpanminus

cpanm ile Modül Kurma

cpanm LWP::Simple
cpanm DBI
cpanm Moose

Belirli 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.gz

Ya da @version sözdizimini kullanın:

cpanm LWP::Simple@6.67

cpanfile‘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.gz

Adım 2: Arşivi Çıkarın

tar -xzf libwww-perl-6.67.tar.gz
cd libwww-perl-6.67

Adı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 install

Build.PL için (Module::Build):

perl Build.PL
./Build
./Build test
sudo ./Build install

Her adımın yaptığı:

  • perl Makefile.PL — Perl kurulumunuzu ve sistem kütüphanelerini inceleyerek platforma özgü bir Makefile oluş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::lib

Ya 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 ~/.bashrc

Bu, 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-perl

RHEL/CentOS/Fedora:

sudo dnf install perl-LWP-Simple perl-DBI perl-Moose

Sistem paketleri ile CPAN arasında ne zaman tercih yapılmalı:

KriterSistem PaketiCPAN / cpanm
Sürüm güncelliğiÇoğunlukla eskiHer zaman en güncel
Bağımlılık yönetimiİşletim sistemi tarafından yönetilenCPAN tarafından yönetilen
Derleme araç zinciri gerekliHayırEvet (XS modülleri için)
Üretim sunucuları için uygunEvet, kararlılık içinEvet, sabitlemeyle
İnternet olmadan çalışırEvet (yerel yansıma)Yansıma kurulumu gerektirir
Sistem güncellemeleriyle entegre olurEvetHayır
local::lib’i desteklerHayırEvet

Perl Modül Kurulum Yöntemlerinin Karşılaştırması

YöntemKök GerekliHızÇevrimdışı DestekSürüm SabitlemeEn İyi Kullanım Durumu
CPAN kabuğuEvet (varsayılan)YavaşHayırSınırlıEski sistemler, ilk kurulum
`cpanm`İsteğe bağlıHızlıYerel yansımaylaEvetTüm modern iş akışları
Manuel tarballİsteğe bağlıManuelEvetEvetHava boşluklu, yamalı derlemeler
`local::lib`HayırHızlı (cpanm ile)HayırEvetPaylaşımlı barındırma, kök olmayan
Sistem paketleriEvetHızlıEvet (önbelleğe alınmış)HayırKararlı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-essential

RHEL/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::https

Bu, ö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::Module

Testlerin 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::Simple

Kurulumdan 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ışı:

  1. Tüm bağımlılıkları minimum sürüm kısıtlamalarıyla bildirmek için bir cpanfile kullanın.
  2. Dağıtım betiğinizde cpanm --installdeps . kullanın.
  3. Beklenmedik yükseltmeleri önlemek için kritik modül sürümlerini sabitleyin.
  4. Dağıtmadan önce CI boru hattınızda make test veya cpanm --test-only çalıştırın.
  5. Uygulama ortamlarını sistem Perl’inden izole etmek için local::lib veya perlbrew kullanı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 cpanm kullanın.
  • Paylaşımlı barındırmadasınız veya sudo’nuz yoklocal::lib ile cpanm kullanı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 cpanfile ve cpanm --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 perlbrew kullanın, ardından her birinde cpanm kullanı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::lib kombinasyonunu 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.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın