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)" означает, что вы ранее установили модуль "установка", и у вас установлена ​​последняя версия. (Что неудивительно, поскольку модуль, который ничего не делает, вряд ли нуждается в пересмотре.)

Другие вопросы по тегам