CPANM, "Не удалось найти модуль или дистрибутив Archive::zip"
Я пытаюсь написать что-то на 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 ответа
Имена модулей чувствительны к регистру: вы хотите Archive::Zip
, с большой буквы "Z".
Также при установке модуля с помощью cpanm
, вы можете сохранить несколько нажатий клавиш, опуская install
Это поведение по умолчанию. Цитирование из документации:
(аргументы)
[...]
-i
,--install
Устанавливает модули. Это поведение по умолчанию, и это просто вариант совместимости, чтобы он работал как
cpan
или жеcpanp
,
Это означает, что вы можете установить Archive::Zip
с помощью
cpanm Archive::Zip
Как отмечалось в предыдущем постере, имена модулей чувствительны к регистру, поэтому "cpanm Archive::zip" не найдет "Archive::Zip".
Что касается "установка актуальна", это сначала немного сбивает с толку. Программа cpanm принимает параметры, которые начинаются с тире, и аргументы, которые этого не делают. Если вы не укажете никаких опций, поведение по умолчанию будет устанавливать модули, которые вы указываете в качестве аргументов. Таким образом, правильная команда - это просто "cpanm Archive::Zip". Если вы хотите, чтобы cpanm делал что-то еще, вы должны сказать это с помощью опции: например, "cpanm --showdeps Some::Module" будет показывать зависимости Some:: Module, но ничего не устанавливать.
Если вы говорите "cpanm install Archive::Zip", то вам нужно сначала установить модуль "install", а затем установить "Archive::Zip". И есть модуль под названием " установить" - он ничего не делает, но был создан специально для того, чтобы избежать ошибок "Не удалось найти модуль или распространение", когда люди рассеянно набирают "cpan install Some::Module". Таким образом, "установка обновлена (0.01)" означает, что вы ранее установили модуль "установка", и у вас установлена последняя версия. (Что неудивительно, поскольку модуль, который ничего не делает, вряд ли нуждается в пересмотре.)