PostHeaderIcon Обновление FreeBSD до 8

upd: Метод обновления с помощью исходных текстов работает как на бетах, так и нарелизкандидате. Собственно, Чего и следовало ожидать, метод давний и проверенный :)

24 августа вышла Freebsd 8 Beta3 (на 21 сентября 2009 — уже rc1). По этому поводу Ken Smith <kensmith@cse.Buffalo.EDU> дает несколько рекомендаций.

  • В связи с некоторыми изменениями, при обновлении системы до 8 beta3 требуется пересборка всех приложений пользовательского увовня, включая ports/packages не только при обновлении с седьмой ветки, но и с предыдущих beta1 и beta2 восьмой ветки.
  • Если система обновляется с помощью csup/cvsup,  должен использоваться branch tag RELENG_8. Если вы не заметили этого раньше и использовали STABLE_8, используйте  -F опцию mergemaster.

    Несколько слов от меня лично:
    В общем, процедура обновления должна выглядеть следующим образом:

    0. Backup
    1. csup 8.0-releng
    2. make buildworld && make buildkernel
    (перед этим пунктом не забыть сделать cd /usr/src/ Так же, если у вас есть свой конфигурационный файл ядра, не забываем его использовать: make buildkernel KERNCONF=имя_файла_ядра)

    3. make installkernel
    4. reboot в однопользовательский режим (впрочем, скорее всего и в многопользовательском тоже сработает)
    5. mergemaster -p (этим подготавливаются конфигурационные файлы, задействованные в установке нового мира, например, /etc/make.conf и другие. Процедура, имеющая особенную важность при переходе на новую версию. Например, может добавлять в систему новые группы или ползоватлей в базу паролей. Если таковые появились с момента последнего обновления, позволит installworld использовать эти новшества без проблем).
    6. make installworld
    6.1 mergemaster
    (лично я делаю mergemaster -iU, это позволяет установить отсутствующие конфигурационные файлы автоматически, а также автоматически заменяет конфигурационные файлы, которые не были изменены пользователем).

    7. reboot
    8. portupgrade -af
    9. yes | make delete-old
    9.5 yes | make delete-old-libs
    10. reboot

    Содержание файла 8.0-releng:

    # FreeBSD 8.0 system source supfile
    #
    *default host=cvsup2.ru.FreeBSD.org
    *default base=/var/db
    *default prefix=/usr
    *default release=cvs tag=RELENG_8
    *default delete use-rel-suffix
    *default compress
    src-all

  • Утилита бинарного обновления системы работает со всеми системами седьмой ветки и с обеими бетами восьмой:

    # freebsd-update upgrade -r 8.0-BETA3

    Во время этого процесса система может запросить несколько ответов от пользователя при сравнении устанавливаемых и существующих конфигурационных файлов, либо для подтверждения того, что автоматическое сравнение прошло корректно. После этого должно быть выполнено

    # freebsd-update install

    Перед продолжением система должна быть перезагружена с новоустановленным ядром:

    # shutdown -r now

    После перезагрузки # freebsd-update должен быть запущен снова для установки новых userland компонент:

    # freebsd-update install

    На этом этапе пользователей, обновляющих систему седьмой ветки freebsd-update попросит
    пересобрать все third-party приложения (например, порты, установленные через дерево портов и т.п), в
    связи с обновлением системных библиотек. Подробности можно узнать здесь.
    После выполнения предложенного требуется запустить freebsd-update еще раз для удаления старых (более не используемых) библиотек

    # freebsd-update install

    И, неконец, можно загрузиться в 8.0-BETA3:

    # shutdown -r now

7 комментариев на “Обновление FreeBSD до 8”

  • lycane says:

    В процессе обновления портов вылезает ошибко:
    ===> Registering installation for ruby18-bdb-0.6.5_1
    ===> Cleaning for ruby18-bdb-0.6.5_1
    —> Cleaning out obsolete shared libraries
    [Updating the pkgdb in /var/db/pkg … /var/db/pkg/pkgdb.db: unexpected file type or format — Invalid argument; rebuild needed] [Rebuilding the pkgdb in /var/db/pkg … error] Remove and try again.
    [Rebuilding the pkgdb
    in /var/db/pkg

    Лечение хирургическое:
    rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db

    Взято отсюда:
    http://www.it-cool.ru/freebsd-update/12-freebsd-update.html

    Да, и перепиши, пожалуйста, что installworld и mergemaster лучше делатЬ по отделЬности. Ну и про удаление старыхЪ библиотек…

  • skiangel says:

    Угу, сделал.

  • lycane says:

    Вот ещО такая ошибка интересная при пересборке java/jdk16 в процессе пересборки пакетов:

    Error occurred during initialization of VM
    Unable to load ZIP library: /usr/local/diablo-jdk1.6.0/jre/lib/i386/libzip.so
    *** An XSLT processor (J2SE 1.4.x or newer) is required to bootstrap this build

    Устраняется следующим образом — добавляем в /etc/libmap.conf:
    libz.so.4 libz.so.5

  • Baby Boy says:

    mergemaster -p

    перед

    make installworld

    не?

  • Baby Boy says:

    skiangel, можешь дать ссылку или процитировать информацию о том,
    что надо обновлять приложения пользовательского уровня?

  • skiangel says:

    >8. portupgrade -af

    Это, вообще говоря, как раз пересборка всего.
    Да, при смене ветки релиза необходимо пересобрать весь юзерленд, конечно же.

  • skiangel says:

    Или вопрос в необходимости данного действия? В пределах одной ветки (например, с 7.2 на 7.3) этого не требуется, при переходе с ветки на ветку ( с 7.3, например, на 8.0) — обязательно. Версии библиотек меняются и все установленное перестает работать. Ссылки под рукой нет, однако сие подтверждено мной экспериментально :) Как-то раз обновился с 6.3 на 7.1, удалил старые либы без пересборки и поимел неработающую систему. Впрочем, можно поставить пакет совместимости из /usr/ports/compat, но, имхо, как-то криво это.

Оставить комментарий

PR-CY.ru