Freebsd-update


 * handbook

Утилита для установки патчей. Без пересборки и переустановки последующей.

Позволяет также обновлять версию ОС, но при этом удалит все устаревшие библиотеки и т.п., от которых могут зависеть установленные из портов программы (она этот момент просто не учитывает). Поэтому рекомдуется либо все программы удалить и заново поставить, либо обновить с использованием portupgrade.

По словам автора предназначен для тех систем, где стоит официальный релиз FreeBSD и не имеют файлов, скомпилированных вручную. Обновляется только //boot/GENERIC ядро. Даже если загружено не оно. У кого ядро свое, то надо пересобирать потом (если не выключали обновление исходных кодов). Но пересобирать надо только в тех случаях, если обновления затрагивают ядро. Всегда обновляется /usr/src/sys/conf/newvers.sh. Т.е. может быть ситуация ядро сообщает о старом уровне patch, а система на новом. По сути пересобирать ядро в таком случае надо только чтобы выдавался по uname правильные данные.

Конфигурационный файл /etc/freebsd-update.conf

нужно убедиться что на разделе есть не менее 1Гб пространства свободного

Обновяться исходные коды, бинарные файлы (исполнимые файлы и библиотеки), man-страницы, конфигурационные файлы (?) Запуск на FreeBSD 8.0-RELEASE-p5. После перезагрузка стал почему-то FreeBSD 8.0-RELEASE-p4. Хотя браться он должен из файла newvers.sh

p5 был получен при сборке из исходных кодов при мажорном апгрейде

Установка патчей
sudo freebsd-update fetch Looking up update.FreeBSD.org mirrors... 4 mirrors found. Fetching public key from update5.FreeBSD.org... done. Fetching metadata signature for 8.0-RELEASE from update5.FreeBSD.org... done. Fetching metadata index... done. Fetching 2 metadata files... done. Inspecting system... done. Preparing to download files... done. Fetching 1 patches. done. Applying patches... done. Fetching 50 files... done.

The following files are affected by updates, but no changes have been downloaded because the files have been modified locally: /etc/mtree/BSD.var.dist /var/db/mergemaster.mtree

The following files will be updated as part of updating to 8.0-RELEASE-p6:  /boot/kernel/ip_mroute.ko /boot/kernel/ip_mroute.ko.symbols /boot/kernel/kernel /boot/kernel/kernel.symbols /boot/kernel/krpc.ko /boot/kernel/krpc.ko.symbols /boot/kernel/nfsclient.ko /boot/kernel/nfsclient.ko.symbols /rescue/[ - целиком /usr/bin/ar /usr/bin/ranlib /usr/lib/libbz2.a /usr/lib/libbz2_p.a /usr/lib/libopie.a /usr/lib/libopie_p.a /usr/lib/libssl.a /usr/lib/libssl.so.6 /usr/lib/libssl_p.a /usr/lib/libstand.a /usr/lib/libstand_p.a /usr/lib/libzpool.a /usr/sbin/freebsd-update /usr/sbin/jail /usr/share/man/man2/mount.2.gz /usr/share/man/man2/nmount.2.gz /usr/share/man/man2/unmount.2.gz

WARNING: FreeBSD 8.0-RELEASE-p5 HAS PASSED ITS END-OF-LIFE DATE. Any security issues discovered after Wed Dec 1 03:00:00 MSK 2010 will not have been corrected

sudo freebsd-update install Installing updates... done.

Когда ничего обновлять не надо. sudo freebsd-update fetch  The following files are affected by updates, but no changes have been downloaded because the files have been modified locally: /etc/mtree/BSD.var.dist /var/db/mergemaster.mtree

No updates needed to update system to 8.0-RELEASE-p6.

WARNING: FreeBSD 8.0-RELEASE-p4 HAS PASSED ITS END-OF-LIFE DATE. Any security issues discovered after Wed Dec 1 03:00:00 MSK 2010 will not have been corrected. 

Если что-то не так, то откат freebsd-update rollback

Обновление версии FreeBSD
8.1 и 8.2

8.1
freebsd-update -r 8.1-RELEASE upgrade

После выполнения автоматизиованного этапа предложено просмотреть конфиги

Ручное слияние файла
Удалить все лишнее. В один файл попадает и новое и старое, по-видимомую или же в этом момент еще добавления нового не происходит? Оно потом будет добавляться при merge? Потому что ppp.conf, sshd.conf и вручную править предлагали и потом автоматом.

Сразу первый файо показывает. После правки его и покажет про ручное объединение и Enter.

The following file could not be merged automatically: /etc/group Press Enter to edit this file in /usr/bin/vi and resolve the conflicts manually...

Надо нажать Enter, дальше запускается vi и надо поправить вручную. Но таких файлов мало ppp.conf named.conf sshd.conf /etc/manpath.config

Вначале общее идее что-ли?

До ======= находится текущей содержимое отличающееся от нового, под ним - то что предлагается установить, отличающееся от старого.

В некоторых файлах надо удалить только палку и уголки - как стыкуется с тем что выше написано? Получается в однром файле все и лишь эти палки вставляются в то место что отличается.

/etc/manpath.config несколько "палок" имел - как объединять?

 <<<<<<< current version

=

 * 1) PPP  Sample Configuration File
 * 2) Originally written by Toshiharu OHNO
 * 3) Simplified 5/14/1999 by wself@cdrom.com
 * 4) See /usr/share/examples/ppp/ for some examples
 * 5) $FreeBSD: src/etc/ppp/ppp.conf,v 1.11.2.2.4.1 2010/12/21 17:09:25 kensmith Exp $
 * 1) See /usr/share/examples/ppp/ for some examples
 * 2) $FreeBSD: src/etc/ppp/ppp.conf,v 1.11.2.2.4.1 2010/12/21 17:09:25 kensmith Exp $
 * 1) $FreeBSD: src/etc/ppp/ppp.conf,v 1.11.2.2.4.1 2010/12/21 17:09:25 kensmith Exp $

