我正在尝试在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。
答案 0 :(得分:1)
模块名称区分大小写:您需要Archive::Zip
,大写字母为“Z”。
此外,使用cpanm
安装模块时,省略install
可以节省一些按键,这是默认行为。引自documentation:
(参数)
[...]
-i
,--install
这意味着您可以使用
安装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)”意味着您以前安装了“安装”模块,并且您拥有的版本是最新版本。 (这并不奇怪,因为不做任何事情的模块不太可能需要修改。)