dadv: (chuck)
[personal profile] dadv

Столкнулся с необходимостью поставить дополнительный модуль Perl (и не один) на FreeBSD-9, на которую perl-5.14.2 был установлен до 12.06.2013. До того момента Perl в FreeBSD использовал структуру каталогов, в которой пути включали в себя его версию в формате "major.minor.patchlevel", а после стал использовать формат "major.minor" (см. запись 20130612 в /usr/ports/UPDATING).

Кроме того, 20131120 в портовых версиях Perl включили поддержку тредов по умолчанию, а 20140214 дефолтную версию сменили с 5.14 на 5.16. После этого просто так не доставить модуль ни пакетом (пакеты собраны для тредового 5.16 вместо бестредового 5.14), ни из портов - структура каталогов несовместима. Либо пересобирать весь боевой jail, в котором кроме целевых приложений, работающих с Perl и PHP, ничего больше и нету - и тратить кучу времени на разборки с новыми версиями ВСЕГО, обрабатывая всё напильником заново. Либо вручную обеспечить совместимость портов со старой структурой каталогов, после чего все перловые модули из портов устанавливаются легко и непринужденно.

Для этого нужно сделать всего две вещи:

  • Добавить в /etc/make.conf выделенные строки:
    # added by use.perl 2013-03-15 15:52:49
    PERL_VERSION=   5.14.2
    SITE_PERL_REL=          lib/perl5/site_perl/${PERL_VERSION}
    MANPAGES+=              ${PREFIX}/lib/perl5/${PERL_VERSION}
    MANDIRS+=               ${PREFIX}/lib/perl5/${PERL_VERSION}
    MAN3PREFIX=             ${PREFIX}/lib/perl5/${PERL_VERSION}

  • Пропатчить /usr/ports/Mk/Uses/perl5.mk:
    --- perl5.mk.orig       2014-09-08 09:34:29.000000000 +0400
    +++ perl5.mk    2014-09-08 12:21:51.000000000 +0400
    @@ -155,7 +155,7 @@
     PLIST_SUB+=    PERL_VERSION=${PERL_VERSION} \
                            PERL_VER=${PERL_VER} \
                            PERL_ARCH=${PERL_ARCH} \
    -                       PERL5_MAN3=lib/perl5/${PERL_VER}/man/man3 \
    +                       PERL5_MAN3=lib/perl5/${PERL_VERSION}/man/man3 \
                            SITE_PERL=${SITE_PERL_REL}
    

Совершенно непонятно, что мешало portmgr@ оставить этот слой совместимости и не заставлять народ всё переставлять без необходимости.

Profile

dadv: (Default)
Choose your future

July 2024

M T W T F S S
12 34567
891011121314
15161718192021
22232425262728
293031    

Tags

Style Credit

Powered by Dreamwidth Studios