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

2 回答 2

1

模块名称是区分大小写的:你想要Archive::Zip的,带有大写的“Z”。

此外,使用 安装模块时cpanm,您可以通过省略 来节省一些击键install,这是默认行为。引用文档

(参数)

[...]

-i,--install

安装模块。这是一个默认行为,这只是一个兼容性选项,可以让它像cpanor一样工作cpanp

这意味着您可以Archive::Zip使用安装

cpanm Archive::Zip
于 2015-07-09T05:52:42.300 回答
0

正如之前的海报所指出的,模块名称区分大小写,因此“cpanm Archive::zip”不会找到“Archive::Zip”。

至于“安装是最新的”,起初这有点令人困惑。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”模块,并且你的版本是最新版本。(这并不奇怪,因为一个不做任何事情的模块不太可能需要修改。)

于 2015-07-13T18:16:02.397 回答