使用非root并且没有CPAN安装Perl模块和依赖项

时间:2012-12-19 16:10:18

标签: perl module

我一直在为我的工作编写Perl脚本,而且我给予工作的机器使安装Perl模块变得困难:

  • 出于安全原因,我的机器上不能有gcc,因此对于大多数模块,我无法使用CPAN安装模块。
  • 我无法访问root帐户。

通常,当我想安装模块时,我提出了一个请求,我必须等待一两天才能安装。我知道没有人会因为我自己安装它们而遇到问题,所以为了节省每个人的时间和理智,我想自己安装它们。这只是如何做到这一点的问题。我和各种各样的人谈过,他们说使用RPM来安装它们(为了避免使用gcc)。但是,当尝试从RPM安装模块时,它不处理依赖项,因此我手动需要处理依赖项,这可能需要一段时间。

如何才能最好地安装具有这些限制的Perl模块?

2 个答案:

答案 0 :(得分:3)

在具有类似内置Perl的类似计算机上,使用

安装模块
mkdir ~/foo
cpan
o conf makepl_arg 'PREFIX=~/foo LIB=~/foo/lib/perl5'
o conf mbuildpl_arg '--prefix ~/foo --lib ~/foo/lib/perl5'
install Some::Module

只要你没有o conf commit,配置更改将是暂时的,所以不要这样做。

复制~/foo,并设置env var PERL5LIB以包含LIB目录。您可以将较新的~/foo合并到较旧的{{1}}中以添加新模块。

这不会安装模块所依赖的任何非Perl库。

答案 1 :(得分:0)

另请参阅Perl常见问题解答第8节中的How do I keep my own module/library directory?

  

构建模块时,请告诉Perl在哪里安装模块。

     

对于基于Makefile.PL的发布,在生成INSTALL_BASE s时使用Makefile选项:

perl Makefile.PL INSTALL_BASE=/mydir/perl
     

对于基于Build.PL的分发,请使用--install_base选项:

perl Build.PL --install_base /mydir/perl
     

INSTALL_BASE告诉这些工具将您的模块放入/mydir/perl/lib/perl5。有关如何运行新安装的模块的详细信息,请参阅How do I add a directory to my include path (@INC) at runtime?

     

INSTALL_BASE有一点需要注意,因为它的行为与旧版PREFIX提倡的LIBExtUtils::MakeMaker设置不同。 INSTALL_BASE不支持在同一目录下为多个Perl版本或不同体系结构安装模块。您应该考虑是否真的需要它,如果使用,请使用较旧的PREFIXLIB设置。有关更多详细信息,请参阅ExtUtils :: Makemaker文档。