2010-09-17 18 views
32

Kök imtiyazlarım olmadığı bir Linux makinesindeyim. CPAN aracılığıyla bazı dizinleri kendi dizinime yüklemek istiyorum, böylece Perl'i çalıştırdığımda onu görebileceğim.Perl modüllerini root yetkisi olmadan nasıl yükleyebilirim?

Bazı doygunluk seçeneklerini isteyen cpan'u çalıştırdım. "Kök olmayan kullanıcılar için" ~/perl önerdiği bazı dizini sordu. Yine de, bir paket yüklemeye çalıştığımda, /usr/lib/perl5/whatever için yazma erişimim olmadığı için make install adımında başarısız oluyor.

Paketleri ev dizinime kurabilmek için CPAN'ı nasıl yapılandırabilirim?

+1

Mümkün yinelenen [Nasıl bir kök kullanıcı olarak CPAN kullanabilirim?] (Http://stackoverflow.com/questions/2980297/how-can-i-use-cpan-as-a-non-root -kullanıcı) – Ether

+0

@Ether. Katılıyorum. "Perlbrew kullanarak evimin altında Perl versiyonunu nasıl kurabilirim?" Sorusuyla ilgili olarak da perlbrew'u tavsiye ederim. http://stackoverflow.com/questions/3733482/how-do-i-install-cpan-modules-while-using-perlbrew –

+0

Olası çoğaltılabilir [Yeni bir Perl modülünü yükleme izinleri olmadan nasıl kullanabilirim?] (http: //stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module-without-install-permissions) –

cevap

24

Bkz. local::lib. Eğer yükledikten sonra

, yapabileceğiniz:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

+0

Çalışmıyor: 'mkdir /root/.cpan:/usr/'de izin reddedildi lib/perl5/5.8.5/CPAN.pm satır 2342'. Local :: lib düzgün bir şekilde kurulup kurulmadığını test etmenin herhangi bir yolu var mı? –

+0

[Yerel :: lib desteği '2011'de CPAN.pm'ye eklendi] (https://metacpan.org/changes/distribution/CPAN#L389). “Perl” 5.8.5 [2004'te piyasaya sürüldü] (https://perldoc.perl.org/perlhist.html). Orada sorun yatıyor. –

25

local::lib sizin için ne yaptığını ise perlfaq8 belgelenen yolu var.

Ayrıca sıkça sorulan StackOverflow soru:

I (iyi bir başlık cevap bulmada çok önemli nedenlerinden biridir) orijinal soru başlığını kullanırken Curiosuly, bunların hiçbiri önerilmektedir.


Kendi modülümü/kitaplık dizinimi nasıl saklarım?

Modüller oluşturduğunuzda, Perl'e modüllerin nereye takılacağını söyleyin.

Modülleri kendi kullanımınıza göre yüklemek istiyorsanız, en kolay yol yerel :: lib, CPAN'dan indirebilirsiniz. Sizin için çeşitli kurulum ayarlarını yapar ve programlarınızda aynı ayarları kullanır.

Daha fazla esneklik istiyorsanız, özel durumunuz için CPAN istemcinizi yapılandırmanız gerekir. Makefiles oluşturulurken

Makefile.PL tabanlı dağılımlar için

, INSTALL_BASE seçeneğini kullanın:

perl Makefile.PL INSTALL_BASE=/mydir/perl 
kullandığınızda modüller otomatik özel kütüphane dizinde yüklemek sahibi olması için CPAN.pm yapılandırmasına bu ayarlayabilirsiniz

CPAN.pm kabuk:

Build.PL tabanlı dağılımlar için
% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

, --install_base seçeneğini kullanın:

% cpan 
cpan> o conf mbuild_arg "--install_base /mydir/perl" 
cpan> o conf commit 
:

perl Build.PL --install_base /mydir/perl 

Ayrıca otomatik olarak bu seçeneği kullanmak CPAN.pm yapılandırabilirsiniz

INSTALL_BASE, bu araçlara modüllerinizi/mydir/perl/lib/perl5 dizinine koymalarını söyler. Çalışma zamanında içerme yoluma (@INC) bir dizini nasıl ekleyebilirim? Yeni kurulmuş modüllerin nasıl çalıştırılacağı hakkında ayrıntılar için.

INSTALL_BASE ile bir uyarı daha vardır, çünkü ExtUtils :: MakeMaker'ın eski sürümlerinin desteklediği PREFIX ve LIB ayarlarından farklı olarak hareket eder. INSTALL_BASE, aynı dizinde birden çok Perl sürümü veya farklı mimariler için modül yükleme desteklemez. Bunu gerçekten istiyorsan düşünmelisin, eğer yaparsan eski PREFIX ve LIB ayarlarını kullan. Daha fazla bilgi için ExtUtils :: Makemaker belgelerine bakın.
İlgili konular