>>>>>>> 8.2-RELEASE default: <<<<<<< current version set log Phase tun 

Если отличается только заголовок-комментарий

<<<<<<< current version ======= >>>>>>> 8.1-RELEASE
 * 1) $FreeBSD: src/etc/shells,v 1.5 2000/04/27 21:58:46 ache Exp $
 * 1) $FreeBSD: src/etc/shells,v 1.5.36.1.4.1 2010/06/14 02:09:06 kensmith Exp $

При этом не забыть удалить вручную строки <<<<<<< current version и >>>>>>> 8.1-RELEASE

Потом начинаются вопросы
Там просто Y отвечать, просматривая что предлагают. Он хорошо справляется в passwd и groups в отличиеи от mergemaster, добавляя только строки версиий, не портя и не снося остальное.

Таких вопросов совсем немного задается.

 The following changes, which occurred between FreeBSD 8.0-RELEASE and FreeBSD 8.1-RELEASE have been merged into /etc/ttys: --- current version +++ new version @@ -1,7 +1,5 @@ -# -# $FreeBSD: src/etc/etc.i386/ttys,v 1.11.2.1 2007/11/27 18:40:15 jhb Exp $ #
 * 1)      @(#)ttys        5.1 (Berkeley) 4/17/89
 * 1) This file specifies various information about terminals on the system.
 * 2) It is used by several different programs.  Common entries for the
 * 3) various columns include:



Отображение списка файла которые будут удалены - очень большой почему-то

The following files will be removed as part of updating to 8.1-RELEASE-p4:  /boot/kernel/iwnfw.ko /boot/kernel/iwnfw.ko.symbols /etc/rc.d/ip6fw /etc/rc.firewall6 /usr/include/machine/pc/vesa.h /usr/share/examples/etc/rc.firewall6 /usr/share/examples/pppd /usr/share/examples/pppd/auth-down.sample /usr/share/examples/pppd/auth-up.sample /usr/share/examples/pppd/chap-secrets.sample 

Выход по q - это вывод в less

Покажут и файлы что будут обновлены

The following files will be updated as part of updating to 8.2-RELEASE-p2:

Установка
freebsd-update install Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates.

reboot После выполнения перезагрузки

uname -a FreeBSD dc.agava.net 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010    root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

Теперь нужно снова запустьь (там запомнилось состояние). будут удалены старые библиотеки freebsd-update install Installing updates... done.

Написано что может быть нескоько стадий, но больше ничего не выводило. Также написано что надо обновлять установленное ПО, потому что оно могло зависеть от библиотек которые были удалены при обновлении

Еще ребут, видимо, надо. reboot

Если снова запустить sudo freebsd-update fetch No updates needed to update system to 8.1-RELEASE-p4. Хотя uname показывает 8.1-RELEASE #0

8.2
freebsd-update -r 8.2-RELEASE upgrade

Согласиться, введя Y

Показывает установленные компоненты ОС (те что дает выбирать при установке)

Does this look reasonable (y/n)? y  Fetching metadata signature for 8.2-RELEASE from update5.FreeBSD.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Fetching 1 metadata files... done. Inspecting system... done. Fetching files from 8.1-RELEASE for merging... done. Preparing to download files... done. Fetching 31731 patches.....10.. 

И потом показывает прогресс с указанием номера патча

После того как fetch закончен, начинается Applying patches...

Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates.

В роли простого ids
freebsd-update IDS >> outfile.ids

/etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf
 * 1) cat outfile.ids | awk '{ print $1 }' | more

8.2 release на 8.2 stable
Пишут что нет возможности. Работает только на релизах и умеет только до релизов апгрейдить.

http://update5.freebsd.org/ 8.2-BETA1/ 8.2-RC1/ 8.2-RC2/ 8.2-RC3/ 8.2-RELEASE/ to-8.2-BETA1/ to-8.2-RC1/ to-8.2-RC2/ to-8.2-RC3/ to-8.2-RELEASE/

freebsd-update -v debug fetch -r 8.2-STABLE Looking up update.FreeBSD.org mirrors... 4 mirrors found. pub.ssl                                      100% of  800  B   13 MBps done. Fetching metadata signature for 8.2-RELEASE from update2.FreeBSD.org... latest.ssl                                   100% of  512  B 9078 kBps done. Fetching metadata index... 323e1932318c54a21524e04f31a3093da0f0a8d4c9fbeb100% of 225  B 3921 kBps done. Fetching 2 metadata files... /usr/libexec/phttpget update2.FreeBSD.org 8.2-RELEASE/amd64/m/9a03b73b98e2f988aa976e1afe850655bf5de154d5a306c546e73fb94ad34802.gz

freebsd-update upgrade -r 8.1-RC1

Откат
В случае проблем можно попробовать выпонилнить freebsd-update rollback

Если система не грузится, то можно frenzy и потом chroot?

Если возникают проблемы, то не надо делать сразу freebsd-update rollback - достаточно загрузить старое ядро (unload kernel, load /boot/kernel.generic, boot). Оказывается, install это только установка нового ядра. userland при этом еще не обновляется. Поэтому достаточно поменять местами ядра и статус кво будет восстановлен.