Проблемы с установкой модулей Perl вручную

Я пытаюсь установить модуль DateTime в своей системе. Я использую это руководство.

Сначала я просто использовал wget для загрузки, разархивировал, сделал perl Makefile.pm, а затем make

Затем я столкнулся с проблемами с зависимостями и увидел, что вместо этого я могу использовать CPAN.

Запуск install DateTime в cpan, похоже, сработал, и если я попытаюсь установить его снова, я получу DateTime is up to date (1.51).

Однако проблема в том, что теперь, когда я пытаюсь запустить свой скрипт, я получаю Can't locate namespace/autoclean.pm in @INC, а попытка установить его через cpan приводит к сбоям, например: Warning: no success downloading '/root/.cpan/sources/authors/id/n/n/n/na/namespace/autoclean.pm.tmp28533'. Giving up on it. at /usr/share/perl5/CPAN/Distribution.pm line 379

Есть что-то, что мне не хватает? Я испортил свою установку, пытаясь установить Datetime через wget вместо cpan?


person AndyReifman    schedule 24.02.2020    source источник
comment
Вы работаете cpan namespace::autoclean или cpan namespace/autoclean.pm? Вы должны использовать первый.   -  person mob    schedule 24.02.2020
comment
Re Я испортил свою установку, пытаясь установить Datetime через wget вместо cpan?, Нет   -  person ikegami    schedule 24.02.2020
comment
@mob Как ни странно, cpan namespace::autoclean, похоже, решил мою проблему, хотя я думал, что именно это я и делал, когда запускал cpan, а затем оттуда выдавал namespace/autoclean. Спасибо.   -  person AndyReifman    schedule 24.02.2020
comment
FWIW, это руководство неверно, потому что оно не говорит вам, как устанавливать зависимости. Использование установщика CPAN для начала справится со всем этим: cpan DateTime   -  person Grinnz    schedule 26.02.2020


Ответы (1)


Вы не показали, какую команду ввели, но она была неверной.[1] cpan пытался скачать

authors/id/n/n/n/na/namespace/autoclean.pm

(autoclean.pm автор CPAN "пространство имен".)

Правильный файл

authors/id/E/ET/ETHER/namespace-autoclean-0.29.tar.gz

(namespace-autoclean-0.29.tar.gz автор CPAN "ETHER".)

Правильная команда оболочки

cpan namespace::autoclean

В интерактивном интерфейсе cpan правильная команда

install namespace::autoclean

  1. Я думаю, вы сделали эквивалент

    cpan namespace/autoclean.pm
    

    Когда вы указываете путь, предполагается, что это будет путь к дистрибутиву, включая идентификатор автора. Например, вы можете использовать следующее для установки определенной версии дистрибутива:

    cpan ETHER/namespace-autoclean-0.29.tar.gz
    

    Обратите внимание, что более новые версии cpan сначала проверяют, соответствует ли путь известному модулю, поэтому cpan namespace/autoclean.pm фактически работал бы для более новых версий cpan.

person ikegami    schedule 24.02.2020