3

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

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

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

我怎样才能最好地安装具有这些限制的 Perl 模块?

4

2 回答 2

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 varPERL5LIB以包含 LIB 目录。您可以将新模块合并~/foo到旧模块中以添加新模块。

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

于 2012-12-19T17:46:15.583 回答
0

另请参阅如何保留自己的模块/库目录?在 Perl FAQ 的第 8 节中。

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

对于Makefile.PL基于 - 的分布,在生成sINSTALL_BASE时使用该选项: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. 请参阅如何@INC在运行时将目录添加到我的包含路径 ( )?有关如何运行新安装的模块的详细信息。

但是,有一个警告INSTALL_BASE,因为它与旧版本所提倡的PREFIXLIB设置不同。不支持在同一目录下安装多个版本的 Perl 或不同架构的模块。您应该考虑是否真的需要,如果需要,请使用旧的和设置。有关详细信息,请参阅 ExtUtils::Makemaker 文档。ExtUtils::MakeMakerINSTALL_BASEPREFIXLIB

于 2012-12-19T18:33:09.073 回答