FreeBSD – Systemaktualisierung

In den Anfangszeiten nutzte ich lange das ctm um den source zu aktualisieren, vor einigen Jahren wurde dieser beerdigt und ich bin auf svn umgestiegen. Alte Gepflogenheiten ändert man nicht, also kein „freebsd-update“ oder „Package-update“ – immer selbst kompilieren…

svn checkout scv://svn.freebsd.org/base/stable/12 /usr/src/

dies kopiert/aktualisiert unter /usr/src mit den aktuellsten Änderungen.

im /usr/src findet sich dann das README, in welchem die Aktualisierung beschrieben wird, mit make buildworld und make buildkernel, make installkernel.
Hat man eine multicore-Architektur zur Verfügung, kann man mit <make -j 4 buildworld> die Kompilierung auf 4 cores erweitern.
Beim buildkernel wurde mir davon abgeraten. Wenn ich einen Versionssprung mache, oder der compiler aktualisiert wird, baue ich das System nach der ersten Aktualisierung und reboot gleich nochmal neu…

Eine sehr praktische Sache ist auch der „Ports“ Bereich, hier sind die Programme, welche nicht Bestandteil des Betriebssystems sind, also zB firefox, thunderbird, Samba, gimp, u.v.m.

Die Ports-source holt man sich mit:

svn checkout svn://svn.freebsd.org/ports/head /usr/ports/

Als erstes empfehle ich die Installation vom portmaster:

cd /usr/ports/ports-mgmt/portmaster/
make install

damit manage ich die Port-Installationen und Aktualisierungen.
Wichtig!!! – auch hier gibt es einen Readme (im Ports-Verzeichnis), welcher vor Aktualisierungen unbedingt gelesen werden sollte (bei Neu-Installationen ist das hinfällig 😉 )
Der portmaster löst einem erforderlichen Abhängigkeit auf und klappert alles in einem Rutsch ab – Beispiel:

portmaster -d --force-config sysutils/rsync

Bei einer Neu-Installation ist das Mutterverzeichnis wichtig, ohne geht es nicht. Bei Aktualisierungen reicht der Port-Name.
–force-config bewirkt, das bei verfügbaren Optionen diese vor der Kompilierung aktiviert oder deaktiviert werden können. Manchmal sind das Sachen wie CUPS für zum Drucken oder SSE-Unterstützung und so…
-d steht dafür das unter Ports/distfiles/ die alten Pakete ohne Nachfrage gelöscht werden (aufgeräumt).

Irgendwann, wenn man mal das System aktualisiert hat, will man auch die Ports, zB wegen Sicherheitsfixes aktualisieren, dann möchte man sich zB eine Liste erstellen lassen, was alles aktualisiert werden möchte:

portmaster -L | egrep -B1 '(ew|ort) version|Aborting|installed|dependencies| IGNORE|marked|Reason:|MOVED|deleted' | grep -v '^--' | less

Das less kann jeder handhaben wie er möchte, ist aber praktisch, mal drüber zu schauen und querzuchecken mit dem README, ob man ggfs das ein oder andere zu beachten hat. Speziell vorherige Läufe zwecks DeInstallationen oder library-Umstellungen…

Wenn man alles Aktualisieren möchte, bietet sich auch:

portmaster -a -d

Damit werden alle Ports aktualisiert, für welche Updates verfügbar sind.