2009-02-12 121 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