Systemdateien nach Update aktualisieren
Führt man ein Systemupdate aus, so können nach dem Update die Systemdateien mit mergemaster(8) aktualisiert werden. Alternativ dazu gibt es seit einiger Zeit etcupdate in den Ports. Im FreeBSD-Portsbaum findet man etcupdate unter sysutils/etcupdate:
# cd /usr/ports/sysutils/etcupdate && make install clean
Zuerst muss ein aktueller Stand der Systemdateien gesichert werden, dazu müssen die Source-Dateien mit den aktuellen Stand des Systemen übereinstimmen:
# etcupdate extract
Danach können die Sourcen aktualisiert werden und das System gebaut und installiert werden:
# cd /usr/src && svn up # make buildworld && make buildkernel # make installkernel # shutdown -r now
Nach dem Neustart kann das Update fertig gestellt werden und danach wird etcupdate ausgeführt und die Systemdateien werden aktualisiert:
# make installworld # etcupdate D /etc/rc.d/ipxrouted U /COPYRIGHT U /etc/defaults/devfs.rules U /etc/defaults/periodic.conf U /etc/defaults/rc.conf U /etc/devd.conf U /etc/devd/usb.conf U /etc/devfs.conf U /etc/mac.conf C /etc/mail/freebsd.cf C /etc/mail/freebsd.submit.cf C /etc/mail/sendmail.cf C /etc/mail/submit.cf C /etc/motd [...] U /etc/rc.subr U /etc/services U /etc/ssh/ssh_config M /etc/ssh/sshd_config A /etc/rc.d/static_ndp
Während des Aktualisieren sind in diesem Beispiel einige Konflikte aufgetreten. Diese können auch mit etcupdate status abgerufen werden:
# etcupdate status C /etc/mail/freebsd.cf C /etc/mail/freebsd.submit.cf C /etc/mail/sendmail.cf C /etc/mail/submit.cf C /etc/motd
Nun können die Konflikte von Hand gelöst werden. Zuerst wird die Datei mit e bearbeitet:
# etcupdate resolve Resolving conflict in '/etc/mail/freebsd.cf': Select: (p) postpone, (df) diff-full, (e) edit, (h) help for more options: e
Nun wird ein Editor gestartet und man kann die Datei entsprechend anpassen. Anschliessend kann man die Änderung mit df nochmals überprüfen und anschliessend den Konflikt mit r beheben:
Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved, (h) help for more options: df --- /etc/mail/freebsd.cf 2011-08-10 11:28:07.000000000 +0200 +++ /var/db/etcupdate/conflicts/etc/mail/freebsd.cf 2012-02-05 11:15:15.000000000 +0100 @@ -18,7 +18,7 @@ ##### SENDMAIL CONFIGURATION FILE ##### ##### built by root@tinderbox.chruetertee.ch -##### in /var/tmp/temproot/usr/obj/usr/home/beat/dev/src/head/etc/sendmail +##### in /var/db/etcupdate/current/usr/obj/usr/home/beat/dev/src/head/etc/sendmail ##### using /usr/home/beat/dev/src/head/etc/sendmail/../../contrib/sendmail/cf/ as configuration include directory ##### ###################################################################### Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved, (h) help for more options: r
Hat man so alle Konflikte gelöst, ist das Update abgeschlossen. Mehr Informationen zu etcupdate findet man in der Manpage etcupdate(8).