cpan
和cpanm
命令有什么区别?
他们似乎都安装了perl
模块,那么有什么区别?
cpan
CPAN 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
而除非/直到您安装它,否则您将不会拥有它。
大多数现代 Perl 用户更喜欢cpanm
它的简单性,主要是输出简洁。
使用cpan
会导致数百行输出,因为它会向您显示它正在执行的所有操作:下载、校验和、运行安装程序、解析、加载,等等。这同样适用于每个依赖项。
cpanm
另一方面,它以更简洁和通用的方式告诉您它在做什么,即:获取、配置、构建和测试,完成。
因此,使用上的主要区别在于cpanm
抑制了很多(通常)不相关的信息。有时,当模块失败时,您可能需要更多信息。有-v|--verbose
一面旗帜基本上可以向您展示一切cpan
。
此外,当您尝试安装某些需要用户输入的模块时,它们似乎会“挂起”。那是因为要求您输入内容的输出被抑制了。您可以使用--interactive
(or --verbose
) 标志来解决这个问题。
有关输出的比较,请参见此处的幻灯片 35-39或此处的 幻灯片 37-41 。(这些来自同一个演示文稿。我只是复制链接以防万一离线。)