Update von FreeBSD

morpheus

Well-Known Member
Ich habe hier zwei Server laufen, auf denen noch FreeBSD 8.2 installiert ist. Nun möchte ich ein Update auf 8.3 bzw. 9.1 machen (wenn es raus ist). Früher habe ich das immer so gehandhabt, dass ich die Sourcen aktualisiert habe und mir den Kernel neu gebaut habe. Eigentlich würde ich das aus Zeitgründen lieber sein lassen und stattdessen freebsd-update verwenden. Ich lese aber immer wieder, dass freebsd-update auch nicht unproblematisch ist, da jede Menge Dateien aus /etc von Hand nachbearbeitet werden müssen. Ich habe da auch was von etcupdate gelesen, aber das ist wohl nichts, was man im Zusammenhang mit freebsd-update verwenden kann, oder?

Wie wäre denn der beste und vor allen Dingen schmerzfreieste Weg? Bei den Rechnern, die ich aktualisieren möchte, handelt es sich um Produktivsysteme, bei denen ich die Ausfallzeiten so gering wie möglich halten muss und will.

Gruß, Morpheus
 
Eigentlich ist freebsd-update da recht unproblematisch. Jedoch verwendet freebsd-update den Generic-Kernel, daher solltest du vorher prüfen ob das für dich in Frage kommt.
Nach dem Update wirst du zu allen Konfigfiles die sich geändert haben kurz gefragt ob du sie behalten willst oder die neuen einspielen, dazu zeigt er dir jeweils einen diff der beiden Versionen an.
Im Allgemeinen kann hier die "alte" (also die von dir umkonfigurierte) Version genommen werden, so sich nichts an der Grundstruktur geändert hat. Natürlich sollte man sich das ganze erst ansehen bevor man blind bestätigt.

An sich geht es relativ fix, man sollte sich aber natürlich schon die Zeit dafür nehmen.
 
Ich nutze freebsd-update auch auf meinen Produktivservern. Bisher habe ich das ganze sogar im laufenden Betrieb ohne Probleme gemacht. Damit war die Ausfallzeit auf 1-2 Reboots beschränkt. Wenn man einen eigenen Kernel nutzt/oder braucht und keinen Zugriff auf das System hat, muss man aufpassen, dass man nicht mit dem Generic-Kernel hochfährt. Hier greife ich immer ein, indem ich den alten Kernel wieder herstelle und den neuen Kernel testweise mit nextboot hochfahre. Es ist hilfreich, wenn man nur das nötigste an der Konfiguration geändert hat und nicht alles mögliche angefasst hat. Dann wird der Update Prozess ziemlich stressfrei.

Das einzige was mir bisher Probleme gemacht hat waren die Packages. Dort habe ich jedesmal alles Deinstalliert, Neuinstalliert und die Konfiguration wieder eingespielt. Da bin ich jetzt gespannt auf pkg in FreeBSD 9.1.
 
Beim GENERIC Kernel kann ich auch nur freebsd-update empfehlen. Bei mir lief das auch immer ohne Probleme durch. Innerhalb von wenigen Minuten erledigt.
 
Ja..."freebsd-update" ist wirklich schmerzlos und komfortabel. Verwende ich auch seit Jahren im Produktiveinsatz.

Zu beachten: Wenn du zwischen Major-Releases updatest (8.x -> 9.x) musst du höchstwahrscheinlich all deine installierten Ports neu kompilieren/updated um an das neue System anzupassen. Das kann...je nach Anzahl der Ports doch länger dauern, und oft bricht auch mal was dabei. (ich hoffe diese Situation bessert sich jetzt mit 9.1 und dem neuen "pkg").

Wenn du nur von 8.2 auf 8.3 updatest bist du in ein paar Minuten fertig und brauchst normalerweise keine Ports neu kompilieren.

Das aktualisieren der Config-Dateien ist normalerweise auch einfach...ein paar Fallstricke gibt es jedoch, z. B. wenn sich am Format der Config-Datei irgendwas geändert hat (so hatte kürzlich z.B. bei mir "bind" nicht mehr funktioniert, weil sich was geändert hatte und der neue Bind meine alte Config nicht mehr akzeptieren wollte).

Solltest du FreeBSD Jails verwenden, musst du diese anschließend nochmals separat updaten, da das Basejail nicht vom normalen FreeBSD-Update mit aktualisiert wird. Auch hier gilt es dann nochmals in allen Jails separat die Config-Files zu kontrollieren/zu aktualisieren, falls nötig.
 
