CPAN 安装到临时目录?

CPAN install into temp directory?

我正在尝试将 CPAN 中的很多模块安装到临时目录中。

这纯粹是为了将其中的一些放入一个目录中,然后我可以从中创建一个自定义 RPM。 rpm 稍后将作为自定义 perl 安装之上的 bootstrap 类型的东西用于新安装。他们不会 运行 从这个临时位置。

在 CPAN 中我已经尝试过

o conf mbuildpl_arg "--install_base /tmp/perl"
o conf makepl_arg "PREFIX=/tmp/perl"

但这似乎是将它们安装到 /root/.cpan/build/somename/tmp/perl(其中 'somename' 每次都不同)或通常的位置。我希望将它们全部捕获到一个临时的 buildroot 类型文件夹中,以便稍后我可以将它们转入正确的文件夹中。

有什么方法可以做到这一点,还是我做的事情不是一个好主意?

我已经研究过 fpm 和 cpan2rpm,但找不到将大量 Perl 模块整合到一个 RPM 中的方法,很高兴能就如何从大量模块转变成一个自定义 RPM 提出更好的想法。

不,这会将它们安装在 /tmp/perl 中(除非您使用环境变量覆盖 cpan 中的参数)。它们未安装在 ~/.cpan/build 中。这是模块在安装(通过 make installBuild install)之前构建(通过 makeBuild)的地方。您可以随时擦除该目录。


顺便说一下,您是在告诉 ExtUtils::MakeMaker 和 Module::Build 使用两种不同的约定。太糟糕了。

o conf mbuildpl_arg "--install_base /tmp/perl"
o conf makepl_arg "PREFIX=/tmp/perl"

应该是

o conf mbuildpl_arg "--install_base /tmp/perl"
o conf makepl_arg "INSTALL_BASE=/tmp/perl"

o conf mbuildpl_arg "--prefix /tmp/perl"
o conf makepl_arg "PREFIX=/tmp/perl"

就个人而言,当我在使用 Perl 的本地构建之前使用本地模块时,我使用了

o conf mbuildpl_arg "--prefix /tmp/perl --lib /tmp/perl/lib/perl5"
o conf makepl_arg "PREFIX=/tmp/perl LIB=/tmp/perl/lib/perl5"

我不喜欢 INSTALL_BASE,因为它很难顺利升级您的 perl