如何使用CPANPLUS autobundle更新新版本的Perl?

时间:2011-05-23 17:06:57

标签: perl cpan

我的Perl 5.13.4包含大量已安装的CPAN模块。

我刚刚编译了Perl 5.14.0。我想将5.13.4中的所有模块安装(重新编译)到5.14.0。

我可以使用'cpanp'和'b'选项生成一组已安装的模块;我现在有一个文件~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm

  • 在5.14.0版本的“cpanp”中使用的命令是什么,它将通过该快照包并确保5.14.0安装了所有这些模块?

  • 或者,如果cpanp和bundle的组合不合适,那么为Perl的新版本复制(重新编译)旧版本Perl中安装的模块的最简单方法是什么? ? (如果CPAN可以处理捆绑文件,我将使用它 - 这是我关心的结果,而不是用于实现它的机制。)

我确实快速查看了'perl cpanplus bundle'的问题列表,但没有找到我所追求的信息。我也曾多次查看'perldoc cpanp'并且未能找到我所追求的信息。这与说“信息不在那里”并不相同;这可能仅仅意味着我没有发现它。

3 个答案:

答案 0 :(得分:8)

捆绑文件是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

当你在谈论recompile, CPAN has that command时,你可以从CPAN shell发出它或者从命令行发出API调用,但只有在Perl版本的固定位置有模块时它才有用。

答案 1 :(得分:2)

CPANPLUS autobundles目前工作正常。请务必引用捆绑包,并在捆绑包的完整路径前加上“file://”。

肯定会有一些diddlin'与某些模块有关,但在大多数情况下它应该是完全可行的。

答案 2 :(得分:0)

一些额外的信息可能会让其他人有些流泪。

  1. 如果您有快照文件$HOME/Snapshot_2013_12_23_00.pm,则可以运行:

    cpanp -i file://$HOME/Snapshot_2013_12_23_00.pm
    

    ,安装将开始。

  2. 执行此操作时,Perl将创建一个文件,例如:

    $HOME/cpan/authors/id/UNKNOWN-ORIGIN/Snapshot_2013_12_23_00.pm
    

    (具体位置取决于您配置CPANPLUS存储库的位置;我的进入$HOME/cpan。)

    如果您需要破解快照文件(因为某些模块无法编译),您可以在命令行上编辑和指定文件名,直到您脸部呈蓝色并完全无毛,并且它不会使最轻微的差异,因为尽管你告诉它查看$HOME,CPANPLUS正在查看它复制到UNKNOWN_ORIGIN目录中的文件。删除文件肯定有效;你也可以编辑它。