freebsd-update(8) hat noch ein nettes Feature für die Nutzer eigener Kernel. Wie bekannt ist, aktualisiert freebsd-update(8) keine selbstgebauten Kernel, da es das natürlich nicht kann. Wenn allerdings ein GENERIC unter /boot/GENERIC liegt, wird der stattdessen aktualisiert. Also einmal noch der Installation ein "cp -r /boot/kernel /boot/GENERIC" machen und schon hat man ein GENERIC als Fallback, der immer aktuell gehalten wird.
 
Gibt es eigentlich eine Möglichkeit dieses ganze etc-config-file-Gefrickel bei so einem Update abzukürzen oder zu automatisieren?
Das hält mich ja immer davon ab, denn ich hocke dann einen halbe Tag vor so einer Kiste und lese Skripte, die ich kaum verstehe. :D :cool:
 
Also so einen Automatismus will man eigentlich gar nicht. Das Update ist durch freebsd-update ja schon ziemlich automatisiert. Es spuckt dir dann nur noch die diffs der Konfigfiles aus. Meist sind die Unterschiede dann eh nur eine Versionsanpassung im Kommentarbereich.
Die Files die du geändert hast kennst du ja im Allgemeinen.

Du musst ja um Himmels Willen nicht die ganzen Scripte lesen.

Ich hatte einmal ein Gentoo "auf die Schnelle" aktualisiert.... Ergebnis meiner Faulheit 20 Minuten diffs anzusehen war ein nicht mehr bootbares System und viel Arbeit.... ;)

edit: Achso, warum will man so einen Automatismus nicht? Weil das der kleine Bereich ist in dem Verstand benötigt wird und dazu ist ein Automatismus nicht in der Lage. Denk nur daran, dass du an einem File was geändert hast und gleichzeitig änderte sich sie Syntax des Files in der neuen Version. Das System könnte das nie selbst zusammen bekommen. Egal welche Version es nehmen würde, dein System macht nicht was es soll.
 
Ich kann immer wieder nur einen Tipp geben: sysutils/etcupdate aus den Ports, in 10-CURRENT auch im Basissystem. Das Ding macht einen echten Three-Way-Merge aller Konfigurationsdateien und stellt sich daher wesentlich intelligenter als mergemaster an. Wichtig ist nur, dass einmal mit den alten Sourcen ausgeführt werden muss!
 
Zu beachten: Wenn du zwischen Major-Releases updatest (8.x -> 9.x) musst du höchstwahrscheinlich all deine installierten Ports neu kompilieren/updated um an das neue System anzupassen. ...
Das ist meiner Meinung nach selten der Mühe nicht wert. Compat Port drauf und gut ist.
 
Ich kann immer wieder nur einen Tipp geben: sysutils/etcupdate aus den Ports, in 10-CURRENT auch im Basissystem. Das Ding macht einen echten Three-Way-Merge aller Konfigurationsdateien und stellt sich daher wesentlich intelligenter als mergemaster an. Wichtig ist nur, dass einmal mit den alten Sourcen ausgeführt werden muss!

Das habe ich mir gerade mal installiert und kurz die man-page überflogen, bisher war es mir unbekannt.

Kannst du mir helfen und eine kurze Abfolge, eine Reihenfolge angeben, wie diese Befehle nun genutzt werden sollen?

freebsd-update versucht sich ja daran, die Configs, auch in /etc, neu zu schreiben. Wenn ich also erst einen freebsd-update anwerfe und die Probleme fixe, dann brauche ich doch kein etcupdate mehr?
Wenn ich erst etcupdate anwerfe und laufen lasse, hat es keinen Grund, irgendwas zu verändern, weil ich ja freebsd-update noch nicht habe laufen lassen?

Lasse ich freebsd-update laufen, ignoriere alle vorgeschlagenen Änderungen oder breche an dieser Stelle sogar ab und lasse dann erst mal etcupdate laufen? Mache ich also mehr oder weniger dies?:
freebsd-update fetch
etcupdate
freebsd-update install
 
Die Option -a in Portmaster aktualisiert alle Ports zu denen es eine neue Version gibt:
-a check all ports, update as necessary

Wenn es jedoch keine neue Version gibt aktualisiert er sie auch nicht. Nur weil sie gegen eine ältere Lib-Version gelinkt wurden erkennt portmaster das ja nicht.
 
Zurück
Oben