当我从源代码安装 perl 时,第一个惊喜是不做任何事情,从现在开始安装的所有模块都可用于新的 perl。由于我没有在我的操作系统附带的 cpan 上找到一个模块,因此我必须将 onboard-perl 用于某些脚本。对于其中一个脚本,我想安装 Text::Format 或 Text::Autoformat(在 cpan 上找不到该模块的文档)。我的问题:我如何告诉 cpan 为 OS-distro-perl 安装一次该模块?
4 回答
没有一种特殊的方法可以告诉 cpan 将模块安装在一个新位置,仅用于一次调用。但是,该功能与 local::lib 支持一起在我的待办事项列表中。我真正理解您的痛苦并想要相同的功能。我只需要时间(或补丁)让它工作。
在那之前,您必须进入 CPAN.pm shell 并更改 和 的值mbuild_arg
,makefilepl_arg
如perlfaq8 中所述:如何保留我自己的模块目录?:
当你构建模块时,告诉 Perl 在哪里安装模块。
对于基于 Makefile.PL 的发行版,在生成 Makefile 时使用 INSTALL_BASE 选项:
perl Makefile.PL INSTALL_BASE=/mydir/perl
您可以在您的 CPAN.pm 配置中进行设置,以便在您使用 CPAN.pm shell 时模块自动安装在您的私有库目录中:
% 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 mbuild_arg "--install_base /mydir/perl"
cpan> o conf commit
/path/to/system/perl -MCPAN -e shell
每个 Perl 安装都有自己的关于库应该“生活”在哪里的想法,CPAN 模块使用它作为在哪里执行安装的指南。您可以通过执行来查看这些值是什么perl -V
,并查找@INC
(在底部)的值。如果您使用不同的 Perl(例如您的系统安装的 Perl)调用 CPAN,您将自动将模块安装到该 Perl 的首选位置:
/usr/bin/perl -MCPAN -e shell
或者简单地安装一个模块而无需显式调用 CPAN shell:
/usr/bin/cpan <modulename>
还有可用的 CPAN 配置选项,您可以在其中临时或永久更改安装位置,但在您的情况下这不是必需的。
我假设您只想将模块安装到不同的位置,然后从该位置运行它们——您的问题对我来说不太清楚。
完整阅读 perldoc local::lib
。如果我试图写得更好,那将是我的一个重大失败。这也是完成这项任务的最新和先进的方法。如果另一个解决方案没有引用这个模块,那么我个人的建议是像瘟疫一样避免它。