Обновлена 27.06.2013
И так, пришло время обновить perl, ибо сказано:
С выходом версии perl 5.14 официально объявлено об окончании поддержки Perl 5.10
Поскольку этот процесс может затянуться и не всегда так прост, как кажется, то я опишу несколько моментов этого чуда.
Лучше всего обновлять так, как написано в UPDATING. Вот пример commit’a 20110517:
Внимание!
Если у вас нету perl-after-upgrade, то его убрали по причине надобности. Вот, что было написано в одной из рассылок:
perl-after-upgrade больше не нужен.
Для обновления 5.16.3 -> 5.16.x (x > 3) пересобирать модули не нужно будет.
Раньше модули устанавливались в папку x.y.z и для обновления 5.16.0 на 5.16.1 нужно было запускать perl-after-upgrade чтобы он переместил установленные модули из директории 5.16.0 в 5.16.1
Сейчас модули ставятся в x.y и если при обновлении перла меняется только последняя цифра никаких дополнительных действий не потребуется.
Для обновления с x.y на x.z (например с 5.16 на 5.18) все равно придется пересобирать все модули, как минимум потому что меняется ABI для XS-модулей.
Portupgrade users:
0) Fix pkgdb.db (for safety):
pkgdb -Ff
Примечание.
В этом коммите допущена ошибка в названии пакета perl5.12, а именно добавлено тире. В варианте ниже, я убрал тире. Будьте внимательны
1) Reinstall new version of Perl (5.14):
env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.14 -f perl5.12.\*
2) Reinstall everything that depends on Perl:
portupgrade -fr perl
Portmaster users:
portmaster -o lang/perl5.14 lang/perl5.12
Conservative:
portmaster p5-
Comprehensive (but perhaps overkill):
portmaster -r perl-
Note: If the "perl-" glob matches more than one port you will need to
specify the name of the Perl directory in /var/db/pkg explicitly.
Но вместо выполнения ручной или автоматической пересборки пакетов, которые требуют perl, можно выполнить команду:
#perl-after-upgrade -f
Это скрипт, написанный на perl’e и идущий с ним в комплекте.
Ложка дёгтя.
Учтите, что при обновлении могут появится проблемы, например, со SpamAssassin’ом, как в этом примере ( http://www.freebsd.org/cgi/query-pr.cgi?pr=157256 )
2 коментарі “Обновление perl”
Это не ошибка, тире в названии пакета perl–5.12 всё-таки нужно, т.к. в системе он зарегистрирован именно с тире, а без тире это каталог в портах
env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.14 -f perl–5.12.\*
env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.20 -f perl\* && portupgrade -fr perl
Это для себя – чтобы строку не редактировать каждый раз, по поиску в первых результатах по кейвордам freebsd perl upgrade