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.

FreeBSD – wie ich dazu kam

FreeBSD nutze ich seit Version 2, also etwa seit 1992.

Meine ersten Gehversuche hatte ich damals mit einer DLD 0.99pl15 und wurde irgendwie gar nicht glücklich. Da ich 1990 vom Apple //e auf Macintosh umstieg, war der Mac für mich das ideale System geworden. Netzwerktechnisch verstand dieser allerdings nur Appletalk, dafür gab es in der freien unix-Welt 2 Lösungen: CAP (Columbia Appletalk Package) und netaltalk. Beide bedingten allerdings ein paar Spezifitäten im TCP-Stack, welche unter Linux damals nicht verfügbar waren. Unter BSD aber.

Also, FreeBSD probiert (und netBSD auch mal 😀 )

Dez 1994 kam FreeBSD 2.2.5, unter welchem ich rund 8 Jahre die Quark LU2 (Maus-Mailbox) betrieben habe (inclusive manchem Systemupdate) – welche damit die schnellste Tauschbox im MausNet wurde, ohne, daß die Outfiles vorgepackt sein mussten.

Mittlerweile betreibe ich FreeBSD in der Version 12-STABLE, seit Jahren bevorzuge ich den STABLE-tree, da dieser für Stabilität steht.