BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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).

 Permalink

Comments

No new comments allowed (anymore) on this post.