如何使用CPANPUS自动绑定更新新版本的Perl?
我有Perl5.13.4,其中包含大量已安装的CPAN模块 我刚刚编译了Perl 5.14.0。我想将5.13.4中的所有模块安装(重新编译)到5.14.0中 我可以/已经生成带有“cpanp”和“b”选项的已安装模块包;我现在有一个文件如何使用CPANPUS自动绑定更新新版本的Perl?,perl,cpan,Perl,Cpan,我有Perl5.13.4,其中包含大量已安装的CPAN模块 我刚刚编译了Perl 5.14.0。我想将5.13.4中的所有模块安装(重新编译)到5.14.0中 我可以/已经生成带有“cpanp”和“b”选项的已安装模块包;我现在有一个文件~/.cpanplus/5.13.4/dist/autobundle/Snapshot\u 2011\u 05\u 18\u 00.pm 在5.14.0版本的“cpanp”中,要使用什么命令才能通过快照包并确保5.14.0安装了所有这些模块 或者,如果cpan
~/.cpanplus/5.13.4/dist/autobundle/Snapshot\u 2011\u 05\u 18\u 00.pm
- 在5.14.0版本的“cpanp”中,要使用什么命令才能通过快照包并确保5.14.0安装了所有这些模块
- 或者,如果cpanp和捆绑包的组合不是合适的方式,那么对于新版本的Perl,复制(重新编译)旧版本Perl中安装的模块的最简单方式是什么?(如果CPAN可以处理bundle文件,我将使用它——这是我关心的结果,而不是用于实现它的机制。)
(我确实在这里快速查看了“perl cpanplus捆绑包”的问题列表,但没有找到我想要的信息。我还多次查看了“perldoc cpanp”,但没有找到我想要的信息。这与说“信息不在那里”不同;这可能仅仅意味着我没有发现它。)bundle文件是一种CPAN特殊情况的东西,令我惊讶的是,它在CPANPLUS中并不适用。这就是为什么没有人谈论CPANPLUS捆绑包,而你却找不到任何东西。因此,请使用CPAN。首先找出您的CPAN根目录在哪里,默认情况下,它是免费桌面XDG兼容系统上的
~/.CPAN
或~/.local/share/.CPAN
。相应地修改说明
mkdir -p ~/.cpan/Bundle
mv ~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm ~/.cpan/Bundle
cpan Bundle::Snapshot_2011_05_18_00 # DTRT
正如您所说的,您可以通过CPAN shell或命令行的API调用来发布它,但只有在不同版本的Perl中有固定位置的模块时,它才有用。CPANPLUS autobundles目前运行良好。只需确保引用捆绑包时,在捆绑包的完整路径前加上“
file://
”前缀
当然,您必须使用一些模块来完成一些操作,但在大多数情况下,这应该是完全可行的。一些额外的信息可能会让其他人感到毛骨悚然
$HOME/snapshot\u 2013\u 12\u 23\u 00.pm
,则可以运行:
cpanp -i file://$HOME/Snapshot_2013_12_23_00.pm
安装将开始$HOME/cpan/authors/id/UNKNOWN-ORIGIN/Snapshot_2013_12_23_00.pm
(确切位置将取决于您配置CPANPLUS存储库的位置;我的存储库将进入$HOME/cpan
)
如果您需要破解快照文件(因为某些模块无法编译),您可以在命令行上编辑并指定文件名,直到您脸色发青,完全无毛,而且不会有丝毫区别,因为尽管您告诉它查看$HOME
,CPANPLUS正在查看它复制到未知源目录的文件。删除文件当然有效;你也可以编辑它这很有效,谢谢。如果可以的话,我会给你额外的投票。我提到/指定了“重新编译”是为了表示我希望从源代码重新编译模块-一个提供从新Perl访问旧的、已经编译过的版本的解决方案将无法满足我的要求。谢谢:我(终于)开始安装5.14.2,在5.14.1中创建快照之后,我能够运行5.14.2
cpanp
并运行Ifile:///Users/jleffler/.cpanplus/5.14.1/dist/autobundle/Snapshot_2012_05_04_00.pm
,从读取文件和开始编译的意义上来说,它确实有效。我最终手动安装了CPANPLUS
和Module::Signature
,因为缺少它们导致了一些问题,但是文件://
前缀是我以前从未见过的关键信息。再次感谢。