====== Allgemein ======
Um ein System sicher zu halten können [[Jail erstellen | Jails]] verwendet werden. Eine Jail kann jedoch nur sicher sein wenn die darin laufende Software alle aktuellen Sicherheitspatches enthält. Um dies sicher zu stellen muss die Jail hin und wieder aktualisiert werden. Dies soll im weiteren Verlauf dieses Artikels erläutert werden. Die Ports werden wie gewohnt [[Ports updaten | aktualisiert]].
====== Binärupdate ======
Wurde eine Jail aus Binärpaketen installier (also nicht selbst kompiliert) so ist das Update mit Binärpaketen ebenso einfach.
Vorausgesetzt die Jail liegt in dem Pfad ///usr/local/jails/testjail/// so wird im Host-System einfach folgender Befehl abgesetzt:
# freebsd-update -b /usr/local/jails/testjail/ fetch install
====== Update aus den Systemquellen ======
Um eine Jail aus den Quellen zu übersetzen und zu aktualisieren ist die Arbeitsweise etwas länger
===== Voraussetzungen =====
Um eine vorhandene Jail zu updaten muss sinnvollerweise eine funktionierende Jail vorliegen (die aktualisiert werden soll). Des Weiteren müssen im Verzeichnis ///usr/src// des Hostsystems die [[Systemquellen aktualisieren | Systemquellen installiert und aktuell]] sein. Zusätzlich sollte ein Backup aller Daten vorliegen.
Vor jeder Aktualisierung einer Jail muss zunächst das [[FreeBSD updaten | Hostsystem aktualisiert]] sein!
Im Weiteren wird davon ausgegangen, dass die zu aktualisierende Jail im Verzeichnis ///usr/local/jails/testjail// des Hostsystems abgelegt ist.
===== Update der Jail =====
Die Aktualisierung erfolgt komplett im Hostsystem! Das heißt alle Befehle werden im Hostsystem ausgeführt.
Vor der Aktualisierung sollte die zu aktualisierende Jail beendet werden.
==== Unter /usr/src arbeiten ====
Zunächst wird ins Verzeichnis der aktuellen Systemquellen gewechselt.
# cd /usr/src
==== Systemquellen übersetzen ====
Anschließend kann das System neu kompiliert werden (immer noch im Verzeichnis ///usr/src//). Ist dies schon im Rahmen eines Updates des Hostsystems erfolgt muss kein weiteres Mal kompiliert werden und dieser Punkt kann übersprungen werden. (Ein Host-Update mittels **freebsd-update** erzeugt keine Neukompilierung der Quellen!)
Ist eine Kompilierung notwendig sollten die alten Daten unter **/usr/obj** gelöscht werden (hier landen die Ergebnisse der Kompilevorgangs):
# cd /usr/obj
# chflags -R noschg *
# rm -rf *
# cd /usr/src
Dann kann das System kompiliert werden:
# make buildworld
==== Wichtigste Konfigurationsdateien migrieren ====
Seit FreeBSD 10.0 ist //etcupdate// zum Migrieren der Konfigurationsdateien in FreeBSD enthalten. Alle älteren Systeme können das Werkzeug aus //sysutils/etcupdate// installieren.
Wird //etcupdate// das **aller erste Mal auf dieser Jail** verwendet muss es zunächst die aktuellen Konfigurationsdateien einlesen. (Dieser Schritt ist bei späteren Updates nicht mehr notwendig).
# etcupdate extract -D /usr/local/jails/testjail
Vor der Installation des Systems müssen evtl. notwendige erste Anpassungen an Konfigurationsdateien vorgenommen werden.
# mergemaster -p -D /usr/local/jails/testjail
==== Übersetztes System installieren ====
Liegt ein kompiliertes, aktuelles System vor kann dieses in die Jail installiert werden. Hierzu wird folgender Aufruf verwendet:
# make installworld DESTDIR=/usr/local/jails/testjail
==== Restliche Konfigurationsdateien migrieren ====
Nach Installation des neuen Systems müssen die Konfigurationsdateien migriert werden.
# etcupdate -D /usr/local/jails/testjail
Nachdem alle Schritte durchgeführt wurden sollte die Jail auf dem aktuellen Stand sein und kann nun neu gestartet werden.