首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cpan和cpanm有什么不同?

cpan和cpanm有什么不同?
EN

Stack Overflow用户
提问于 2016-07-08 09:03:57
回答 2查看 14.2K关注 0票数 26

cpan命令和cpanm命令有什么不同?

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

EN

回答 2

Stack Overflow用户

发布于 2016-07-08 09:41:08

大约从1997年开始,cpan就已经附带了CPAN shell。当您第一次运行它时,它会问一堆问题,并将答案保存在一个配置文件中。然后,您可以通过运行以下命令来安装模块:

代码语言:javascript
复制
cpan -i Module::Name

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

Jos Boumans启动了一个名为CPANPLUS (来自命令行的cpanp)的项目,该项目旨在创建一个更新、更好、更有特色的CPAN shell,但它从未完全完成到实现最初愿景的地步。

同时,MIYAGAWA认为cpanp试图做的太多了,世界真正需要的是一个更简单的shell,它做得更少,问的问题也更少(理想情况下根本不需要)。他创建了App::cpanminus,该命令提供cpanm命令并执行他想要做的事情。您可以使用它来安装一个模块(以及该模块的所有依赖项),命令如下:

代码语言:javascript
复制
cpanm Module::Name

两者之间的主要区别在于,如果您有Perl,那么您应该已经有了cpan命令。然而,除非您安装了cpanm,否则您将不会拥有它。

票数 27
EN

Stack Overflow用户

发布于 2016-07-08 11:19:50

大多数现代Perl用户更喜欢cpanm,因为它很简单,而且主要是输出简短。

使用cpan可能会导致成百上千行的输出,因为它显示了它正在做的所有事情:下载、校验和、运行安装程序、解析、加载等等。这同样适用于每个依赖项。

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

所以用法上的主要区别是cpanm抑制了许多(通常)不相关的信息。有时,当模块出现故障时,您可能需要更多信息。这里有一个-v|--verbose标志,它基本上显示了cpan所能显示的所有内容。

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

有关输出的比较,请参见幻灯片35-39 here或幻灯片37-41 here。(这些都来自同一个演示文稿。我只是复制链接,以防其中一个脱机。)

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38257499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档