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

时间:2015-07-07 00:27:40

标签: perl module cpan cpanm

我正在尝试在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。

2 个答案:

答案 0 :(得分:1)

模块名称区分大小写:您需要Archive::Zip,大写字母为“Z”。

此外,使用cpanm安装模块时,省略install可以节省一些按键,这是默认行为。引自documentation

  

(参数)

     

[...]

     

-i--install

     

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

这意味着您可以使用

安装Archive::Zip
cpanm Archive::Zip

答案 1 :(得分: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”时出现“找不到模块或分发”错误。所以“安装是最新的(0.01)”意味着您以前安装了“安装”模块,并且您拥有的版本是最新版本。 (这并不奇怪,因为不做任何事情的模块不太可能需要修改。)