Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用CPANPUS自动绑定更新新版本的Perl?_Perl_Cpan - Fatal编程技术网

如何使用CPANPUS自动绑定更新新版本的Perl?

如何使用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

我有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安装了所有这些模块

  • 或者,如果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
    
    安装将开始

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

    $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
    ,因为缺少它们导致了一些问题,但是
    文件://
    前缀是我以前从未见过的关键信息。再次感谢。