cpan
和cpanm
命令有什么区别?
他们似乎都安装了perl
模块,那有什么区别?
答案 0 :(得分:18)
cpan
CPAN shell自1997年左右开始随Perl一起提供。当你第一次运行它时,它会询问一堆问题并将答案保存在配置文件中。然后,您可以通过运行:
cpan -i Module::Name
shell提供了其他命令,用于搜索CPAN并查看分发文件。
从Jos Boumans开始创建一个名为CPANPLUS(来自命令行的cpanp
)的更新,更好,功能更强的CPAN shell的项目,但它从未完全到达原始愿景已经实现。
同时MIYAGAWA决定cpanp
试图做太多,世界真正需要的是一个更简单的shell,它做了 less 并且问了更少的问题(理想情况下没有问题)所有)。他创建了App::cpanminus,它提供cpanm
命令并完全按照他的意图行事。您可以使用它来安装模块(以及所有模块的依赖项),其命令如下:
cpanm Module::Name
两者之间的主要区别在于,如果你有Perl,你应该已经拥有cpan
命令。除非/直到你安装它,否则你不会cpanm
。
答案 1 :(得分:9)
大多数现代Perl用户更喜欢cpanm
,因为它简单,主要是输出的简洁。
使用cpan
可以产生数百行输出,因为它显示了它正在做的一切:下载,校验和,运行安装程序,解析,加载,列表继续。这同样适用于每个依赖项。
cpanm
以更简洁和一般的方式告诉您它正在做什么,即:获取,配置,构建和测试,完成。
因此,使用的主要区别在于cpanm
抑制了许多(通常)不相关的信息。有时,当模块出现故障时,您可能需要更多信息。有一个-v|--verbose
标记,基本上可以显示cpan
所有的内容。
此外,当您尝试安装时,某些需要用户输入的模块似乎“挂起”。那是因为要求你输入内容的输出被抑制了。您可以使用--interactive
(或--verbose
)标记解决此问题。
有关输出的比较,请参阅幻灯片35-39 here 或幻灯片37-41 here。 (这些来自同一个演示文稿。我只是在一个人离线时重复链接。)