FreeBSD – Wechsle von STABLE zu RELEASE

Die Bezeichnung STABLE kann etwas verwirrend sein. Weshalb ich wohl nicht die einzige bin, die immer Stable installiert hat, immer der Meinung, dass dies die aktuellste und stabilste Version ist. Bis ich eines Tages nicht mehr Updaten konnte. Wäre mir nicht passiert, hätte ich mit RELEASE gearbeitet 😉 Hier die genauere Definition der diversen FreeBSD Branches.

Aktuelle System Version

uname -a
FreeBSD xx.xx.xx9.0-STABLE FreeBSD 9.0-STABLE #0: Tue Jan 31 17:26:46 CET 2012     user@FreeBSD9:/usr/obj/usr/src/sys/FREEBSD9  amd64

Updaten

Als erstes schauen, dass wir eine Kopie des funktionierenden Kernel machen, für den Fall der Fälle: (weitere Infos)

cd /boot
mv kernel.old GENERIC

Wir gaukeln FreeBSD jetzt vor, dass es sich bei unserem System um einen 9.0 RELEASE handelt und nicht STABLE:

UNAME_r=9.0-RELEASE freebsd-update -r 9.1-RELEASE upgrade

Da ich nicht den GENERIC Kernel habe, sondern meine eigene Version (FREEBSD9) kommt nun die folgende Warnung, die mit y bestätigt werden muss. Ich kann diese Meldung ignorieren, da ich im eigenen GENERIC Kernel immer include und im eigenen Kernel nur Werte überschreibe. Somit ist eigentlich immer alles aktuell und man erlebt selben böse Überraschungen bei Updates.

WARNING: This system is running a "freebsd9" kernel, which is not a
kernel configuration distributed as part of FreeBSD 9.0-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install".

The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/doc world/games world/lib32

The following components of FreeBSD do not seem to be installed:

Does this look reasonable (y/n)? 

Das kann nun eine Weile dauern. Am Schluss wird man aufgefordert die geänderten Files zu überprüfen etc. Wichtig ist hier, dass man während diesem Prozess die Info Zeilen rauslöscht, sonst gibt es später fehlerhafte Files:

<<<<<<< current version
# $FreeBSD: src/contrib/sendmail/cf/m4/cfhead.m4,v 1.19.2.1 2011/09/23 00:51:37 kensmith Exp $
=======
# $FreeBSD: release/9.1.0/contrib/sendmail/cf/m4/cfhead.m4 223067 2011-06-14 04:20:18Z gshapiro $
>>>>>>> 9.1-RELEASE
#

Beachte, diese Zeilen können auch irgendwo mitten in einem File drin stehen. Also am besten einen Search machen nach „current version“ um die zu löschenden Zeilen zu finden.

/current version

Und wenn wir hier angelangt sind (die total lange Auflistung kann man sonst auch einfach mit CTRL-C abbrechen)

/var/named/etc/namedb/master/empty.db
/var/named/etc/namedb/master/localhost-forward.db
/var/named/etc/namedb/master/localhost-reverse.db
/var/named/etc/namedb/named.root
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".

gehts mit

freebsd-update install

weiter.

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

Nun folgendes eingeben, danach System neu starten:

nextboot -k GENERIC
shutdown -r now

So, hier kam bei mir beim ersten Rauffahren ein mounterror… hab einfach mit alt-ctrl-del neu gebootet, danach ist er wieder normal hoch gekommen. Jetzt gehts weiter mit

freebsd-update install

 Und wenn’s dann fertig ist:

Installing updates... done.
uname -a
FreeBSD FreeBSD9 9.1-RELEASE-p17 FreeBSD 9.1-RELEASE-p17 #0: Tue Jul  8 13:50:48 UTC 2014     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

entweder so lassen oder dann wieder den eigenen Kernel aktivieren. Er müsste am Schluss gerebuildet werden, nachdem freebsd-update install ausgeführt wurde:

make build|installkernel KERNCONF=MYKERNEL

 Das Upgrade ist nun fertig 🙂

Falls es ein Major Upgrade war (also z.B. 9.x auf 10.x) sollte man alle Ports & Packages reinstallieren mit:

portmaster -afG

Wenn das durchgelaufen ist, nochmal

freebsd-update install

ausführen. Und Kernel neu builden, falls ein eigener verwendet wird.

Fehlermeldungen

Unknown modifier ‚t‘

Bei Portsupdates etc. kam jeweils folgender Fehler:

Unknown modifier 't'

Unknown modifier 't'

"/usr/ports/Mk/bsd.port.mk", line 1750: Malformed conditional (defined(USE_LDCONFIG) && ${USE_LDCONFIG:tl} == "yes")
Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

"/usr/ports/Mk/bsd.autotools.mk", line 320: Need an operator
"/usr/ports/Mk/bsd.autotools.mk", line 320: Need an operator
"/usr/ports/Mk/bsd.autotools.mk", line 320: Need an operator
"/usr/ports/Mk/bsd.autotools.mk", line 320: Need an operator
Unknown modifier 't'

Unknown modifier 't'

"/usr/ports/Mk/bsd.sites.mk", line 953: Malformed conditional (!empty(_PERL_CPAN_ID) && ${_PERL_CPAN_FLAG:tl} == "cpan")
Unknown modifier 't'

Unknown modifier 't'

"/usr/ports/Mk/bsd.port.mk", line 2877: Unclosed conditional/for loop
"/usr/ports/Mk/bsd.port.mk", line 2877: Unexpected end of file in for loop.

"/usr/ports/Mk/bsd.port.mk", line 6580: Unclosed conditional/for loop
"/usr/ports/Mk/bsd.port.mk", line 6580: Unexpected end of file in for loop.

Grund war, dass FreeBSD veraltet war. Lösung:

  1. FreeBSD Update (siehe oben) muss gemacht werden. Beachte: Das hier ist ein Problem, das von /usr/bin/make generiert wird. Man muss mind. auf FreeBSD Version 9.2 Upgraden um diesen Fehler zu beheben. Oder man kopiert das funktionierende make von einer 9.2 Maschine.
    Weitere Infos dazu gibts hier (Russisch) sowie hier (FreeBSD Forum)
freebsd-update -r 9.2-RELEASE upgrade

Flattr this!

  • *

    Du kannst diese HTML tags verwenden: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Kommentar-Feed für diesen Beitrag
nach oben