Как использовать автозапуск CPANPLUS для обновления новой версии Perl?

У меня есть Perl 5.13.4 с большой коллекцией установленных модулей CPAN.

Я только что скомпилировал Perl 5.14.0. Я хотел бы установить (перекомпилировать) все модули в 5.13.4 в 5.14.0.

Я могу/создал пул установленных модулей с опцией 'cpanp' и 'b'; Теперь у меня есть файл ~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm.

  • Какую команду следует использовать в версии 5.14.0 "cpanp", которая будет проходить через этот пакет снимков и обеспечить, чтобы в 5.14.0 были установлены все эти модули?

  • Или, если комбинация cpanp и пакета не является подходящим способом, то какой самый простой способ реплицировать (перекомпилировать) модули, установленные в старой версии Perl для новой версии Perl? (Если CPAN может работать с файлом связки, я буду использовать его - это результат, о котором я забочусь, а не механизм, используемый для его достижения.)

(Я быстро просмотрел список вопросов для "perl cpanplus bundle" здесь, на SO, не найдя информацию, которую я им предоставляю. Я также несколько раз смотрел "perldoc cpanp" и не смог найти информация, которая мне нужна. Это не то же самое, что сказать "информации нет", это может означать, что я ее не заметил.)

Ответ 1

Файл связки - это специальная вещь CPAN, которая, к моему удивлению, также не работает в CPANPLUS. Вот почему никто не говорит о пакетах CPANPLUS, и вы ничего не нашли. Поэтому используйте CPAN. Сначала узнайте, где находится ваш корневой узел CPAN, по умолчанию он ~/.cpan или ~/.local/share/.cpan в системе, совместимой с Free Desktop XDG. Измените инструкции соответствующим образом.

mkdir -p ~/.cpan/Bundle
mv ~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm ~/.cpan/Bundle
cpan Bundle::Snapshot_2011_05_18_00   # DTRT

Как вы говорили о перекомпилировать, CPAN имеет эту команду, и вы можете выдать его из оболочки CPAN или вызова API из командной строки, но это полезно, только если у вас есть модули в фиксированном месте в версиях Perl.

Ответ 2

Автозапуска CPANPLUS работают нормально. Просто не забудьте ссылаться на пакет с "file://", префиксом которого является полный путь пакета.

Конечно, будет какой-то дидлин, который вам придется делать с некоторыми модулями, но по большей части он должен быть полностью выполнимым.

Ответ 3

Дополнительная информация, которая может спасти других людей от разрывания волос.

  • Если у вас есть файл моментального снимка $HOME/Snapshot_2013_12_23_00.pm, вы можете запустить:

    cpanp -i file://$HOME/Snapshot_2013_12_23_00.pm
    

    и начнется установка.

  • Когда вы это сделаете, Perl создаст файл, например:

    $HOME/cpan/authors/id/UNKNOWN-ORIGIN/Snapshot_2013_12_23_00.pm
    

    (Точное местоположение будет зависеть от того, где вы настроили свой репозиторий CPANPLUS, мой идет в $HOME/cpan.)

    Если вам нужно взломать файл моментального снимка (потому что какой-то модуль не будет компилироваться), вы можете отредактировать и указать имя файла в командной строке, пока не будете синим лицом и полностью не голыми, и это не сделает малейшая разница, потому что, несмотря на то, что вы говорите ей, чтобы посмотреть в $HOME, CPANPLUS просматривает файл, который он скопировал в каталог UNKNOWN_ORIGIN. Конечно, удаляется файл; вы, вероятно, тоже могли бы отредактировать его.