пятница, 27 мая 2011 г.

Обновление perl с 5.10 до 5.12 во FreeBSD

Не так давно версией перла по умолчанию в портах стала 5.12. Процесс обновления уже установленного порта подробно описан в файле UPDATING, тем не менее выкладываю пошаговую инструкцию:
  1. Первым делом нужно обновить дерево портов до актуальной версии (portsnap, cvsup, csup)
  2. Проверим pkgdb: pkgdb -Ff
  3. Установим новую версию: env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.12 -f perl-5.10.\*
  4. Пересоберем все порты, зависящие от перла (долго): portupgrade -fr perl

9 комментариев:

  1. Сделал, как написано, а все-равно на команду
    perl -v
    выдает 5.10.1
    Даже в /etc/make.conf поменял номер версии вручную, все равно perl -v выдает 5.10.1

    ОтветитьУдалить
    Ответы
    1. Смотрите вывод pkg_info, если там 5.12, значит обновлние прошло штатно. Если нет, то обратите внимание на третий шаг - именно там происходит смена версии

      Удалить
  2. Установил таким образом:
    Сначала из порта perl5.12 выполнил
    env DISABLE_CONFLICTS=1 make install
    Потом уже сделал, как описано выше.
    Я слабо разбираюсь в Unix-системах, так что либо автор по-умолчанию подразумевал, что этот шаг уже сделан, либо я совершил что-то варварское)
    P.S. pkg_info | grep 'perl' я делал, выдавал только 10-ю версию, хотя инструкцию по обновлению выполнял всю по шагам.

    ОтветитьУдалить
    Ответы
    1. А говорите все сделали по инструкции. Где у меня написано, что нужно делать env DISABLE_CONFLICTS=1 make install

      Удалить
  3. Спасибо, очень помогло!

    ОтветитьУдалить
  4. скажите, а portupgrade -o lang/perl5.20 -f perl-5.10.\* проканает?

    ОтветитьУдалить
    Ответы
    1. В теории - да. На практике есть только один способ выяснить.

      Удалить
    2. Без меня ставили VLC на сервер и после этого пошла ошибка работы перла.
      PFlogsumm выдает:
      /usr/local/lib/perl5/5.16/mach/CORE/libperl.so: Undefined symbol "_ThreadRuneLocale

      Версия перла:
      # pkg_info |grep perl
      p5-DBI-1.616_1 The perl5 Database Interface. Required for DBD::* modules
      p5-Term-ReadKey-2.30 A perl5 module for simple terminal control
      perl-threaded-5.12.4_3 Practical Extraction and Report Language
      perl5-5.16.3_6 Practical Extraction and Report Language

      Делал обновление портов и потом portupgrade -fr pflogsumm. Также делал portupgrade -fr perl.
      Ничего не помогло..
      Что мне надо проверить и сделать?

      Удалить
    3. Во-первых, у вас два перла. Как вы этого добились? Удалите один, а второй обновите до дефолтной версии 5.18

      Удалить