【发布时间】:2016-11-10 11:34:13
【问题描述】:
cpan 和 cpanm 命令有什么区别?
他们似乎都安装了perl模块,那么有什么区别呢?
【问题讨论】:
cpan 和 cpanm 命令有什么区别?
他们似乎都安装了perl模块,那么有什么区别呢?
【问题讨论】:
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 除非/直到你安装它。
【讨论】:
cpanm 更新更好吗?
cpan -i App::cpanminus 安装cpanm,然后使用cpanm。我认为它更好,因为它更简单(当然不仅仅是因为它更新)。
cpanm 只是为了避免在第一次运行cpan 时按Enter 键
cpanm。这是不正确的,我必须 -1
大多数现代 Perl 用户更喜欢 cpanm,因为它简单,主要是输出简洁。
使用cpan 可能会产生数百行输出,因为它会向您显示它正在执行的所有操作:下载、校验和、运行安装程序、解析、加载,等等。这同样适用于每个依赖项。
另一方面,cpanm 以更简洁和通用的方式告诉您它正在做什么,即:获取、配置、构建和测试,完成。
所以使用上的主要区别在于cpanm 抑制了很多(通常)不相关的信息。有时,当模块失败时,您可能需要更多信息。有一个 -v|--verbose 标志,基本上可以向您展示 cpan 的所有内容。
此外,当您尝试安装某些需要用户输入的模块时,它们似乎会“挂起”。那是因为要求您输入内容的输出被抑制了。您可以使用--interactive(或--verbose)标志来解决这个问题。
有关输出的比较,请参阅幻灯片 35-39 here 或幻灯片 37-41 here。 (这些来自同一个演示文稿。我只是复制链接以防万一离线。)
【讨论】:
cpanm 的粉丝,不能相信你会给出真实的说明。 “更简洁和通用的方式”肯定不能两者兼而有之?
cpanm 的输出比cpan 的输出要简洁得多。