2009-02-12 108 views
56

我正在使用託管的Linux機器,因此我無權將 寫入/usr/lib目錄。如何將CPAN模塊安裝到本地目錄中?

當我嘗試做通常安裝CPAN模塊:

perl Makefile.PL 
make test 
make install 

該模塊被提取到一個文件夾blib/lib/。我一直保留use blib/lib/ModuleName但它仍然編譯器說模塊不能被 找到。我曾嘗試將.pm文件複製到本地目錄並保留 require ModuleName但仍然給我一些錯誤。

如何將模塊安裝到其他目​​錄並使用它?

+1

在一般情況下,你應該提供的錯誤信息。 「有些錯誤」沒有多大幫助。 – jrockway 2009-02-12 10:24:20

+5

[我如何在沒有安裝權限的情況下使用新的Perl模塊?](http://stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module-without-install -permissions) – daxim 2011-02-03 12:48:28

+0

重要..一些模塊使用Build.PL而不是Makefile.PL(或者用一個或另一個包裝它),在某些情況下(比如測試運行時),從/到一個空間它會混淆MANIFEST並導致測試失敗,通常這隻會在RELEASE_TESTING設置時發生,因此請確保它不在您的機器上。如果有這樣的MANIFEST錯誤,那麼可能有其他的潛伏,堅持沒有空白(空間,標籤,unispace等)的路徑 – osirisgothra 2014-10-27 11:34:46

回答

32

我也有類似的問題,在這裏我甚至不能安裝本地:: lib中

我創建了一個安裝在模塊某處相對於.pl文件

安裝的安裝程序是這樣:

perl Makefile.PL PREFIX=./modulos 
make 
make install 

然後,在特等文件需要的模塊,這是在./

use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path 
use module::name; 

其餘文件(makefile.pl,module.pm等)不需要更改。

你已經可以調用只

perl file.pl 
19

local::lib會幫助你。它會說服「make install」(和「Build install」)安裝到你可以寫入的目錄,它會告訴perl如何獲取這些模塊。

一般來說,如果你想使用blib /目錄下的模塊,你想要說perl -Mblib ...其中...是你通常如何調用你的腳本。

+0

我真的**建議您使用local :: lib。它照顧所有的小細節。 – melo 2009-02-12 16:40:17

+0

不幸的是,當我嘗試安裝它時,它未能通過「make test」。 – reinierpost 2013-03-19 15:53:45

59

其他答案特等文件#2:

從perlfaq8:


How do I keep my own module/library directory?

當您構建模塊,就告訴Perl在哪裏安裝的模塊。

對於基於Makefile.PL的發行,產生Makefile文件時,請使用INSTALL_BASE選項:

perl Makefile.PL INSTALL_BASE=/mydir/perl 

你可以在你的CPAN.pm的配置設置此所以模塊會自動在你的私人圖書館目錄時,使用安裝CPAN。下午殼:

% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

對於基於Build.PL的發行,使用--install_base選項:

perl Build.PL --install_base /mydir/perl 

您可以配置CPAN.pm自動使用這個選項太:

% cpan 
cpan> o conf mbuildpl_arg '--install_base /mydir/perl' 
cpan> o conf commit 
3

我強烈建議Perlbrew。它可以讓你運行多個版本的Perl,安裝軟件包,如果你想要破解Perl內部的所有常規用戶權限。

2

對於基於Makefile.PL的發行,產生Makefile文件時,請使用INSTALL_BASE選項:

perl Makefile.PL INSTALL_BASE=/mydir/perl