CPANM,"Couldn't find module or a distribution Archive::zip"

CPANM, "Couldn't find module or a distribution Archive::zip"

我正在尝试用 Perl 编写需要多个模块的东西,但这是我第一次使用 Perl,我似乎无法安装我需要的特定模块,Archive::zip

我正在使用 perlbrew 并使用以下命令尝试安装模块:

cpanm install Archive::zip

这 returns 通过命令行向我发送以下消息:

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

起初我以为 "install is up to date meant" 我有它,但是我尝试 运行 需要那个模块的任何东西都告诉我它丢失了。我假设后面的消息意味着它找不到任何地方来安装这个模块,而且我似乎没有遇到过在线任何地方发布的这个问题。如果是这样的话,我可以指定一个不同的镜像吗?

如果可能与此相关,我目前正在使用 OSX 10.10.2.

模块名称区分大小写:您需要 Archive::Zip,大写 'Z'.

此外,当使用 cpanm 安装模块时,您可以通过省略 install 来节省几次击键,这是默认行为。引用自 documentation:

(arguments)

[...]

-i, --install

Installs the modules. This is a default behavior and this is just a compatibility option to make it work like cpan or cpanp.

这意味着您可以使用

安装Archive::Zip
cpanm Archive::Zip

正如之前的发帖者所指出的,模块名称区分大小写,因此 "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" 时出现 "Couldn't find module or distribution" 错误。所以"install is up to date (0.01)"表示你之前安装过"install"模块,你的版本是最新版本。 (这并不奇怪,因为什么都不做的模块不太可能需要修改。)