Назад | Перейти на главную страницу

Как проще всего обновить существующий Perl 5.14 до Perl 5.16 на FreeBSD 9 с помощью системы портов?

Я использую систему портов на FreeBSD. Как проще всего обновить Perl с помощью портов? В настоящее время я удаляю весь Perl и его зависимости. Я бы подумал, что есть отличный способ обновить Perl и все его зависимости. Что бы это было?

см. / usr / ports / ОБНОВЛЕНИЕ запись от 20120630 содержит подробное описание, как это сделать с помощью portmaster или portupgrade

Вот ... более ручной способ сделать это.

Предполагается, что perl-after-upgrade работает с большинством файлов (за исключением двоичных файлов, таких как irssi), однако я считаю, что он больше не работает так хорошо, поэтому я просто делаю все вручную.

Перед обновлением perl я бы отключил все, что от него зависит, поскольку эти вещи могут сломаться во время процесса обновления. Для меня это обычно означает отключение SpamAssassin, что на самом деле означает, что я просто отключил postfix на несколько минут, которые мне потребуются.

Я бы также сбросил текущий список иждивенцев на perl - pkg info -r perl, на всякий случай вам придется вернуться к обновлению всего вручную.

Сначала соберите и установите версию perl. Все ваши модули Perl будут повреждены, потому что они все еще установлены в старом каталоге perl. Используйте portmaster или portupgrade, чтобы принудительно пересобрать все модули Perl:portmaster p5- делает фокус для меня.

Затем поищите двоичные файлы, у которых есть неработающие зависимости от perl - для этого я использую libchk. Просто запустите его и найдите двоичные файлы с неразрешимыми ссылками на libperl.so. Использовать pkg which чтобы выяснить, какой порт установил этот двоичный файл, если это не очевидно из названия, а затем перестройте этот порт с помощью portmaster или portupgrade.

Вероятно, вы можете начать создавать резервные копии своих сервисов на основе Perl, таких как SpamAssassin.

Затем я просматриваю каталог / usr / local / lib / perl5 и смотрю, остались ли там какие-нибудь файлы, которых не должно быть. pkg which еще раз, чтобы выяснить, откуда они пришли, обновите эти порты, повторяйте, пока он не станет пустым или все файлы не будут востребованы.

portmaster -r perl- был бы дешевым и простым способом сделать это, но это, вероятно, потратит часы на восстановление вещей, которые на самом деле не нужно перестраивать. Этот способ, вероятно, намного быстрее, но это намного больше работы и требует немного больше возни.