Как использовать автопакет CPANPLUS для обновления новой версии Perl? - PullRequest
11 голосов
/ 23 мая 2011

У меня 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.

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

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

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

Ответы [ 3 ]

8 голосов
/ 23 мая 2011

Пакетный файл - это специальная программа CPAN, которая, к моему удивлению, не работает и в CPANPLUS. Вот почему никто не говорит о пакетах CPANPLUS, и вы ничего не можете найти. Так что используйте CPAN. Сначала выясните, где находится корень CPAN, по умолчанию он ~/.cpan или ~/.local/share/.cpan в системе, свободной от 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 голосов
/ 22 ноября 2011

CPANPLUS autobundles отлично работают на данный момент. Просто не забудьте указать пакет с префиксом file:// к полному пути пакета.

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

0 голосов
/ 24 декабря 2013

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

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

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

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

  2. Когда вы сделаете это, Perl создаст файл, такой как:

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

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

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

...