Обновление 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
В процессе обновления портов вылезает ошибко: 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. in /var/db/pkg
===> 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
[Rebuilding the pkgdb
Лечение хирургическое:
rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
Взято отсюда:
http://www.it-cool.ru/freebsd-update/12-freebsd-update.html
Да, и перепиши, пожалуйста, что installworld и mergemaster лучше делатЬ по отделЬности. Ну и про удаление старыхЪ библиотек…
Угу, сделал.
Вот ещО такая ошибка интересная при пересборке 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
mergemaster -p
перед
make installworld
не?
skiangel, можешь дать ссылку или процитировать информацию о том,
что надо обновлять приложения пользовательского уровня?
>8. portupgrade -af
Это, вообще говоря, как раз пересборка всего.
Да, при смене ветки релиза необходимо пересобрать весь юзерленд, конечно же.
Или вопрос в необходимости данного действия? В пределах одной ветки (например, с 7.2 на 7.3) этого не требуется, при переходе с ветки на ветку ( с 7.3, например, на 8.0) — обязательно. Версии библиотек меняются и все установленное перестает работать. Ссылки под рукой нет, однако сие подтверждено мной экспериментально :) Как-то раз обновился с 6.3 на 7.1, удалил старые либы без пересборки и поимел неработающую систему. Впрочем, можно поставить пакет совместимости из /usr/ports/compat, но, имхо, как-то криво это.