CPANM,“无法找到模块或分发Archive::zip”。

8
我想写一些需要几个模块的Perl代码,但这是我第一次使用Perl,我似乎无法安装我需要的一个特定模块Archive::zip
我正在使用perlbrew,并尝试使用以下命令安装该模块:
cpanm install Archive::zip

这会通过命令行返回以下信息给我:
install is up to date. (0.01)
! Finding Archive::zip on cpanmetadb failed.
! Finding Archive::zip () on mirror http://www.cpan.org failed.
! Couldn't find module or a distribution Archive::zip

起初我以为 "安装是最新的" 意味着我已经安装成功,但是我尝试运行任何需要那个模块的东西都告诉我它丢失了。我猜测之后的信息意味着它找不到任何地方可以安装这个模块,而我似乎没有在网上遇到这个问题。如果是这种情况,我可以指定不同的镜像吗?
如果这与问题有关,在此我使用的是OSX 10.10.2。

4
应该使用大写字母Z,即Archive::Zip(Perl区分大小写)。 - ThisSuitIsBlackNot
4
另外,“install”不是必需的,对吗?cpanm Archive::Zip就足够了。 “install”是默认行为,请参阅文档 - Benjamin W.
2个回答

1
模块名称区分大小写:您需要 Archive::Zip,其中 'Z' 是大写的。
此外,在使用 cpanm 安装模块时,您可以省略 install 几个按键,因为它是默认行为。引用自 documentation

(arguments)

[...]

-i, --install

安装模块。这是默认行为,这只是一个兼容选项,使其像 cpancpanp 一样工作。

这意味着您可以使用以下方式安装Archive::Zip
cpanm Archive::Zip

我认为我在遵循一个过时的教程,可能有错误的命令。最终我只是手动安装了它。感谢您的帮助! - DoolAy

0

正如前面的帖子所指出的,模块名称是区分大小写的,因此 "cpanm Archive::zip" 将无法找到 "Archive::Zip"。

至于 "install is up to date",这有点令人困惑。cpanm 程序接受选项(以破折号开头)和参数(不以破折号开头)。如果您没有指定任何选项,则默认行为是安装您指定为参数的模块。因此,正确的命令只是 "cpanm Archive::Zip"。如果您想告诉 cpanm 做其他事情,您可以使用选项来说明:例如,"cpanm --showdeps Some::Module" 将显示 Some::Module 的依赖关系,但不会安装任何东西。

如果你输入“cpanm install Archive::Zip”,那么你要做的第一件事是安装一个叫做“install”的模块,然后再安装“Archive::Zip”。还有一个名为“install”的模块--它什么也不做,但是专门创建了这个模块,以避免人们在疏忽大意地输入“cpan install Some::Module”时出现“找不到模块或分发”的错误。因此,“install is up to date (0.01)”表示你之前已经安装了“install”模块,并且你拥有的版本是最新的。(这并不奇怪,因为一个什么也不做的模块不太可能需要修订。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接