26

cpancpanm命令有什么区别?

他们似乎都安装了perl模块,那么有什么区别?

4

2 回答 2

28

cpanCPAN shell 自 1997 年左右就与 Perl 一起提供。当您第一次运行它时,它会询问一堆问题并将答案保存在配置文件中。然后你可以通过运行来安装一个模块:

cpan -i Module::Name

shell 提供了用于搜索 CPAN 和查看分发文件内部的其他命令。

Jos Boumans 发起了一个名为 CPANPLUS(cpanp来自命令行)的更新、更好和更有功能的 CPAN shell 的项目,但它从未完全完成到实现最初愿景的地步。

与此同时, MIYAGAWA认为这cpanp是试图做的太多,而世界真正需要的是一个更简单的外壳,它做的更少,问的问题也更少(理想情况下根本没有)。他创建了App::cpanminus,它提供了cpanm命令并完全按照他的意图执行。您可以使用它通过以下命令安装模块(以及所有模块的依赖项):

cpanm Module::Name

两者的主要区别在于,如果你有 Perl,你应该已经有这个cpan命令。cpanm而除非/直到您安装它,否则您将不会拥有它。

于 2016-07-08T01:41:07.623 回答
18

大多数现代 Perl 用户更喜欢cpanm它的简单性,主要是输出简洁。

使用cpan会导致数百行输出,因为它会向您显示它正在执行的所有操作:下载、校验和、运行安装程序、解析、加载,等等。这同样适用于每个依赖项。

cpanm另一方面,它以更简洁和通用的方式告诉您它在做什么,即:获取、配置、构建和测试,完成。

因此,使用上的主要区别在于cpanm抑制了很多(通常)不相关的信息。有时,当模块失败时,您可能需要更多信息。有-v|--verbose一面旗帜基本上可以向您展示一切cpan

此外,当您尝试安装某些需要用户输入的模块时,它们似乎会“挂起”。那是因为要求您输入内容的输出被抑制了。您可以使用--interactive(or --verbose) 标志来解决这个问题。

有关输出的比较,请参见此处的幻灯片 35-39此处的 幻灯片 37-41 。(这些来自同一个演示文稿。我只是复制链接以防万一离线。)

于 2016-07-08T03:19:50.390 回答