Index: head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml (revision 47644) +++ head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml (revision 47645) @@ -1,3306 +1,3404 @@ &os; aktualisieren JimMockUmstrukturiert und aktualisiert von JordanHubbardIm Original von Poul-HenningKamp JohnPolstra NikClayton MartinHeinenÜbersetzt von Übersicht &os; wird zwischen einzelnen Releases ständig weiter entwickelt. Manche Leute bevorzugen die offiziellen Release-Versionen, während andere wiederum lieber auf dem aktuellen Stand der Entwicklung bleiben möchten. Wie dem auch sei, sogar offizielle Release-Versionen werden oft mit Sicherheitsaktualisierungen und anderen kritischen Fehlerbereinigungen versorgt. Unabhängig von der eingesetzten Version bringt &os; alle nötigen Werkzeuge mit, um ihr System aktuell zu halten und es innerhalb verschiedener Versionen zu aktualisieren. Dieses Kapitel hilft Ihnen bei der Entscheidung, ob Sie mit dem Entwicklungssystem Schritt halten oder ein Release verwenden wollen. Die zugrundeliegenden Werkzeuge um Ihr System aktuell zu halten werden ebenfalls vorgestellt. Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen, welche Werkzeuge verwendet werden können, um das System und die Port-Sammlung zu aktualisieren. wissen, wie Sie Ihr System mit freebsd-update, Subversion, CVSup, CVS oder CTM aktualisieren. wissen, wie man das aktuell installierte System mit einer ursprünglichen Version vergleicht. wissen, wie Sie ihre Dokumentation mit Subversion oder Dokumentations-Ports aktuell halten können. den Unterschied zwischen den beiden Entwicklungszweigen &os.stable; und &os.current; kennen. Wissen, wie Sie das komplette Basissystem mit make buildworld neu bauen und installieren. Bevor Sie dieses Kapitel lesen, sollten Sie Ihr Netzwerk richtig konfiguriert haben () und wissen, wie Sie Software Dritter installieren (). Im gesamten Kapitel wird der Befehl svn verwendet, um die &os; Quellen zu beziehen und zu aktualisieren. Um es zu verwenden, müssen Sie den Port oder das Paket devel/subversion installieren. &os;-Update TomRhodesGeschrieben von ColinPercivalBasierend auf bereitgestellten Mitschriften von BenedictReuschlingÜbersetzt von Updating and Upgrading freebsd-update updating-upgrading Das Einspielen von Sicherheitsaktualisierungen ist ein wichtiger Bestandteil bei der Wartung von Computersoftware, besonders wenn es um das Betriebssystem geht. Für lange Zeit war dieser Prozess unter &os; nicht einfach. Fehlerbehebungen mussten auf den Quellcode angewendet werden, danach wurde der Code zu neuen Binärdateien übersetzt und schliesslich mussten diese Dateien neu installiert werden. Das ist seit längerem nicht mehr der Fall, da &os; jetzt ein Werkzeug namens freebsd-update enthält. Dieses Werkzeug bringt zwei getrennte Funktionen mit sich. Die erste Funktion ermöglicht die Anwendung von Sicherheitsaktualisierungen im Binärformat auf das &os; Basissystem, ohne dieses neu zu übersetzen und zu installieren. Die zweite Funktion unterstützt Aktualisierungen zwischen Haupt- und Unterversionen. Binäre Aktualisierungen sind für alle Architekturen und Releases verfügbar, die aktuell vom &os; Security Team betreut werden. Vor der Aktualisierung auf eine neue Release-Version sollten die aktuellen Ankündigungen zu dem Release gelesen werden, da diese wichtige Informationen zu der gewünschten Version enthalten. Diese Ankündigungen finden Sie unter dem folgenden Link: http://www.FreeBSD.org/releases/. Wenn eine crontab existiert, welche die Eigenschaften von freebsd-update verwendet, muss diese deaktiviert werden, bevor die folgende Aktion gestartet wird. Die Konfigurationsdatei Manche Anwender möchten sicherlich Einstellungen in der Standard-Konfigurationsdatei unter /etc/freebsd-update.conf vornehmen, um bessere Kontrolle über den gesamten Prozess zu besitzen. Die Optionen sind sehr gut dokumentiert, jedoch benötigen die folgenden ein paar zusätzliche Erklärungen: # Components of the base system which should be kept updated. Components src world kernel Dieser Parameter kontrolliert, welche Teile von &os; auf dem aktuellen Stand gehalten werden sollen. Die Voreinstellung ist es, den Quellcode zu aktualisieren, das gesamte Basissystem sowie den Kernel. Die Komponenten sind die gleichen wie während der Installation, also würde beispielsweise das hinzufügen von world/games an dieser Stelle es erlauben, Aktualisierungen für Spiele anzuwenden. Die Verwendung von src/bin erlaubt es, den Quellcode in src/bin aktuell zu halten. Die beste Einstellung ist, diese Option so zu belassen, da eine Änderung es bedingt, dass man als Benutzer jede Komponente auflisten muss, die aktualisiert werden soll. Dies könnte katastrophale Folgen nach sich ziehen, da der Quellcode und die Binärdateien dadurch nicht mehr synchron wären. # Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. IgnorePaths Fügen Sie Pfade wie /bin oder /sbin hinzu, um diese speziellen Verzeichnisse während des Aktualisierungsprozesses unberührt zu lassen. Diese Option kann verwendet werden, um zu verhindern, dass freebsd-update lokale Änderungen überschreibt. # Paths which start with anything matching an entry in an UpdateIfUnmodified # statement will only be updated if the contents of the file have not been # modified by the user (unless changes are merged; see below). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile Aktualisieren Sie Konfigurationsdateien in den angegebenen Verzeichnissen nur, wenn diese nicht geändert wurden. Jegliche Änderung, die der Benutzer daran vorgenommen hat, wird die automatische Aktualisierung dieser Dateien ungültig machen. Es gibt eine weitere Option KeepModifiedMetadata, die freebsd-update instruiert, die Änderungen während der Zusammenführung zu speichern. # When upgrading to a new &os; release, files which match MergeChanges # will have any local changes merged into the version from the new release. MergeChanges /etc/ /var/named/etc/ Eine Liste von Verzeichnissen mit Konfigurationsdateien, in denen freebsd-update Zusammenführungen versuchen soll. Dieser Verschmelzungsprozess von Dateien ist eine Serie von &man.diff.1;-Korrekturen, ähnlich wie &man.mergemaster.8; mit weniger Optionen. Die Änderungen werden entweder akzeptiert, öffnen einen Editor oder freebsd-update bricht ab. Wenn Sie im Zweifel sind, sichern Sie das /etc Verzeichnis und akzeptieren einfach die Änderungen. Lesen Sie , um Informationen über das mergemaster-Kommando zu erhalten. # Directory in which to store downloaded updates and temporary # files used by &os; Update. # WorkDir /var/db/freebsd-update In diesem Verzeichnis werden alle Korrekturen und temporären Dateien abgelegt. Für Fälle in denen der Anwender eine Versionsaktualisierung vornimmt, sollte diesem Verzeichnis mindestens ein Gigabyte Festplattenspeicher zur Verfügung stehen. # When upgrading between releases, should the list of Components be # read strictly (StrictComponents yes) or merely as a list of components # which *might* be installed of which &os; Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no Wenn dies auf yes gesetzt ist, wird freebsd-update annehmen, dass die Components-Liste vollständig ist und nicht versuchen, Änderungen ausserhalb dieser Liste zu tätigen. Tatsächlich wird freebsd-update versuchen, jede Datei zu aktualisieren, die zu der Components-Liste gehört. Sicherheitsaktualisierungen Sicherheitsaktualisierungen sind auf einer entfernten Maschine abgelegt und können durch das folgende Kommando heruntergeladen und installiert werden: &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Wenn irgendeine Änderung auf den Kernel angewendet wurde benötigt das System einen Neustart. Wenn alles gut verlaufen ist, sollte das System aktualisiert sein und freebsd-update kann als nächtlicher &man.cron.8;-Job ablaufen. Ein Eintrag in der Datei /etc/crontab ist für diese Aufgabe ausreichend: @daily root freebsd-update cron Dieser Eintrag besagt, dass einmal am Tag freebsd-update ausgeführt wird. Auf diese Weise kann freebsd-update nur durch die Verwendung des -Arguments prüfen, ob Aktualisierungen vorliegen. Wenn Korrekturen existieren, werden diese automatisch auf die lokale Festplatte heruntergeladen, aber nicht eingespielt. Der root-Benutzer bekommt eine Nachricht, damit dieser die Korrekturen manuell installiert. Sollte irgendetwas schief gelaufen sein, kann freebsd-update den letzten Satz von Änderungen mit dem folgenden Befehl zurückrollen: &prompt.root; freebsd-update rollback Sobald dieser Vorgang abgeschlossen ist, sollte das System neu gestartet werden, wenn der Kernel oder ein beliebiges Kernelmodul geändert wurde. Dies ermöglicht es &os;, die neuen Binärdateien in den Hauptspeicher zu laden. Das freebsd-update-Werkzeug kann nur den GENERIC-Kernel automatisch aktualisieren. Wenn ein selbstkonfigurierter Kernel verwendet wird, muss dieser neu erstellt und installiert werden, nachdem freebsd-update den Rest der Aktualisierungen durchgeführt hat. Allerdings wird freebsd-update den GENERIC-Kernel in /boot/GENERIC erkennen und aktualisieren (falls dieser existiert), sogar dann, wenn dies nicht der aktuell verwendete Kernel des Systems ist. Es ist eine gute Idee, immer eine Kopie des GENERIC-Kernels in /boot/GENERIC aufzubewahren. Das wird bei der Diagnose von verschiedenen Problemen eine grosse Hilfe sein, sowie bei der Durchführung von Versionsaktualisierungen mit freebsd-update, wie in beschrieben ist. Solange die Standardkonfiguration in /etc/freebsd-update.conf nicht geändert wurde, wird freebsd-update die aktualisierten Quellcodedateien des Kernels zusammen mit dem Rest der Neuerungen installieren. Die erneute Übersetzung und Installation ihres neuen, selbstkonfigurierten Kernels kann dann auf die übliche Art und Weise durchgeführt werden. Die Aktualisierungen, die über freebsd-update verteilt werden, betreffen nicht immer den Kernel. Es ist nicht notwendig, den selbstkonfigurierten Kernel neu zu erstellen, wenn die Kernelquellen nicht durch die Ausführung von freebsd-update install geändert wurden. Allerdings wird freebsd-update auf alle Fälle die Datei /usr/src/sys/conf/newvers.sh aktualisieren. Der aktuelle Patch-Level (angegeben durch die -p-Nummer, die von dem Kommando uname -r ausgegeben wird) wird aus dieser Datei ausgelesen. Die Neuinstallation des selbstkonfigurierten Kernels, selbst wenn sich daran nichts geändert hat, erlaubt es &man.uname.1;, den aktuellen Patch-Level des Systems korrekt wiederzugeben. Dies ist besonders hilfreich, wenn mehrere Systeme gewartet werden, da es eine schnelle Einschätzung der installierten Aktualisierungen in jedem einzelnen System ermöglicht. Aktualisierungen an Haupt- und Unterversionen Dieser Prozess entfernt alte Objekt-Dateien und Bibliotheken, was dazu führt, dass die meisten Anwendungen von Drittherstellern - nicht mehr funktionieren. Es wird empfohlen, dass alle installierten + nicht mehr funktionieren. Nach der Aktualisierung auf eine + neue Hauptversion wird empfohlen, dass alle installierten Ports entweder entfernt und neu installiert oder zu einem späteren Zeitpunkt mittels ports-mgmt/portupgrade aktualisiert werden. - Die meisten Anwender werden wahrscheinlich einen Testlauf mittels des - folgenden Kommandos durchführen wollen: + Um alle installierten Anwendungen neu zu bauen, geben Sie + folgendes ein: &prompt.root; portupgrade -af Dies sorgt dafür, dass alles korrekt neu installiert wird. Beachten Sie, dass das Setzen der BATCH-Umgebungsvariable auf yes während dieses Prozesses auf jede Eingabe mit ja antwortet, was es nicht mehr notwendig macht, manuell eingreifen zu müssen. - Wenn ein selbstkonfigurierter Kernel verwendet wird, ist der - Aktualisierungsprozess ein kleines bisschen aufwändiger. Eine - Kopie des GENERIC-Kernels wir benötigt und - sollte in /boot/GENERIC abgelegt - sein. Wenn der GENERIC-Kernel nicht bereits im - System vorhanden ist, kann dieser über eine der folgenden Methoden - bezogen werden: + + Umgang mit angepassten Kerneln - - - Wenn ein eigener Kernel genau einmal gebaut wurde, ist der - Kernel im Verzeichnis /boot/kernel.old in Wirklichkeit der - GENERIC-Kernel. Benennen Sie einfach dieses - Verzeichnis in /boot/GENERIC um. - + Wenn ein angepasster Kernel verwendet wird, ist der + Aktualisierungsprozess ein wenig aufwändiger und das + Vorgehen variiert je nach Version von &os;. - - Angenommen, direkter Zugriff auf die Maschine ist möglich, - so kann eine Kopie des GENERIC-Kernels von den - CD-ROM-Medien installiert werden. Legen Sie die Installations-CD - ein und benutzen Sie die folgenden Befehle: + + Angepasste Kernel unter &os; 8.X und + früher - &prompt.root; mount /cdrom + Eine Kopie des GENERIC-Kernel + wird benötigt und sollte in + /boot/GENERIC abgelegt sein. Wenn + der GENERIC-Kernel nicht bereits im + System vorhanden ist, kann er über eine der folgenden + Methoden bezogen werden: + + + + Wenn ein angepasster Kernel erstmalig gebaut + wurde, ist der Kernel in + /boot/kernel.old in Wirklichkeit + der GENERIC-Kernel. Benennen Sie + einfach dieses Verzeichnis in + /boot/GENERIC um. + + + + Angenommen, direkter Zugriff auf die Maschine ist + möglich, so kannn eine Kopie des + GENERIC-Kernels von den + CD-ROM-Medien installiert werden. Legen Sie die + Installations-CD ein und geben Sie folgende Befehle + ein: + + &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC - Ersetzen Sie X.Y-RELEASE - mit der richtigen Version der Veröffentlichung, die Sie - verwenden. Der GENERIC-Kernel wird - standardmässig in /boot/GENERIC installiert. - + Ersetzen Sie X.Y-RELEASE + mit der richtigen Version der Veröffentlichung, die + Sie verwenden. Der + GENERIC-Kernel wird standardmäßig + in /boot/GENERIC + installiert. + - - Falls alle obigen Schritte fehlschlagen, kann der - GENERIC-Kernel folgendermassen aus den Quellen - neu gebaut und installiert werden: + + Falls alle obigen Schritte fehlschlagen, kann der + GENERIC-Kernel folgendermassen + aus den Quellen neu gebaut und installiert + werden: - &prompt.root; cd /usr/src + &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot - Damit dieser Kernel als GENERIC-Kernel von - freebsd-update erkannt wird, darf die - GENERIC-Konfigurationsdatei in keiner Weise - geändert worden sein. Es wird ebenfalls empfohlen, dass - dieser ohne irgendwelche speziellen Optionen erstellt wird - (bevorzugt mit einer leeren - /etc/make.conf). - - + Damit dieser Kernel als + GENERIC-Kernel von + freebsd-update erkannt wird, darf + die GENERIC-Konfigurationsdatei + in keiner Weise geändert worden sein. Es wird + ebenfalls empfohlen, dass dieser ohne irgendwelche + speziellen Optionen erstellt wird (bevorzugt mit einer + leeren /etc/make.conf). + + - Der Neustart in den GENERIC-Kernel ist zu - diesem Zeitpunkt nicht notwendig. + Der Neustart in den + GENERIC-Kernel ist zu diesem + Zeitpunkt nicht notwendig. + - Aktualisierungen an Haupt- und Unterversionen können - durchgeführt werden, wenn man freebsd-update - eine Release-Version als Ziel übergibt. Beispielsweise wird das - folgende Kommando das System auf &os; 8.1 aktualisieren: + + Angepasste Kernel unter &os; 9.X und + später - &prompt.root; freebsd-update -r 8.1-RELEASE upgrade + + + Wenn ein angepasster Kernel erstmalig gebaut + wurde, ist der Kernel in + /boot/kernel.old in Wirklichkeit + der GENERIC-Kernel. Benennen Sie + einfach dieses Verzeichnis in + /boot/GENERIC um. + - Nachdem das Kommando empfangen wurde, überprüft - freebsd-update die Konfigurationsdatei und das - aktuelle System, um die nötigen Informationen für die - Systemaktualisierung zu sammeln. Eine Bildschirmausgabe wird anzeigen, - welche Komponenten erkannt und welche nicht erkannt wurden. - Zum Beispiel: + + Angenommen, direkter Zugriff auf die Maschine ist + möglich, so kannn eine Kopie des + GENERIC-Kernels von den + CD-ROM-Medien installiert werden. Legen Sie die + Installations-CD ein und geben Sie folgende Befehle + ein: - Looking up update.FreeBSD.org mirrors... 1 mirrors found. + &prompt.root; mount /cdrom +&prompt.root; cd /cdrom/usr/freebsd-dist +&prompt.root; tar -C/ -xvf kernel.txz boot/kernel/kernel + + + + Wenn die oben genannten Optionen nicht verwendet + werden können, kann der + GENERIC-Kernel aus den Quellen + neu gebaut und installiert werden: + + &prompt.root; cd /usr/src +&prompt.root; make kernel + + Damit dieser Kernel als + GENERIC-Kernel von + freebsd-update erkannt wird, darf + die GENERIC-Konfigurationsdatei + in keiner Weise geändert worden sein. Es wird + ebenfalls empfohlen, dass dieser ohne irgendwelche + speziellen Optionen erstellt wird (bevorzugt mit einer + leeren /etc/make.conf). + + + + Der Neustart in den + GENERIC-Kernel ist zu diesem + Zeitpunkt nicht notwendig. + + + + + Die Aktualisierung durchführen + + Aktualisierungen an Haupt- und Unterversionen können + durchgeführt werden, wenn man + freebsd-update eine Release-Version als + Ziel übergibt. Beispielsweise wird das folgende Kommando + das System auf &os; 8.1 aktualisieren: + + &prompt.root; freebsd-update -r 8.1-RELEASE upgrade + + Nachdem das Kommando empfangen wurde, überprüft + freebsd-update die Konfigurationsdatei + und das aktuelle System, um die nötigen Informationen für + die Systemaktualisierung zu sammeln. Eine Bildschirmausgabe + wird anzeigen, welche Komponenten erkannt und welche nicht + erkannt wurden. Zum Beispiel: + + Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y - An diesem Punkt wird freebsd-update versuchen, - alle notwendigen Dateien für die Aktualisierung herunter zu laden. - In manchen Fällen wird der Benutzer mit Fragen konfrontiert, um - festzustellen, was installiert werden soll oder auf welche Art und - Weise fortgesetzt werden soll. + An diesem Punkt wird freebsd-update + versuchen, alle notwendigen Dateien für die Aktualisierung + herunter zu laden. In manchen Fällen wird der Benutzer mit + Fragen konfrontiert, um festzustellen, was installiert + werden soll oder auf welche Art und Weise fortgesetzt + werden soll. - Wenn ein selbstkonfigurierter Kernel benutzt wird, produziert der - vorherige Schritt eine Warnung ähnlich zu der folgenden: + Wenn ein angepasster Kernel benutzt wird, produziert der + vorherige Schritt eine Warnung ähnlich zu der + folgenden: - WARNING: This system is running a "MYKERNEL" kernel, which is not a + WARNING: This system is running a " +MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" - Diese Warnung kann an dieser Stelle problemlos ignoriert - werden. Der aktualisierte GENERIC-Kernel wird als - ein Zwischenschritt im Aktualisierungsprozess verwendet. + Diese Warnung kann an dieser Stelle problemlos ignoriert + werden. Der aktualisierte + GENERIC-Kernel wird als ein + Zwischenschritt im Aktualisierungsprozess verwendet. - Nachdem alle Korrekturen auf das lokale System heruntergeladen - wurden, werden diese nun eingespielt. Dieser Prozess kann eine gewisse - Zeit in Anspruch nehmen, abhängig von der Geschwindigkeit und - Auslastung der Maschine. Konfigurationsdateien werden ebenfalls - zusammengefügt - dieser Teil der Prozedur benötigt einige - Benutzereingaben, da eine Datei möglicherweise von Hand - zusammengefasst werden muss oder ein Editor erscheint auf dem - Bildschirm zum manuellen bearbeiten. Die Ergebnisse von jeder - erfolgreichen Zusammenfassung werden dem Benutzer angezeigt, - während der Prozess weiterläuft. Eine fehlgeschlagene oder - ignorierte Zusammenfassung wird den Prozess sofort beenden. Benutzer - sollten eine Sicherung von /etc - anlegen und wichtige Dateien später manuell vereinen, - beispielsweise master.passwd oder - group. + Nachdem alle Korrekturen auf das lokale System + heruntergeladen wurden, werden diese nun eingespielt. + Dieser Prozess kann eine gewisse Zeit in Anspruch nehmen, + abhängig von der Geschwindigkeit und Auslastung der + Maschine. Konfigurationsdateien werden ebenfalls + zusammengefügt — dieser Teil der Prozedur + verlangt einige Benutzereingaben, da eine Datei + möglicherweise von Hand zusammengefasst werden muss oder ein + Editor erscheint auf dem Bildschirm zum manuellen + bearbeiten. Die Ergebnisse von jeder erfolgreichen + Zusammenfassung werden dem Benutzer angezeigt, während der + Prozess weiter läuft. Eine fehlgeschlagene oder ignorierte + Zusammenfassung wird den Prozess sofort beenden. Benutzer + sollten eine Sicherung von /etc anlegen + und wichtige Dateien später manuell vereinen, beispielsweise + master.passwd oder + group. - - Das System ist noch nicht verändert worden, alle Korrekturen - und Vereinigungen sind in einem anderen Verzeichnis vorgenommen - worden. Wenn alle Korrekturen erfolgreich eingespielt, alle - Konfigurationsdateien zusammengefügt wurden und es den Anschein - hat, dass der Prozess problemlos verlaufen wird, müssen die - Änderungen vom Anwender noch angewendet werden. - + + Das System ist zu diesem Zeitpunkt noch nicht + verändert worden. Alle Korrekturen und Vereinigungen sind + in einem anderen Verzeichnis vorgenommen worden. Wenn + alle Korrekturen erfolgreich eingespielt, alle + Konfigurationsdateien zusammengefügt wurden und es den + Anschein hat, dass der Prozess problemlos verlaufen wird, + müssen die Änderungen vom Anwender noch angewendet + werden. + - Sobald dieser Prozess abgeschlossen ist, können die - Aktualisierungen über das folgende Kommando auf die Platte - geschrieben werden: + Sobald dieser Prozess abgeschlossen ist, können die + Aktualisierungen über das folgende Kommando auf die Platte + geschrieben werden: - &prompt.root; freebsd-update install + &prompt.root; freebsd-update install - Der Kernel und die Module werden zuerst aktualisiert. Zu diesem - Zeitpunkt muss die Maschine neu gestartet werden. Wenn das System - einen selbstkonfigurierten Kernel verwendet, benutzen Sie das - &man.nextboot.8;-Kommando, um den Kernel für den nächsten - Neustart auf /boot/GENERIC zu - setzen (welcher aktualisiert wurde): + Der Kernel und die Module werden zuerst aktualisiert. Zu diesem + Zeitpunkt muss die Maschine neu gestartet werden. Wenn das System + einen angepassten Kernel verwendet, benutzen Sie das + &man.nextboot.8;-Kommando, um den Kernel für den nächsten + Neustart auf /boot/GENERIC zu + setzen (welcher aktualisiert wurde): - &prompt.root; nextboot -k GENERIC + &prompt.root; nextboot -k GENERIC - - Bevor mit dem GENERIC-Kernel das System neu - gestartet wird, vergewissern Sie sich, dass alle notwendigen Treiber - für ihr System enthalten sind, um korrekt zu starten (und - schliessen Sie ihn ans Netzwerk an, falls auf die Maschine, die - aktualisiert wird, von der Ferne aus zugegriffen wird). Achten Sie - besonders darauf, dass wenn der vorherige selbstkonfigurierte Kernel - Funktionalität beinhaltet, die von Kernelmodulen zur - Verfügung gestellt wurde, dass diese temporär in den - GENERIC-Kernel über die Datei - /boot/loader.conf übernommen werden. - Sie sollten ebenfalls nicht benötigte Dienste, eingehängte - Platten, verbundene Netzlaufwerke, usw. deaktivieren, bis der - Aktualisierungsprozess abgeschlossen ist. - + + Bevor mit dem GENERIC-Kernel das System neu + gestartet wird, vergewissern Sie sich, dass alle notwendigen Treiber + für ihr System enthalten sind, um korrekt zu starten (und + schließen Sie ihn ans Netzwerk an, falls auf die Maschine, die + aktualisiert wird, von der Ferne aus zugegriffen wird). Achten Sie + besonders darauf, dass wenn der vorherige angepasste Kernel + Funktionalität beinhaltet, die von Kernelmodulen zur + Verfügung gestellt wurde, dass diese temporär in den + GENERIC-Kernel über die Datei + /boot/loader.conf übernommen werden. + Sie sollten ebenfalls nicht benötigte Dienste, eingehängte + Platten, verbundene Netzlaufwerke, usw. deaktivieren, bis der + Aktualisierungsprozess abgeschlossen ist. + - Die Maschine sollte nun mit dem aktualisierten Kernel neu - gestartet werden: + Die Maschine sollte nun mit dem aktualisierten Kernel neu + gestartet werden: - &prompt.root; shutdown -r now + &prompt.root; shutdown -r now - Sobald das System wieder hochgefahren wurde, muss - freebsd-update erneut gestartet werden. Der Zustand - des Prozesses wurde zuvor gesichert und deshalb wird - freebsd-update nicht von vorne beginnen, jedoch alle - alten Shared-Libraries und Objektdateien löschen. Um zu diesem - Zustand zu gelangen, setzen Sie das folgende Kommando ab: + Sobald das System wieder hochgefahren wurde, muss + freebsd-update erneut gestartet werden. Der Zustand + des Prozesses wurde zuvor gesichert und deshalb wird + freebsd-update nicht von vorne beginnen, jedoch alle + alten Shared-Libraries und Objektdateien löschen. Um zu diesem + Zustand zu gelangen, setzen Sie das folgende Kommando ab: - &prompt.root; freebsd-update install + &prompt.root; freebsd-update install - - Abhängig davon, ob irgendwelche Bibliotheksversionen - erhöht wurden, kann es sein, dass nur zwei Installationsphasen - anstatt drei durchlaufen werden. - + + Abhängig davon, ob irgendwelche Bibliotheksversionen + erhöht wurden, kann es sein, dass nur zwei Installationsphasen + anstatt drei durchlaufen werden. + + - Nun muss alle Drittanbieter-Software neu erstellt und neu - installiert werden. Dies ist notwendig, da die installierte Software - möglicherweise Abhängigkeiten zu Bibliotheken enthält, - die während der Aktualisierung entfernt wurden. Der ports-mgmt/portupgrade-Befehl kann verwendet - werden, um diesen Vorgang zu automatisieren. Die folgenden Kommandos - können verwendet werden, um diesen Prozess zu starten: + + Neubau der Ports nach einer Aktualisierung auf eine + Hauptversion - &prompt.root; portupgrade -f ruby + + + Nach der Aktualisierung auf eine Hauptversion, muss + jegliche Drittanbieter-Software neu erstellt und + installiert werden. Dies ist notwendig, da die + installierte Software möglicherweise Abhängigkeiten zu + Bibliotheken enthält, die während der Aktualisierung + entfernt wurden. Der + ports-mgmt/portupgrade-Befehl kann + verwendet werden, um diesen Vorgang zu automatisieren. Die + folgenden Kommandos können verwendet werden, um diesen + Prozess zu starten: + + &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af - Sobald dies abgeschlossen ist, beenden Sie den - Aktualisierungsprozess mit einem letzten Aufruf von - freebsd-update. Geben Sie den folgenden Befehl ein, - um alle losen Enden des Aktualisierungsprozesses miteinander zu - verknüpfen: + Sobald dies abgeschlossen ist, beenden Sie den + Aktualisierungsprozess mit einem letzten Aufruf von + freebsd-update. Geben Sie den folgenden Befehl ein, + um alle losen Enden des Aktualisierungsprozesses miteinander zu + verknüpfen: - &prompt.root; freebsd-update install + &prompt.root; freebsd-update install - Wenn der GENERIC-Kernel temporär - Verwendung fand, ist dies der richtige Zeitpunkt, einen neuen, - selbstkonfigurierten Kernel zu bauen und über die übliche - Methode zu installieren. + Wenn der GENERIC-Kernel temporär + Verwendung fand, ist dies der richtige Zeitpunkt, einen neuen, + angepassten Kernel zu bauen und über die übliche + Methode zu installieren. - Booten Sie anschliessend die Maschine in die neue &os;-Version. - Der Prozess ist damit abgeschlossen. + Booten Sie anschließend die Maschine in die neue &os;-Version. + Der Prozess ist damit abgeschlossen. + Vergleich des Systemzustands Das freebsd-update-Werkzeug kann verwendet werden, um den Zustand der installierten &os;-Version gegenüber einer bekannten und funktionierenden Kopie zu vergleichen. Diese Option vergleicht die aktuelle Version von Systemwerkzeugen, Bibliotheken und Konfigurationsdateien. Um diesen Vergleich zu starten, geben Sie den folgenden Befehl ein: &prompt.root; freebsd-update IDS >> outfile.ids Obwohl der Befehlsname IDS lautet, sollte er in keiner Weise als Ersatz für ein Intrusion Detection System wie security/snort angesehen werden. Da freebsd-update seine Daten auf Platte ablegt, ist die Möglichkeit von Verfälschungen offensichtlich. Obwohl diese Möglichkeit durch die Verwendung von kern.securelevel oder die Ablage von freebsd-update auf einem Nur-Lese Dateisystem, wenn es gerade nicht gebraucht wird, eingedämmt werden kann, besteht eine bessere Lösung darin, das System gegen ein gesichertes Medium, wie eine DVD oder einen externen, separat aufbewahrten USB-Plattenspeicher, zu vergleichen. Das System wird jetzt untersucht und eine Liste von Dateien ausgegeben, zusammen mit deren &man.sha256.1;-Hashwerten, sowohl der von der Release-Version bekannte Wert als auch der des aktuell installierten Systems. Das ist der Grund dafür, warum die Ausgabe an die Datei outfile.ids geschickt wurde. Es scrollt zu schnell vorbei, um diese mit den Augen zu vergleichen und bald wird auch der Konsolenpuffer damit überfüllt. Diese Zeilen sind dazu noch extrem lang, aber das Ausgabeformat kann sehr einfach verarbeitet werden. Um beispielsweise eine Liste von allen Dateien zu erhalten, die sich vom aktuellen Release unterscheiden, geben Sie das folgende Kommando ein: &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf Diese Ausgabe wurde abgeschnitten, es existieren noch viel mehr Dateien dazu. Manche dieser Dateien besitzen ganz selbstverständliche Veränderungen, /etc/passwd wurde beispielsweise geändert, um Benutzer zum System hinzuzufügen. In manchen Fällen kann es anderen Dateien wie Kernelmodule geben, welche sich geändert haben, weil freebsd-update diese aktualisiert hat. Um bestimmte Dateien oder Verzeichnisse auszuschliessen, hängen Sie diese an die IDSIgnorePaths-Option in /etc/freebsd-update.conf an. Diese Vorgehensweise kann als Teil einer ausgeklügelten Aktualisierungsmethode benutzt werden, unabhängig von der zuvor angesprochenen Variante. Portsnap: Ein Werkzeug zur Aktualisierung der Ports-Sammlung TomRhodesGeschrieben von ColinPercivalBasierend auf bereitgestellten Mitschriften von BenedictReuschlingÜbersetzt von Updating and Upgrading Portsnap Updating and Upgrading Das Basissystem von &os; enthält auch ein Programm zum Aktualisieren der Ports-Sammlung: das &man.portsnap.8; Werkzeug. Wenn es ausgeführt wird, verbindet es sich mit einem entfernten Rechner, überprüft den Sicherungsschlüssel und lädt eine neue Kopie der Ports-Sammlung herunter. Der Schlüssel wird dazu verwendet, um die Integrität aller heruntergeladenen Dateien zu prüfen und um sicherzustellen, dass diese unterwegs nicht verändert wurden. Um die aktuellsten Dateien der Ports-Sammlung herunter zu laden, geben Sie das folgende Kommando ein: &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found. Fetching snapshot tag from geodns-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. Dieses Beispiel zeigt, dass &man.portsnap.8; mehrere Korrekturen für die aktuellen Ports-Daten gefunden und verifiziert hat. Es zeigt auch, dass das Programm zuvor schon einmal gestartet wurde. Wäre es das erste Mal, würde nur die Ports-Sammlung heruntergeladen werden. Wenn &man.portsnap.8; erfolgreich die fetch-Operation abgeschlossen hat, befinden sich die Ports-Sammlung und die dazugehörigen Korrekturen auf dem lokalen System, welches die Überprüfung bestanden hat. Wenn Sie portsnap das erste Mal ausgeführt haben, müssen Sie den Befehl portsnap extract verwenden, um die Ports-Sammlung zu installieren: &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... Um Ihre bereits installierte Ports-Sammlung zu aktualisieren, verwenden Sie hingegen den Parameter update: &prompt.root; portsnap update Der Prozess ist jetzt abgeschlossen und Anwendungen können mittels der aktuellen Ports-Sammlung installiert oder aktualisiert werden. Die Operationen fetch und extract oder update können auch nacheinander ausgeführt werden, wie im folgenden Beispiel gezeigt: &prompt.root; portsnap fetch update Dieser Befehl lädt die aktuelle Version der Ports-Sammlung herunter und aktualisiert anschließend Ihre lokale Version im Verzeichnis /usr/ports. Aktualisieren der Dokumentationssammlung BenedictReuschlingÜbersetzt von Updating and Upgrading Documentation Updating and Upgrading Neben dem Basissystem und der Ports-Sammlung ist die Dokumentation ein wichtiger Bestandteil des &os; Betriebssystems. Obwohl eine aktuelle Version der &os; Dokumentation jederzeit auf der &os; Webseite verfügbar ist, verfügen manche Benutzer nur über eine langsame oder überhaupt keine Netzwerkverbindung. Glücklicherweise gibt es mehrere Möglichkeiten, die Dokumentation, welche mit jeder Version ausgeliefert wird, zu aktualisieren, indem eine lokale Kopie der aktuellen &os;-Dokumentationssammlung verwendet wird. Verwenden von <application>Subversion</application> um die Dokumentation zu aktualisieren Die Dokumentationsquellen von &os; können mittels Subversion aktualisiert werden. Dieser Abschnitt beschreibt: Wie die Dokumentations-Werkzeugsammlung installiert wird, welche die Werkzeuge enthält, die nötig sind, um die &os; Dokumentation aus den Quellen neu zu erstellen. Wie man eine Kopie der Dokumentationsquellen nach /usr/doc herunterlädt, unter Verwendung von Subversion. Wie man die &os; Dokumentation aus den Quellen baut und unter /usr/share/doc installiert. Manche der Optionen zum Erstellen, die vom System zum Bauen der Dokumentation unterstützt werden, z.B. die Optionen welche nur ein paar der unterschiedlichen Sprachübersetzungen der Dokumentation erstellen oder die Optionen, die ein bestimmtes Ausgabeformat auswählen. <application>Subversion</application> und die Werkzeugsammlung der Dokumentation installieren Die &os; Dokumentation aus dem Quellen zu erstellen benötigt eine ziemlich grosse Anzahl an Werkzeugen. Diese Werkzeuge sind nicht Teil des &os; Basissystems, da sie eine grosse Menge an Plattenplatz verbrauchen und nicht von allen &os;-Anwendern benötigt werden. Sie sind nur für diejenigen Benutzer notwendig, die aktiv an neuer Dokumentation fü &os; schreiben oder häufig ihre Dokumentation aus den Quellen bauen lassen. Alle benötigten Werkzeuge sind als Teil der Ports-Sammlung verfügbar. Der Port textproc/docproj dient als Masterport, der vom &os; Documentation Project entwickelt wurde, um die initiale Installation und zukünftige Aktualisierungen dieser Werkzeuge zu vereinfachen. Wenn Sie die Dokumentation nicht als &postscript; oder PDF benötigen, können Sie alternativ die Installation des textproc/docproj-nojadetex-Ports in Erwägung ziehen. Diese Version der Dokumentations-Werkzeugsammlung enthält alles ausser das teTeX-Textsatzsystem. teTeX ist eine sehr grosse Sammlung an Werkzeugen, deshalb ist es vernünftig, deren Installation auszulassen, wenn die Ausgabe von PDF nicht unbedingt gebraucht wird. Subversion wird über den Port textproc/docproj mit installiert. Die Dokumentationsquellen aktualisieren Das Programm Subversion kann eine saubere Kopie der Dokumentationsquellen holen: &prompt.root; svn checkout svn://svn.freebsd.org/doc/head /usr/doc Es dauert eine Weile, wenn die Dokumentationsquellen das allererste Mal heruntergeladen werden. Lassen Sie es laufen, bis es fertig ist. Zukünftige Aktualisierungen der Dokumentationsquellen können wie folgt durchgeführt werden: &prompt.root; svn update /usr/doc Nachdem die Quellen einmal ausgecheckt wurden, besteht ein anderer Weg, die Dokumentation zu aktualisieren, durch das Makefile im Verzeichnis /usr/doc: &prompt.root; cd /usr/doc &prompt.root; make update Einstellbare Optionen der Dokumentationsquellen Das System zum aktualisieren und erstellen der &os;-Dokumentation unterstützt ein paar Optionen, welche den Prozess der Aktualisierung von Teilen der Dokumentation oder einer bestimmten Übersetzung erleichtert. Diese Optionen lassen sich entweder systemweit in der Datei /etc/make.conf setzen, oder als Kommandozeilenoptionen, die dem &man.make.1;-Werkzeug übergeben werden. Die folgenden Optionen sind ein paar davon: DOC_LANG Eine Liste von Sprachen und Kodierungen, die gebaut und installiert werden sollen, z.B. en_US.ISO8859-1, um nur die englische Dokumentation zu erhalten. FORMATS Ein einzelnes Format oder eine Liste von Ausgabeformaten, das gebaut werden soll. Momentan werden html, html-split, txt, ps, pdf, und rtf unterstützt. DOCDIR Wohin die Dokumentation installiert werden soll. Der Standardpfad ist /usr/share/doc. Für weitere make-Variablen, die als systemweite Optionen in &os; unterstützt werden, lesen Sie &man.make.conf.5;. Für weitere make-Variablen, die vom System zum Erstellen der &os;-Dokumentation unterstützt werden, lesen Sie die Fibel für neue Mitarbeiter des &os;-Dokumentationsprojekts. Die &os;-Dokumentation aus den Quellen installieren Wenn ein aktueller Schnappschuss der Dokumentationsquellen nach /usr/doc heruntergeladen wurde, ist alles bereit für eine Aktualisierung der bestehenden Dokumentation. Eine komplette Aktualisierung aller Sprachoptionen, definiert durch die DOC_LANG Makefile-Option, kann durch folgende Eingabe erreicht werden: &prompt.root; cd /usr/doc &prompt.root; make install clean Wenn nur eine Aktualisierung einer bestimmten Sprache gewünscht wird, kann &man.make.1; in einem sprachspezifischen Unterverzeichnis von /usr/doc aufgerufen werden, z.B.: &prompt.root; cd /usr/doc/en_US.ISO8859-1 &prompt.root; make update install clean Die zu installierenden Ausgabeformate können durch das Setzen der make-Variablen FORMATS angegeben werden, z.B.: &prompt.root; cd /usr/doc &prompt.root; make FORMATS='html html-split' install clean Verwendung von Dokumentations-Ports MarcFonvieilleBasierend auf der Arbeit von Updating and Upgrading documentation package Updating and Upgrading Im vorherigen Abschnitt wurde eine Methode gezeigt, wie die &os;-Dokumentation aus den Quellen gebaut werden kann. Allerdings sind quellbasierte Aktualisierungen möglicherweise nicht für alle &os;-Systeme geeignet oder praktikabel. Das Erstellen der Dokumentationsquellen benötigt eine grosse Anzahl an Werkzeugen, Programmen und Hilfsmitteln, die documentation toolchain, ein gewisser Grad an Vertrautheit mit Subversion und ausgecheckte Quellen von einem Repository, sowie ein paar manuelle Schritte, um diese ausgecheckten Quellen zu bauen. In diesem Abschnitt wird eine alternative Art und Weise vorgestellt, wie man die installierte Kopie der &os;-Dokumentation aktualisieren kann. Diese Methode verwendet die Ports-Sammlung und erlaubt es: vorgefertigte Schnappschüsse der Dokumentation herunter zu laden und zu installieren, ohne vorher irgendetwas lokal zu erstellen (dadurch ist es nicht mehr notwendig, den kompletten Werkzeugkasten der Dokumentation zu installieren). die Dokumentationsquellen herunterzuladen und durch das Ports-System erstellen zu lassen (was die Schritte zum Auschecken und Erstellen etwas erleichtert). Diese beiden Methoden der Aktualisierung der &os;-Dokumentation werden durch eine Menge von Dokumentations-Ports unterstützt, die von &a.doceng; monatlich aktualisiert wird. Diese sind in der Ports-Sammlung unter der virtuellen Kategorie, docs genannt, gelistet. Erstellen und Installieren von Dokumentations-Ports Die Dokumentations-Ports nutzen das Ports-System, um das Erstellen von Dokumentation wesentlich einfacher zu machen. Es automatisiert den Prozess des Auscheckens der Dokumentationsquellen, aufrufen von &man.make.1; mit den passenden Umgebungsvariablen und Kommandozeilenoptionen und macht die Installation und Deinstallation von Dokumentation so einfach wie die Installation von jedem anderen Port oder Paket. Als zusätzliche Eigenschaft zeichnen sie eine Abhängigkeit zum Dokumentations-Werkzeugsatz auf, wenn die Dokumentations-Ports lokal erstellt werden, weshalb dieser auch automatisch mitinstalliert wird. Die Dokumentations-Ports sind wie folgt organisiert: Es existiert ein Master-Port, misc/freebsd-doc-en, in dem alle Dateien zu den Dokumentations-Ports abgelegt sind. Es dient als Basis für alle Dokumentations-Ports. Als Voreinstellung wird nur die englische Dokumentation gebaut. Es gibt einen Alles-in-Einem-Port, misc/freebsd-doc-all, welcher die komplette Dokumentation in allen verfügbaren Sprachen erstellt und installiert. Schliesslich gibt es noch einen sogenannten slave port für jede Übersetzung, z.B.: misc/freebsd-doc-hu für Dokumentation in ungarischer Sprache. All diese benötigen den Master-Port und installieren die übersetzte Dokumentation in der entsprechenden Sprache. Um einen Dokumentations-Port aus den Quellen zu installieren, geben Sie das folgende Kommando (als root) ein: &prompt.root; cd /usr/ports/misc/freebsd-doc-en &prompt.root; make install clean Auf diese Weise wird die englische Dokumentation gebaut und als getrenntes HTML-Format im Verzeichnis /usr/local/share/doc/freebsd installiert (genau wie unter http://www.FreeBSD.org zu finden). Gebräuchliche Schalter und Optionen Es gibt viele Optionen, um das Standarderhalten der Dokumentations-Ports zu verändern. Im Folgenden sind nur ein paar davon aufgeführt: WITH_HTML Erlaubt das Erstellen im HTML-Format: eine einzige HTML-Datei pro Dokument. Die formatierte Dokumentation wird als Datei mit dem Namen article.html gespeichert, oder, je nachdem, als book.html, zuzuüglich der Bilder. WITH_PDF Erlaubt das Erstellen von &adobe; Portable Document Format, für die Verwendung mit &adobe; &acrobat.reader;, Ghostscript oder anderen PDF-Betrachtern. Die formatierte Dokumentation wird als Datei mit dem Namen article.pdf oder, soweit angemessen, als book.pdf gespeichert. DOCBASE Wohin die Dokumentation installiert werden soll. Der Standardpfad ist /usr/local/share/doc/freebsd. Beachten Sie, dass sich der Standardpfad von dem Verzeichnis unterscheidet, das von der Subversion-Methode verwendet wird. Das liegt daran, dass ein Port installiert wird und diese üblicherweise im Verzeichnis /usr/local abgelegt werden. Durch setzen der PREFIX-Variablen kann dieses Verhalten geändert werden. Es folgt ein kurzes Beispiel, wie die Variablen verwendet werden, um die oben erwähnte ungarische Dokumentation als Portable Document Format zu installieren: &prompt.root; cd /usr/ports/misc/freebsd-doc-hu &prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean Verwendung von Dokumentations-Paketen Das Erstellen der Dokumentations-Ports aus den Quellen, wie im vorherigen Abschnitt beschrieben, benötigt die lokale Installation der Dokumentations-Werkzeugsammlung und ein wenig Festplattenspeicher für das Bauen der Ports. Sollten die Ressourcen zum Bauen der Dokumentations-Werkzeugsammlung nicht zur Verfügung stehen, oder weil das erstellen zuviel Plattenplatz benötigen würde, ist es trotzdem möglich, bereits zuvor gebaute Schnappschüsse der Dokumentations-Ports zu installieren. &a.doceng; erstellt monatliche Schnappschüsse der Dokumentations-Pakete von &os;. Diese Binärpakete können mit jedem der mitgelieferten Paketwerkzeuge installiert werden, beispielsweise &man.pkg.add.1;, &man.pkg.delete.1; und so weiter. Wenn Binärpakete zu Einsatz kommen, wird die &os;-Dokumentation in allen verfügbaren Formaten in der gegebenen Sprache installiert. Zum Beispiel installiert das folgende Kommando das aktuelle, vorgefertigte Paket der ungarischen Dokumentation: &prompt.root; pkg_add -r hu-freebsd-doc Pakete haben das folgende Namensformat, welches sich von dem Namen des dazugehörigen Ports unterscheidet: lang-freebsd-doc. lang entspricht hier der Kurzform des Sprachcodes, z.B. hu für Ungarisch, oder zh_cn für vereinfachtes Chinesisch. Dokumentations-Ports aktualisieren Um einen zuvor installierten Dokumentations-Port zu aktualisieren, kann jedes Werkzeug, das auch zum Aktualisieren von Ports verwendet wird, eingesetzt werden. Beispielsweise aktualisiert das folgende Kommando die installierte ungarische Dokumentation mittels des Programms ports-mgmt/portupgrade indem nur Pakete verwendet werden sollen: &prompt.root; portupgrade -PP hu-freebsd-doc Einem Entwicklungszweig folgen -CURRENT -STABLE FreeBSD besitzt zwei Entwicklungszweige: &os.current; und &os.stable;. Dieser Abschnitt beschreibt beide Zweige und erläutert, wie Sie Ihr System auf dem aktuellen Stand eines Zweiges halten. Zuerst wird &os.current; vorgestellt, dann &os.stable;. &os.current; Beachten Sie im Folgenden, dass &os.current; die Spitze der Entwicklung von &os; ist. Benutzer von &os.current; sollten über sehr gute technische Fähigkeiten verfügen und in der Lage sein, schwierige Probleme alleine zu lösen. Wenn &os; neu für Sie ist, überlegen Sie sich genau, ob Sie &os.current; benutzen wollen. Was ist &os.current;? Snapshot &os.current; besteht aus den neuesten Quellen des FreeBSD-Systems. Es enthält Sachen, an denen gerade gearbeitet wird, experimentelle Änderungen und Übergangsmechanismen, die im nächsten offiziellen Release der Software enthalten sein können oder nicht. Obwohl &os.current; täglich von vielen Entwicklern gebaut wird, gibt es Zeiträume, in denen sich das System nicht bauen lässt. Diese Probleme werden so schnell wie möglich gelöst, aber ob Sie mit &os.current; Schiffbruch erleiden oder die gewünschten Verbesserungen erhalten, kann von dem Zeitpunkt abhängen, an dem Sie sich den Quelltext besorgt haben! Wer braucht &os.current;? &os.current; wird hauptsächlich für 3 Interessengruppen zur Verfügung gestellt: Entwickler, die an einem Teil des Quellbaums arbeiten und daher über die aktuellen Quellen verfügen müssen. Tester, die bereit sind, Zeit in das Lösen von Problemen zu investieren und sicherstellen, dass &os.current; so stabil wie möglich bleibt. Weiterhin Leute, die Vorschläge zu Änderungen oder der generellen Entwicklung von &os; machen und Patches bereitstellen, um diese Vorschläge zu realisieren. Für Leute, die die Entwicklung im Auge behalten wollen, oder die Quellen zu Referenzzwecken (zum Beispiel darin lesen, aber nicht verwenden) benutzen wollen. Auch diese Gruppe macht Vorschläge oder steuert Quellcode bei. Was &os.current; <emphasis>nicht</emphasis> ist! Der schnellste Weg, neue Sachen vor dem offiziellen Release auszuprobieren. Bedenken Sie, dass der erste, der die neuen Sachen ausprobiert, auch der erste ist, der die neuen Fehler findet. Ein schneller Weg, um an Fehlerbehebungen (engl. bug fixes) zu kommen. Jede Version von &os.current; führt mit gleicher Wahrscheinlichkeit neue Fehler ein, mit der sie alte behebt. In irgendeiner Form offiziell unterstützt. Wir tun unser Bestes, um Leuten aus den drei legitimen Benutzergruppen von &os.current; zu helfen, aber wir haben einfach nicht die Zeit, technische Unterstützung zu erbringen. Das kommt nicht daher, dass wir kleinliche, gemeine Leute sind, die anderen nicht helfen wollen (wenn wir das wären, würden wir &os; nicht machen), wir können einfach nicht jeden Tag Hunderte Nachrichten beantworten und an &os; arbeiten! Vor die Wahl gestellt, &os; zu verbessern oder jede Menge Fragen zu experimentellem Code zu beantworten, haben sich die Entwickler für ersteres entschieden. Benutzen von &os.current; Es ist essentiell, die Mailinglisten &a.current.name; und &a.svn-src-head.name;-CURRENTbenutzen zu lesen. Wenn Sie &a.current.name; nicht lesen, verpassen Sie die Kommentare anderer über den momentanen Zustand des Systems und rennen demzufolge in viele bekannte Probleme, die schon gelöst sind. Noch kritischer ist, dass Sie wichtige Bekanntmachungen verpassen, die erhebliche Auswirkungen auf die Stabilität Ihres Systems haben können. In der &a.svn-src-head.name; Mailingliste sehen Sie zu jeder Änderung das Commit-Log, das Informationen zu möglichen Seiteneffekten enthält. Um diese Listen zu abonnieren (oder zu lesen) besuchen Sie bitte die Seite &a.mailman.lists.link;. Weitere Informationen erhalten Sie, wenn Sie dort auf die gewünschte Liste klicken. Wenn Sie daran interessiert sind, die Änderungen am gesamten Quellbaum mit zu verfolgen, schlagen wir vor, die Liste &a.svn-src-all.name; zu abonnieren. Beschaffen Sie sich die Quellen von einem &os;-Spiegel. Sie haben dazu drei Möglichkeiten: Benutzen Sie das Programm svn, um den gewünschten Entwicklungs- oder Release-Zweig auszuchecken. Dies ist die empfohlene Methode für den Zugang zur Entwicklung von &os;. Das bevorzugte URL-Präfix für Subversion zum Auschecken des -CURRENT Basissystems ist http://svn.freebsd.org/base/head. Aufgrund der Größe des Repositories ist es empfehlenswert, nur die gewünschten Teilbäume auszuchecken. Benutzen Sie das Programm cvsupcvsup mit der Datei standard-supfile aus dem Verzeichnis /usr/share/examples/cvsup. Sie müssen die obige supfile anpassen und cvsup-CURRENTmit CVSup synchronisieren für Ihre Umgebung konfigurieren. cvsup wurde vom Projekt als veraltet eingestuft. Der Einsatz dieses Programms wird nicht weiter empfohlen. Die standard-supfile-Beispieldatei ist dafür vorgesehen, einen bestimmten Sicherheitszweig zu verfolgen und nicht &os.current;. Sie müssen diese Datei bearbeiten und die folgende Zeile: *default release=cvs tag=RELENG_X_Y durch diese ersetzen: *default release=cvs tag=. Lesen Sie den Abschnitt über CVS Tags im Handbuch, um eine genaue Beschreibung von verwendbaren Tags zu erhalten. CTM-CURRENTmit CTM synchronisieren kommt in Frage, wenn Sie über eine schlechte Internet-Anbindung (hoher Preis oder nur E-Mail Zugriff) verfügen. Der Umgang mit CTM ist allerdings recht mühsam und Sie können beschädigte Dateien erhalten. Daher wird es selten benutzt, was wiederum dazu führt, dass es über längere Zeit nicht funktioniert. Wir empfehlen die Nutzung von Subversion für jedes System mit Internet-Anbindung. Wenn Sie die Quellen einsetzen und nicht nur darin lesen wollen, besorgen Sie sich bitte die kompletten Quellen von &os.current; und nicht nur ausgesuchte Teile. Der Grund hierfür ist, dass die verschiedenen Teile der Quellen voneinander abhängen. Es ist ziemlich sicher, dass Sie in Schwierigkeiten geraten, wenn Sie versuchen, nur einen Teil der Quellen zu übersetzen. Sehen Sie sich das Makefile in /usr/src genau an, bevor Sie &os.current; übersetzen-CURRENTübersetzen. Wenn Sie &os; das erste Mal aktualisieren, sollten Sie sowohl einen Kernel als auch das System neu installieren. Lesen Sie bitte die Mailingliste &a.current; und /usr/src/UPDATING, um über Änderungen im Installationsverfahren, die manchmal vor der Einführung eines neuen Releases notwendig sind, informiert zu sein. Seien Sie aktiv! Wenn Sie &os.current; laufen lassen, wollen wir wissen, was Sie darüber denken, besonders wenn Sie Verbesserungsvorschläge oder Fehlerbehebungen haben. Verbesserungsvorschläge, die Code enthalten, werden übrigens begeistert entgegengenommen. &os.stable; Was ist &os.stable;? -STABLE &os.stable; ist der Entwicklungszweig, auf dem Releases erstellt werden. Dieser Zweig ändert sich langsamer als &os.current; und alle Änderungen hier sollten zuvor in &os.current; ausgetestet sein. Beachten Sie, dass dies immer noch ein Entwicklungszweig ist und daher zu jedem Zeitpunkt die Quellen von &os.stable; verwendbar sein können oder nicht. &os.stable; ist Teil des Entwicklungsprozesses und nicht für Endanwender gedacht. Wer braucht &os.stable;? Wenn Sie den FreeBSD-Entwicklungsprozess, besonders im Hinblick auf das nächste Release, verfolgen oder dazu beitragen wollen, sollten Sie erwägen, &os.stable; zu benutzen. Auch wenn sicherheitsrelevante Fehlerbehebungen in den &os.stable; Zweig einfließen, müssen Sie deswegen noch lange nicht &os.stable; verfolgen. Jeder der FreeBSD Sicherheitshinweise beschreibt für jedes betroffene Release, Das stimmt nicht ganz. Obwohl wir alte FreeBSD Releases für einige Jahre unterstützen, können wir sie nicht ewig unterstützen. Eine vollständige Beschreibung der Sicherheitspolitik für alte FreeBSD Releases entnehmen Sie bitte http://www.FreeBSD.org/security/. wie sie einen sicherheitsrelevanten Fehler beheben. Wenn Sie den Entwicklungszweig aus Sicherheitsgründen verfolgen wollen, bedenken Sie, dass Sie neben Fehlerbehebungen auch eine Vielzahl unerwünschter Änderungen erhalten werden. Obwohl wir versuchen sicherzustellen, dass der &os.stable; Zweig sich jederzeit übersetzen lässt und läuft, können wir dafür keine Garantie übernehmen. Auch wenn Neuentwicklungen in &os.current; stattfinden, ist es jedoch so, dass mehr Leute &os.stable; benutzen als &os.current; und es daher unvermeidlich ist, dass Fehler und Grenzfälle erst in &os.stable; auffallen. Aus diesen Gründen empfehlen wir Ihnen nicht, blindlings &os.stable; zu benutzen. Es ist wichtig, dass Sie &os.stable; zuerst sorgfältig in einer Testumgebung austesten, bevor Sie Ihre Produktion auf &os.stable; migrieren. Wenn Sie dies nicht leisten können, empfehlen wir Ihnen, das aktuelle FreeBSD-Release zu verwenden. Benutzen Sie dann den binären Update-Mechanismus, um auf neue Releases zu migrieren. Benutzen von &os.stable; Lesen Sie Mailingliste &a.stable.name;, damit Sie über Abhängigkeiten beim Bau von &os.stable;-STABLEbenutzen und Sachen, die besondere Aufmerksamkeit erfordern, informiert sind. Umstrittene Fehlerbehebungen oder Änderungen werden von den Entwicklern auf dieser Liste bekannt gegeben. Dies erlaubt es den Benutzern, Einwände gegen die vorgeschlagenen Änderungen vorzubringen. Abonnieren Sie die passende SVN-Liste für den jeweiligen Branch, den Sie verfolgen. Wenn Sie beispielsweise den Zweig 9-STABLE verfolgen, lesen Sie die &a.svn-src-stable-9.name;. Dort sehen Sie zu jeder Änderung das Commit-Log, das Informationen zu möglichen Seiteneffekten enthält. Um diese Listen oder andere Listen zu abonnieren besuchen Sie bitte die Seite &a.mailman.lists.link;. Weitere Informationen erhalten Sie, wenn Sie dort auf die gewünschte Liste klicken. Wenn Sie daran interessiert sind, Änderungen am gesamten Quellbaum zu verfolgen, dann empfehlen wir, dass Sie &a.svn-src-all.name; abonnieren. Wenn Sie ein neues System installieren und dazu einen der monatlich aus &os.stable; erzeugten Snapshots verwenden wollen, sollten Sie zuerst die Snapshot Website auf aktuelle Informationen überprüfen. Alternativ können Sie auch das neueste &os.stable;-Release von den Spiegeln beziehen und Ihr System nach den folgenden Anweisungen aktualisieren. Wenn Sie schon ein älteres Release von &os; und das System mit dem Quellcode aktualisieren wollen, benutzen Sie einen der &os;-Spiegel. Sie haben dazu drei Möglichkeiten: Benutzen Sie das Programm svn-STABLEmit Subversion synchronisieren, um den gewünschten Entwicklungs- oder Release-Zweig auszuchecken. Dies ist die empfohlene Methode für den Zugang zur Entwicklung von &os;. Die Zweige umfassen head, für den aktuellen Entwicklungszweig, sowie weitere Zweige die auf der Release Engineering Seite beschrieben sind, wie beispielsweise stable/9 oder releng/9.0. Das bevorzugte URL-Präfix für Subversion zum Auschecken des Basissystems ist http://svn.freebsd.org/base/. Aufgrund der Größe des Repositories ist es empfehlenswert, nur die gewünschten Teilbäume auszuchecken. Benutzen Sie das Programm cvsupcvsup mit der Datei stable-supfile-STABLEmit CVSup synchronisiereny aus dem Verzeichnis /usr/share/examples/cvsup. Sie müssen das oben erwähnte supfile anpassen und cvsup konfigurieren. cvsup wurde vom Projekt als veraltet eingestuft. Der Einsatz dieses Programms wird nicht weiter empfohlen. Benutzen Sie CTM-STABLEmit CTM synchronisieren. Wenn Sie über keine schnelle und billige Internet-Anbindung verfügen, sollten Sie diese Methode in Betracht ziehen. Benutzen Sie cvsup oder ftp, wenn Sie schnellen Zugriff auf die Quellen brauchen und die Bandbreite keine Rolle spielt, andernfalls benutzen Sie CTM. Bevor Sie &os.stable; übersetzen-STABLEübersetzen, sollten Sie sich das Makefile in /usr/src genau anschauen. Wenn Sie &os; das erste Mal aktualisieren, sollten Sie sowohl einen Kernel als auch das System neu installieren. Lesen Sie bitte die Mailingliste &a.stable; und /usr/src/UPDATING, um über Änderungen im Installationsverfahren, die manchmal vor der Einführung eines neuen Releases notwendig sind, informiert zu sein. Synchronisation der Quellen Sie können eine Internet-Verbindung (oder E-Mail) dazu nutzen, Teile von &os;, wie die Quellen zu einzelnen Projekten, oder das Gesamtsystem, aktuell zu halten. Dazu bieten wir die Dienste Subversion, AnonymousCVS, CVSup und CTM an. Obwohl es möglich ist, nur Teile des Quellbaums zu aktualisieren, ist die einzige unterstütze Migrationsprozedur, den kompletten Quellbaum zu aktualisieren und alles, das heißt das Userland (z.B. alle Programme in /bin und /sbin) und die Kernelquellen, neu zu übersetzen. Wenn Sie nur einen Teil der Quellen, zum Beispiel nur den Kernel oder nur die Programme aus dem Userland, aktualisieren, werden Sie oft Probleme haben, die von Übersetzungsfehlern über Kernel-Panics bis hin zu Beschädigungen Ihrer Daten reichen können. CVS anonymous Subversion, Anonymous CVS und CVSup benutzen die Pull-Methode Von engl. to pull = ziehen. Der Client holt sich bei dieser Methode die Dateien ab. , um die Quellen zu aktualisieren. Im Fall von Subversion ruft der Benutzer (oder ein cron-Skript) das Programm svn auf, das die Quellen aktualisiert. Subversion ist die empfohlene Methode, um die lokalen Quellen zu aktualisieren. cvsup und cvs arbeiten nach ähnlichen Prinzipien, gelten aber im Vergleich zu Subversion als veraltet. Mit beiden Methoden erhalten Sie aktuelle Updates zu einem genau von Ihnen bestimmten Zeitpunkt. Sie können die Prozedur auf bestimmte Dateien oder Verzeichnisse einschränken, so dass Sie nur die Updates bekommen, die für Sie von Interesse sind. Die Updates werden zur Laufzeit, abhängig von den Sachen, die Sie schon haben und den Sachen, die Sie haben wollen, auf dem Server generiert. Falls es keinen überzeugenden Grund gibt, sollte Subversion den Vorzug vor anderen Synchronisierungsmechanismen erhalten, da die Unterstützung für die älteren Mechanismen in Zukunft eingestellt wird. CTM Im Gegensatz dazu vergleicht CTM Ihre Quellen nicht mit denen auf einem Server. Stattdessen läuft auf dem Server ein Skript, das Änderungen an Dateien gegenüber seinem vorigen Lauf bemerkt, die Änderungen komprimiert, mit einer Sequenznummer versieht und für das Verschicken per E-Mail kodiert (es werden nur druckbare ASCII-Zeichen verwendet). Wenn Sie diese CTM-Deltas erhalten haben, können Sie sie mit &man.ctm.rmail.1; benutzen, welches die Deltas dekodiert, verifiziert und dann die Änderungen an Ihren Quellen vornimmt. Dieses Verfahren ist viel effizienter als CVSup und erzeugt auch weniger Last auf unseren Servern, da es die Push-Methode Von engl. to push = schieben. Der Server schickt dem Client die Dateien. verwendet. Es gibt natürlich noch weitere Unterschiede, die Sie beachten sollten. Wenn Sie unabsichtlich Teile Ihres Archivs löschen, wird das von CVSup wie Anonymous CVS erkannt und repariert. Wenn sich fehlerhafte Dateien in Ihrem Quellbaum befinden, löschen Sie diese einfach und synchronisieren erneut. CTM leistet das nicht, wenn Sie Teile des Quellbaums gelöscht haben und keine Sicherung besitzen, müssen Sie von neuem, das heißt vom letzten Basis-Delta, starten und die Änderungen wieder mit CTM nachziehen. Das komplette Basissystem neu bauen Bau des Basissystems Wenn Sie Ihren lokalen Quellbaum mit einer bestimmten FreeBSD Version (&os.stable;, &os.current;, usw.) synchronisiert haben, können Sie diesen benutzen, um das System neu zu bauen. Erstellen Sie eine Sicherungskopie! Es kann nicht oft genug betont werden, wie wichtig es ist, Ihr System zu sichern, bevor Sie die nachfolgenden Schritte ausführen. Obwohl der Neubau des Systems eine einfache Aufgabe ist, wenn Sie sich an die folgende Anleitung halten, kann es dennoch vorkommen, dass Sie einen Fehler machen, oder dass Ihr System nicht mehr bootet, weil andere Entwickler Fehler in den Quellbaum eingeführt haben. Stellen Sie sicher, dass Sie eine Sicherung erstellt haben und über eine Fixit-Floppy oder eine startfähige CD verfügen. Wahrscheinlich werden Sie die Startmedien nicht benötigen, aber gehen Sie auf Nummer sicher! Abonnieren Sie die richtige Mailingliste Mailingliste Die &os.stable; und &os.current; Zweige befinden sich in ständiger Entwicklung. Die Leute, die zu &os; beitragen, sind Menschen und ab und zu machen sie Fehler. Manchmal sind diese Fehler harmlos und lassen Ihr System eine Warnung ausgeben. Die Fehler können allerdings auch katastrophal sein und dazu führen, dass Sie Ihr System nicht mehr booten können, Dateisysteme beschädigt werden oder Schlimmeres passiert. Wenn solche Probleme auftauchen, wird ein heads up an die passende Mailingliste geschickt, welches das Problem erklärt und die betroffenen Systeme benennt. Eine all clear Meldung wird versendet, wenn das Problem gelöst ist. Wenn Sie &os.stable; oder &os.current; benutzen und nicht die Mailinglisten &a.stable; beziehungsweise &a.current; lesen, bringen Sie sich nur unnötig in Schwierigkeiten. Finger weg von <command>make world</command> Ältere Dokumentationen empfehlen, das Kommando make world für den Neubau. Das Kommando überspringt wichtige Schritte. Setzen Sie es nur ein, wenn Sie wissen was Sie tun. In fast allen Fällen ist make world falsch, benutzen Sie stattdessen die nachstehende Anleitung. Richtig aktualisieren Um Ihr System zu aktualisieren, sollten Sie zuerst /usr/src/UPDATING lesen, und eventuelle, für Ihre Quellcodeversion nötigen Aufgaben erledigen, bevor Sie das System bauen. Danach aktualisieren Sie Ihr System mit den folgenden Schritten. Bei den hier dargestellten Aktualisierungsschritten wird davon ausgegangen, dass Sie momentan eine alte &os;-Version verwenden, die aus einem alten Compiler, Kernel, sowie einem alten Basissystem und veralteten Konfigurationsdateien besteht. Mit Basissystem sind hier die zentralen Binärdateien, Bibliotheken und Entwicklerdateien gemeint. Der Compiler ist Teil des Basissystems, beinhaltet aber ein paar Besonderheiten. Es wird ausserdem davon ausgegangen, dass Sie bereits die Quellen für ein neues System bezogen haben. Falls die Quellen in dem vorliegenden System zu alt sind, lesen Sie , um detaillierte Hilfe über die Aktualisierung der Quellen zu erhalten. Die Aktualisierung des Systems aus den Quellen ist ein wenig ausgetüftelter als es zunächst den Anschein hat. Die Entwickler von &os; haben es über die Jahre für Nötig befunden, den vorgeschlagenen Ablauf ziemlich stark zu verändern, da neue Arten von unvermeidlichen Abhängigkeiten mit der Zeit ans Licht kamen. Der übrige Teil dieses Abschnitts beschreibt die Überlegungen hinter der aktuell empfohlenen Aktualisierungsreihenfolge. Jede erfolgreiche Aktualisierung muss sich mit den folgenden Sachverhalten auseinandersetzen: Der alte Compiler ist möglicherweise nicht in der Lage, den neuen Kernel zu übersetzen (alte Compiler besitzen manchmal Fehler). Deshalb sollte der neue Kernel mit dem neuen Compiler übersetzt werden. Ganz besonders muss darauf geachtet werden, dass der neue Compiler vor dem neuen Kernel gebaut wird. Das bedeutet nicht unbedingt, dass der neue Compiler auch installiert werden muss, bevor der neue Kernel gebaut wird. Das neue Basissystem benötigt eventuell neue Eigenschaften des Kernels. Also muss der neue Kernel installiert sein, bevor das neue Basissystem installiert wird. Diese ersten beiden Sachverhalte sind die Grundlage für die zentrale Sequenz von buildworld, buildkernel, installkernel und installworld, die in den folgenden Abschnitten beschrieben wird. Dies ist keine vollständige Liste all der Gründe, warum Sie den aktuell empfohlenen Prozess der Aktualisierung bevorzugen sollten. Ein paar der weniger naheliegenden Gründe sind im folgenden aufgezählt: Das alte Basissystem wird möglicherweise nicht korrekt mit dem neuen Kernel funktionieren, weshalb Sie das neue Basissystem sofort nach der Installation des neuen Kernels installieren müssen. Manche Änderungen an der Konfiguration müssen erledigt worden sein, bevor das neue Basissystem installiert wird, jedoch können andere die Funktionalität des alten Basissystems beeinträchtigen. Aus diesem Grund sind zwei verschiedene Schritte notwendig, um eine Aktualisierung der Konfiguration durchzuführen. Der Aktualisierungsprozess ersetzt zum Grossteil Dateien oder fügt neue hinzu, bestehende Dateien werden nicht gelöscht. In wenigen Ausnahmefällen kann dies Probleme verursachen. Aus diesem Grund wird der Aktualisierungsprozess manchmal bestimmte Dateien zum manuellen Löschen vorschlagen. Dies wird eventuell in der Zukunft automatisch durchgeführt. Diese Bedenken haben zu der folgenden Reihenfolge geführt. Beachten Sie, dass der genaue Ablauf für bestimmte Aktualisierungen zusätzliche Schritte nach sich zieht, jedoch sollte der Kernprozess davon nicht beeinträchtigt werden: make buildworld Dieser Schritt übersetzt zuerst den neuen Compiler und ein paar damit zusammenhängende Werkzeuge und verwendet dann den neuen Compiler, um den Rest des Basissystems zu erstellen. Das Ergebnis landet dann in /usr/obj. make buildkernel Statt dem alten Ansatz, &man.config.8; und &man.make.1; zu verwenden, nutzt dieser den neuen Compiler, der in /usr/obj abgelegt ist. Das schützt Sie vor falschen Compiler-Kernel-Kombinationen. make installkernel Platziert den neuen Kernel und Kernelmodule auf der Platte, was es erlaubt, mit dem frisch aktualisierten Kernel zu starten. Starten Sie das System neu in den Single-User-Modus. Der Single-User-Modus minimiert Probleme mit der Aktualisierung von Programmen, die bereits gestartet sind. Ebenso minimiert es Probleme, die mit der Verwendung des alten Basissystems und des neuen Kernels zu tun haben könnten. mergemaster -p Dieser Schritt aktualisiert ein paar initiale Konfigurationsdateien als Vorbereitung für das neue Basissystem. Beispielsweise fügt es neue Benutzergruppen zum System oder neue Benutzernamen in die Passwortdatenbank hinzu. Dies wird oftmals benötigt, wenn neue Gruppen oder bestimmte Systembenutzerkonten seit der letzten Aktualisierung hinzu gekommen sind, so dass der installworld-Schritt in der Lage ist, auf dem neu installierten System die Benutzer oder Systemgruppennamen ohne Probleme zu verwenden. make installworld Kopiert das Basissystem aus /usr/obj. Sie haben jetzt den neuen Kernel und das neue Basissystem auf der Festplatte. mergemaster Sie können nun die verbleibenden Konfigurationsdateien aktualisieren, da Sie nun das neue Basissystem auf der Platte haben. Starten Sie das System neu. Ein kompletter Systemneustart ist notwendig, um den neuen Kernel und das neue Basissystem mit den neuen Konfigurationsdateien zu laden. Beachten Sie, dass wenn Sie von einem Release des gleichen &os;-Zweigs auf ein aktuelleres Release des gleichen Zweigs, z.B. von 7.0 auf 7.1, aktualisieren, dann ist diese Vorgehensweise nicht unbedingt notwendig, da Sie nur sehr unwahrscheinlich in ungünstige Kombinationen zwischen Compiler, Kernel, Basissystem und den Konfigurationsdateien geraten werden. Die ältere Vorgehensweise von make world, gefolgt von der Erstellung und Installation des neuen Kernels funktioniert möglicherweise gut genug, um kleinere Aktualisierungen vorzunehmen. Wenn Sie allerdings zwischen Hauptversionen aktualisieren wollen und befolgen diese Schritte nicht, sollten Sie sich auf Probleme gefasst machen. Es ist auch wichtig zu wissen, dass viele Aktualisierungen, z.B. von 4.X auf 5.0, viele spezielle und zusätzliche Schritte benötigt, wie beispielsweise das umbennen oder löschen von speziellen Dateien vor installworld. Lesen Sie die Datei /usr/src/UPDATING gründlich, besonders am Ende, wo die aktuell vorgeschlagene Aktualisierungssequenz explizit aufgelistet ist. Diese Prozedur hat sich mit der Zeit weiterentwickelt, da die Entwickler es für unmöglich erachtet haben, bestimmte Arten von Kombinationsproblemen vollständig auszuschliessen. Hoffentlich wird die aktuelle Aktualisierungsprozedur für lange Zeit stabil bleiben. Als Zusammenfassung ist hier nochmal die aktuell vorgeschlagene Vorgehensweise für die Aktualisierung von &os; aus den Quellen aufgelistet: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now Es gibt einige, sehr seltene Situationen, in denen Sie mergemaster -p zusätzlich ausführen müssen, bevor Sie das System mit buildworld bauen. Diese Situationen werden in UPDATING beschrieben. Solche Situationen treten aber in der Regel nur dann auf, wenn Sie Ihr &os;-System um eine oder mehrere Hauptversionen aktualisieren. Nachdem installkernel erfolgreich abgeschlossen wurde, starten Sie das System im Single-User-Modus (etwa durch die Eingabe von boot -s am Loaderprompt). Danach führen Sie die folgenden Anweisungen aus: &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; adjkerntz -i &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot Lesen Sie bitte weiter Die obige Vorschrift ist nur eine Gedächtnisstütze. Um die einzelnen Schritte zu verstehen, lesen Sie bitte die folgenden Abschnitte, insbesondere wenn Sie einen angepassten Kernel erstellen. Lesen Sie <filename>/usr/src/UPDATING</filename> Bevor Sie etwas anderes tun, lesen Sie bitte /usr/src/UPDATING (oder die entsprechende Datei, wenn Sie den Quellcode woanders installiert haben). Die Datei enthält wichtige Informationen zu Problemen, auf die Sie stoßen könnten oder gibt die Reihenfolge vor, in der Sie bestimmte Kommandos laufen lassen müssen. Die Anweisungen in UPDATING sind aktueller als die in diesem Handbuch. Im Zweifelsfall folgen Sie bitte den Anweisungen aus UPDATING. Das Lesen von UPDATING ersetzt nicht das Abonnieren der richtigen Mailingliste. Die beiden Voraussetzungen ergänzen sich, es reicht nicht aus, nur eine zu erfüllen. Überprüfen Sie <filename>/etc/make.conf</filename> make.conf Überprüfen Sie die Dateien /usr/share/examples/etc/make.conf und /etc/make.conf. Die erste enthält Vorgabewerte, von denen die meisten auskommentiert sind. Um diese während des Neubaus des Systems zu nutzen, tragen Sie die Werte in /etc/make.conf ein. Beachten Sie, dass alles, was Sie in /etc/make.conf eintragen, bei jedem Aufruf von make angezogen wird. Es ist also klug, hier etwas Sinnvolles einzutragen. Typischerweise wollen Sie die Zeile, die NO_PROFILE enthält, aus /usr/share/examples/etc/make.conf nach /etc/make.conf übertragen und dort aktivieren. Sehen Sie sich auch die anderen Definitionen, wie NOPORTDOCS an und entscheiden Sie, ob diese für Sie relevant sind. Aktualisieren Sie die Dateien in <filename>/etc</filename> Das Verzeichnis /etc enthält den Großteil der Konfigurationsdateien des Systems und Skripten, die beim Start des Systems ausgeführt werden. Einige dieser Skripten ändern sich bei einer Migration auf eine neue FreeBSD-Version. Einige der Konfigurationsdateien, besonders /etc/group, werden für den Normalbetrieb des Systems gebraucht. Es gab Fälle, in denen das Kommando make installworld auf bestimmte Accounts oder Gruppen angewiesen war, die aber während der Aktualisierung fehlten. Demzufolge kam es zu Problemen bei der Aktualisierung. In einigen Fällen prüft make buildworld ob die Accounts oder Gruppen vorhanden sind. Ein Beispiel dafür trat beim Anlegen des Benutzers smmsp auf. Die Installationsprozedur schlug an der Stelle fehl, an der &man.mtree.8; versuchte, /var/spool/clientmqueue anzulegen. Um dieses Problem zu umgehen,rufen Sie &man.mergemaster.8; prä-buildworld-Modus auf, der mit aktiviert wird. In diesem Modus werden nur Dateien verglichen, die für den Erfolg von buildworld oder installworld essentiell sind. Wenn Sie besonders paranoid sind, sollten Sie Ihr System nach Dateien absuchen, die der Gruppe, die Sie umbenennen oder löschen, gehören: &prompt.root; find / -group GID -print Das obige Kommando zeigt alle Dateien an, die der Gruppe GID (dies kann entweder ein Gruppenname oder eine numerische ID sein) gehören. Wechseln Sie in den Single-User-Modus Single-User-Modus Sie können das System im Single-User-Modus übersetzen. Abgesehen davon, dass dies etwas schneller ist, werden bei der Installation des Systems viele wichtige Dateien, wie die Standard-Systemprogramme, die Bibliotheken und Include-Dateien, verändert. Sie bringen sich in Schwierigkeiten, wenn Sie diese Dateien auf einem laufenden System verändern, besonders dann, wenn zu dieser Zeit Benutzer auf dem System aktiv sind. Mehrbenutzermodus Eine andere Methode übersetzt das System im Mehrbenutzermodus und wechselt für die Installation in den Single-User-Modus. Wenn Sie diese Methode benutzen wollen, warten Sie mit den folgenden Schritten, bis der Bau des Systems fertig ist und Sie mit installkernel oder installworld installieren wollen. Als Superuser können Sie mit dem folgenden Kommando ein laufendes System in den Single-User-Modus bringen: &prompt.root; shutdown now Alternativ können Sie das System mit der Option single user in den Single-User-Modus booten. Danach geben Sie die folgenden Befehle ein: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Die Kommandos überprüfen die Dateisysteme, hängen / wieder beschreibbar ein, hängen dann alle anderen UFS Dateisysteme aus /etc/fstab ein und aktivieren den Swap-Bereich. Zeigt Ihre CMOS-Uhr die lokale Zeit und nicht GMT an, dies erkennen Sie daran, dass &man.date.1; die falsche Zeit und eine falsche Zeitzone anzeigt, setzen Sie das folgende Kommando ab: &prompt.root; adjkerntz -i Dies stellt sicher, dass Ihre Zeitzone richtig eingestellt ist. Ohne dieses Kommando werden Sie vielleicht später Probleme bekommen. Entfernen Sie <filename>/usr/obj</filename> Die neu gebauten Teile des Systems werden in der Voreinstellung unter /usr/obj gespeichert. Die Verzeichnisse dort spiegeln die Struktur unter /usr/src. Sie können den make buildworld Prozess beschleunigen, indem Sie dieses Verzeichnis entfernen. Dies erspart Ihnen zudem einigen Ärger aufgrund von Abhängigkeiten. Einige Dateien unter /usr/obj sind vielleicht durch die -Option (siehe &man.chflags.1;) schreibgeschützt, die vor dem Löschen entfernt werden muss. &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Übersetzen der Quellen des Basissystems Sichern der Ausgaben Für den Fall, dass etwas schief geht, sollten Sie die Ausgaben von &man.make.1; in einer Datei sichern, damit Sie eine Kopie der Fehlermeldung besitzen. Das mag Ihnen nicht helfen, den Fehler zu finden, kann aber anderen helfen, wenn Sie Ihr Problem in einer der &os;-Mailinglisten schildern. Dazu können Sie einfach das Kommando &man.script.1; benutzen, dem Sie beim Aufruf als Parameter den Dateinamen für die Ausgaben mitgeben. Setzen Sie das Kommando unmittelbar vor dem Neubau ab und geben Sie exit ein, wenn der Bau abgeschlossen ist: &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … Ausgaben des Kommandos … &prompt.root; exit Script done, … Sichern Sie die Ausgaben nicht in /tmp, da dieses Verzeichnis beim nächsten Boot aufgeräumt werden kann. Ein geeigneteres Verzeichnis ist /var/tmp, wie im vorigen Beispiel gezeigt, oder das Heimatverzeichnis von root. Übersetzen des Basissystems Wechseln Sie in das Verzeichnis, in dem die Quellen liegen (in der Voreinstellung ist das /usr/src): &prompt.root; cd /usr/src make Zum Neubau der Welt benutzen Sie &man.make.1;. Dieses Kommando liest ein Makefile, das Anweisungen enthält, wie die Programme, aus denen &os; besteht, zu bauen sind und in welcher Reihenfolge diese zu bauen sind. Ein typischer Aufruf von make sieht wie folgt aus: &prompt.root; make -x -DVARIABLE target In diesem Beispiel ist eine Option, die Sie an &man.make.1; weitergeben wollen. Eine Liste gültiger Optionen finden Sie in der &man.make.1; Manualpage. Das Verhalten eines Makefiles wird von Variablen bestimmt. Mit setzen Sie eine Variable. Diese Variablen sind dieselben, die auch in /etc/make.conf gesetzt werden, dies ist nur ein alternativer Weg, Variablen zu setzen. Um zu verhindern, dass die profiled Bibliotheken gebaut werden, rufen Sie make wie folgt auf: &prompt.root; make -DNO_PROFILE target Dieser Aufruf entspricht dem folgenden Eintrag in /etc/make.conf: NO_PROFILE= true # Avoid compiling profiled libraries Jedes Makefile definiert einige Ziele, die festlegen, was genau zu tun ist. Mit target wählen Sie eins dieser Ziele aus. Einige Ziele im Makefile sind nicht für den Endanwender gedacht, sondern unterteilen den Bauprozess in eine Reihe von Einzelschritten. Im Regelfall müssen Sie &man.make.1; keine Parameter mitgeben, so dass Ihre Kommandozeile wie folgt aussehen wird: &prompt.root; make target target steht dabei für die verschiedenen Ziele. Das erste Ziel sollte immer buildworld sein. Mit buildworld wird ein kompletter Baum unterhalb von /usr/obj gebaut, der mit installworld, einem weiteren Ziel, auf dem System installiert werden kann. Über separate Optionen zu verfügen, ist aus mehreren Gründen nützlich. Erstens können Sie das System auf einem laufenden System bauen, da die Bauprozedur abgekapselt vom Rest des Systems ist. Das System lässt sich im Mehrbenutzermodus ohne negative Seiteneffekte bauen. Die Installation mit installworld sollte aber immer noch im Single-User-Modus erfolgen. Zweitens können Sie NFS benutzen, um mehrere Maschinen in Ihrem Netzwerk zu aktualisieren. Wenn Sie die Maschinen A, B und C aktualisieren wollen, lassen sie make buildworld und make installworld auf A laufen. Auf den Maschinen B und C können Sie die Verzeichnisse /usr/src und /usr/obj von A einhängen und brauchen dort nur noch make installworld auszuführen, um die Bauresultate zu installieren. Obwohl das Ziel world noch existiert, sollten Sie es wirklich nicht mehr benutzen. Um das System zu bauen, setzen Sie das folgende Kommando ab: &prompt.root; make buildworld Mit können Sie make anweisen, mehrere Prozesse zu starten. Besonders effektiv ist das auf Mehrprozessor-Systemen. Da aber der Übersetzungsprozess hauptsächlich von IO statt der CPU bestimmt wird, ist diese Option auch auf Einprozessor-Systemen nützlich. Auf einem typischen Einprozessor-System können Sie den folgenden Befehl absetzen: &prompt.root; make -j4 buildworld &man.make.1; wird dann bis zu vier Prozesse gleichzeitig laufen lassen. Erfahrungsberichte aus den Mailinglisten zeigen, dass dieser Aufruf typischerweise den besten Geschwindigkeitsgewinn bringt. Wenn Sie ein Mehrprozessor-System besitzen und SMP in Ihrem Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und 10 aus. Laufzeiten Bau des Basissystems Laufzeiten Die Laufzeit eines Baus wird von vielen Faktoren beeinflusst, ein aktuelles System benötigt aber etwa zwei Stunden um &os.stable; zu bauen. Der Bau von &os.current; dauert etwas länger. Übersetzen und Installation des Kernels Kernel Übersetzen Um das Beste aus Ihrem System zu holen, sollten Sie einen neuen Kernel kompilieren. Praktisch gesehen ist das sogar notwendig, da sich einige Datenstrukturen geändert haben und Programme wie &man.ps.1; oder &man.top.1; nur mit einem Kernel zusammen arbeiten, der auch zu dem entsprechenden Quellcode passt. Am einfachsten und sichersten bauen Sie dazu den GENERIC Kernel. Obwohl der GENERIC Kernel vielleicht nicht alle Ihre Geräte unterstützt, sollte er alles enthalten, um das System in den Single-User-Modus zu booten. Dies ist auch ein guter Test, um zu sehen, dass das System ordnungsgemäß funktioniert. Nachdem Sie mit GENERIC gebootet und sichergestellt haben, dass Ihr System funktioniert, können Sie einen neuen Kernel mit Ihrer Konfigurationsdatei bauen. In aktuellen &os;-Versionen müssen Sie das Basissystem neu bauen, bevor Sie einen neuen Kernel erstellen. Wenn Sie einen angepassten Kernel erstellen wollen und bereits über eine Konfigurationsdatei verfügen, geben Sie diese, wie im folgenden Beispiel gezeigt, auf der Kommandozeile an: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MYKERNEL &prompt.root; make installkernel KERNCONF=MYKERNEL Wenn kern.securelevel einen Wert größer als 1 besitzt und der Kernel mit noschg oder ähnlichen Optionen geschützt ist, müssen Sie installkernel im Einbenutzermodus ausführen. Wenn das nicht der Fall ist, sollten die beiden Kommandos problemlos im Mehrbenutzermodus laufen. Weitere Informationen über kern.securelevel finden Sie in &man.init.8; und &man.chflags.1; erläutert Optionen, die Sie auf Dateien setzen können. Booten Sie in den Single-User-Modus Single-User-Modus Um zu prüfen, ob der neue Kernel funktioniert, sollten Sie in den Single-User-Modus booten. Folgen Sie dazu der Anleitung aus . Installation des Systems Nun können Sie das neue System mit installworld installieren. Rufen Sie dazu das folgende Kommando auf: &prompt.root; cd /usr/src &prompt.root; make installworld Wenn Sie mit dem make buildworld Kommando Variablen verwendet haben, müssen Sie dieselben Variablen auch bei dem make installworld Kommando angeben. Auf die anderen Optionen trifft das nur bedingt zu: darf mit installworld nicht benutzt werden. Sie haben zum Bauen die folgende Kommandozeile verwendet: &prompt.root; make -DNO_PROFILE buildworld Bei der Installation setzen Sie dann das folgende Kommando ab: &prompt.root; make -DNO_PROFILE installworld Würden Sie die Variable bei der Installation weglassen, so würde das System versuchen, die profiled Bibliotheken, die aber gar nicht gebaut wurden, zu installieren. Aktualisieren der von <command>make installworld</command> ausgelassenen Dateien Neue oder geänderte Konfigurationsdateien aus einigen Verzeichnissen, besonders /etc, /var und /usr werden bei der Installationsprozedur nicht berücksichtigt. Sie können diese Dateien mit &man.mergemaster.8; aktualisieren. Alternativ können Sie das auch manuell durchführen, obwohl wir diesen Weg nicht empfehlen. Egal welchen Weg Sie beschreiten, sichern Sie vorher den Inhalt von /etc für den Fall, dass etwas schief geht. <command>mergemaster</command> TomRhodesBeigetragen von mergemaster Das Bourne-Shell Skript &man.mergemaster.8; hilft Ihnen dabei, die Unterschiede zwischen den Konfigurationsdateien in /etc und denen im Quellbaum unter /usr/src/etc zu finden. mergemaster ist der empfohlene Weg, Ihre Systemkonfiguration mit dem Quellbaum abzugleichen. Rufen Sie mergemaster einfach auf und schauen Sie zu. Ausgehend von / wird mergemaster einen virtuellen Root-Baum aufbauen und darin die neuen Konfigurationsdateien ablegen. Diese Dateien werden dann mit den auf Ihrem System installierten verglichen. Unterschiede zwischen den Dateien werden im &man.diff.1;-Format dargestellt. Neue oder geänderte Zeilen werden mit gekennzeichnet. Zeilen die gelöscht oder ersetzt werden, sind mit einem gekennzeichnet. Das Anzeigeformat wird in &man.diff.1; genauer erklärt. &man.mergemaster.8; zeigt Ihnen jede geänderte Datei an und Sie haben die Wahl, die neue Datei (in mergemaster wird sie temporäre Datei genannt) zu löschen, sie unverändert zu installieren, den Inhalt der neuen Datei mit dem Inhalt der alten Datei abzugleichen, oder die &man.diff.1; Ausgabe noch einmal zu sehen. Sie können die aktuelle Datei auch überspringen, sie wird dann noch einmal angezeigt, nachdem alle anderen Dateien abgearbeitet wurden. Sie erhalten Hilfe, wenn Sie bei der Eingabeaufforderung von mergemaster ein ? eingeben. Wenn Sie die temporäre Datei löschen, geht mergemaster davon aus, dass Sie Ihre aktuelle Datei behalten möchten. Wählen Sie die Option bitte nur dann, wenn Sie keinen Grund sehen, die aktuelle Datei zu ändern. Wenn Sie die temporäre Datei installieren, wird Ihre aktuelle Datei mit der neuen Datei überschrieben. Sie sollten alle unveränderten Konfigurationsdateien auf diese Weise aktualisieren. Wenn Sie sich entschließen den Inhalt beider Dateien abzugleichen, wird ein Texteditor aufgerufen, indem Sie beide Dateien nebeneinander betrachten können. Mit der Taste l übernehmen Sie die aktuelle Zeile der links dargestellten Datei, mit der Taste r übernehmen Sie die Zeile der rechts dargestellten Datei. Das Ergebnis ist eine Datei, die aus Teilen der beiden ursprünglichen Dateien besteht und installiert werden kann. Dieses Verfahren wird gewöhnlich bei veränderten Dateien genutzt. Haben Sie sich entschieden die Differenzen noch einmal anzuzeigen, zeigt Ihnen &man.mergemaster.8; dieselbe Ausgabe, die Sie gesehen haben, bevor die Eingabeaufforderung ausgegeben wurde. Wenn &man.mergemaster.8; alle Systemdateien abgearbeitet hat, werden weitere Optionen abgefragt. Sie werden unter Umständen gefragt, ob Sie die Passwort-Datei neu bauen lassen wollen. Am Ende haben Sie die Möglichkeit, den Rest der temporären Dateien zu löschen. Manueller Abgleich der Konfigurationsdateien Wenn Sie den Abgleich lieber selbst ausführen wollen, beachten Sie bitte, dass Sie nicht einfach die Dateien aus /usr/src/etc nach /etc kopieren können. Einige dieser Dateien müssen zuerst installiert werden, bevor sie benutzt werden können. Das liegt daran, dass /usr/src/etc keine exakte Kopie von /etc ist. Zudem gibt es Dateien, die sich in /etc befinden aber nicht in /usr/src/etc. Wenn Sie, wie empfohlen, mergemaster benutzen, können Sie direkt in den nächsten Abschnitt wechseln. Am einfachsten ist es, wenn Sie die neuen Dateien in ein temporäres Verzeichnis installieren und sie nacheinander auf Differenzen zu den bestehenden Dateien durchsehen. Sichern Sie die Inhalte von <filename>/etc</filename> Obwohl bei dieser Prozedur keine Dateien in /etc automatisch verändert werden, sollten Sie dessen Inhalt an einen sicheren Ort kopieren: &prompt.root; cp -Rp /etc /etc.old Mit wird rekursiv kopiert und erhält die Attribute der kopierten Dateien, wie Zugriffszeiten und Eigentümer. Sie müssen die neuen Dateien in einem temporären Verzeichnis installieren. /var/tmp/root ist eine gute Wahl für das temporäre Verzeichnis, in dem auch noch einige Unterverzeichnisse angelegt werden müssen. &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Die obigen Kommandos bauen die nötige Verzeichnisstruktur auf und installieren die neuen Dateien in diese Struktur. Unterhalb von /var/tmp/root wurden einige leere Verzeichnisse angelegt, die Sie am besten wie folgt entfernen: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Im obigen Beispiel wurde die Fehlerausgabe nach /dev/null umgeleitet, um die Warnungen über nicht leere Verzeichnisse zu unterdrücken. /var/tmp/root enthält nun alle Dateien, die unterhalb von / installiert werden müssen. Sie müssen nun jede dieser Dateien mit den schon existierenden Dateien vergleichen. Einige der installierten Dateien unter /var/tmp/root beginnen mit einem .. Als dieses Kapitel verfasst wurde, waren das nur die Startdateien für die Shells in /var/tmp/root/ und /var/tmp/root/root/. Abhängig davon, wann Sie dieses Handbuch lesen, können mehr Dateien dieser Art existieren. Verwenden Sie ls -a um sicherzustellen, dass Sie alle derartigen Dateien finden. Benutzen Sie &man.diff.1; um Unterschiede zwischen zwei Dateien festzustellen: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Das obige Kommando zeigt Ihnen die Unterschiede zwischen der installierten Version von /etc/shells und der neuen Version in /var/tmp/root/etc/shells. Entscheiden Sie anhand der Unterschiede, ob Sie beide Dateien abgleichen oder die neue Version über die alte kopieren wollen. Versehen Sie das temporäre Verzeichnis mit einem Zeitstempel Wenn Sie das System oft neu bauen, müssen Sie /etc genauso oft aktualisieren. Dies kann mit der Zeit sehr lästig werden. Sie können das Verfahren beschleunigen, wenn Sie sich eine Kopie der Dateien behalten, die Sie zuletzt nach /etc installiert haben. Das folgende Verfahren zeigt Ihnen, wie das geht. Folgen Sie der normalen Prozedur um das System zu bauen. Wenn Sie /etc und die anderen Verzeichnisse aktualisieren wollen, geben Sie dem temporären Verzeichnis einen Namen, der das aktuelle Datum enthält. Wenn Sie dies zum Beispiel am 14. Februar 1998 durchführten, hätten Sie die folgenden Kommandos abgesetzt: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Gleichen Sie die Änderungen entsprechend der Anleitung von oben ab. Wenn Sie fertig sind, entfernen Sie das Verzeichnis /var/tmp/root-19980214 nicht. Wenn Sie nun neue Quellen heruntergeladen und gebaut haben, folgen Sie bitte Schritt 1. Wenn Sie zwischen den Updates eine Woche gewartet haben, haben Sie nun ein Verzeichnis mit dem Namen /var/tmp/root-19980221. Sie können nun die Unterschiede, die sich in einer Woche ergeben haben, sehen, indem Sie &man.diff.1; rekursiv anwenden: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 Üblicherweise sind die Differenzen, die Sie jetzt sehen, kleiner als die Differenzen zwischen /var/tmp/root-19980221/etc und /etc. Da die angezeigten Differenzen kleiner sind, ist es jetzt einfacher den Abgleich der Dateien durchzuführen. Sie können nun das älteste der beiden /var/tmp/root-* Verzeichnisse entfernen: &prompt.root; rm -rf /var/tmp/root-19980214 Wiederholen Sie diesen Prozess jedes Mal wenn Sie Dateien in /etc abgleichen müssen. Mit &man.date.1; können Sie den Verzeichnisnamen automatisch erzeugen: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Das System neu starten Sie sind nun am Ende der Prozedur angelangt. Nachdem Sie sich davon überzeugt haben, dass Ihr System funktioniert, starten Sie Ihr System mit &man.shutdown.8; neu: &prompt.root; shutdown -r now Ende Herzlichen Glückwunsch! Sie haben gerade erfolgreich Ihr &os; System aktualisiert. Es ist übrigens leicht einen Teil des Systems wiederherzustellen, für den Fall, dass Ihnen ein kleiner Fehler unterlaufen ist. Wenn Sie beispielsweise während des Updates oder Abgleichs /etc/magic aus Versehen gelöscht haben, wird &man.file.1; nicht mehr funktionieren. In diesem Fall können Sie das Problem mit dem folgenden Kommando beheben: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install Fragen Muss ich wirklich immer alles neu bauen, wenn sich etwas geändert hat? Darauf gibt es keine einfache Antwort. Was zu tun ist, hängt von den Änderungen ab. Es lohnt wahrscheinlich nicht, alles neu zu bauen, wenn sich bei einem CVSup-Lauf nur die folgenden Dateien geändert haben: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk In diesem Fall können Sie in die entsprechenden Unterverzeichnisse wechseln und dort make all install ausführen. Wenn sich allerdings etwas Wichtiges, wie src/lib/libc/stdlib, geändert hat, sollten Sie die Welt oder mindestens die statisch gelinkten Teile des Systems (sowie Ihre statisch gelinkten Ergänzungen) neu bauen. Letztendlich ist das Ihre Entscheidung. Sie sind vielleicht damit zufrieden, das System alle zwei Wochen neu zu bauen und in der Zwischenzeit die anfallenden Änderungen zu sammeln. Wenn Sie sich zutrauen, alle Abhängigkeiten zu erkennen, bauen Sie vielleicht auch nur die geänderten Sachen neu. Das hängt natürlich auch noch davon ab, wie oft Sie ein Update durchführen wollen und ob Sie &os.stable; oder &os.current; benutzen. Der Bau bricht mit vielen Signal 11-Fehlern Signal 11 (oder anderen Signalnummern) ab. Was ist da passiert? Normalerweise zeigen diese Meldungen Hardwarefehler an. Ein Neubau der Welt ist ein guter Belastungstest für Ihre Hardware und zeigt oft Probleme mit dem Speicher auf. Dies äußert sich darin, dass der Compiler mit dem Erhalt von seltsamen Signalen abbricht. Es liegt garantiert ein Hardwarefehler vor, wenn ein neuer Übersetzungslauf an einer anderen Stelle abbricht. In diesem Fall können Sie nur einzelne Komponenten Ihres Systems tauschen, um zu bestimmen, welche Komponente den Fehler verursacht. Kann ich /usr/obj löschen, wenn ich fertig bin? Kurze Antwort: Ja. In /usr/obj werden alle Dateien abgelegt, die während der Übersetzungsphase erstellt wurden. Dieses Verzeichnis wird in einem der ersten Schritte der Bauprozedur entfernt. Es macht daher wenig Sinn, dieses Verzeichnis zu behalten und Sie setzen eine Menge Plattenplatz, momentan ungefähr 2 GB, frei, wenn Sie es löschen. Wenn Sie allerdings genau wissen, was Sie tun, können Sie diesen Schritt bei make buildworld auslassen. Nachfolgende Bauprozeduren werden dadurch erheblich schneller, da die meisten Quelldateien nicht mehr neu übersetzt werden. Dafür können aber subtile Abhängigkeitsprobleme entstehen, die dazu führen, dass der Bau auf merkwürdige Weise abbrechen kann. Dies führt häufig zu unnötigen Diskussionen auf den &os; Mailinglisten, wenn sich jemand über einen kaputten Bau beschwert, aber nicht sieht, dass er Probleme hat, weil er eine Abkürzung genommen hat. Kann ein abgebrochener Bau weitergeführt werden? Das hängt davon ab, wieweit der Bauprozess fortgeschritten ist. Üblicherweise werden essentielle Werkzeuge, wie &man.gcc.1; und &man.make.1;, und die Systembibliotheken während des Bauprozesses neu erstellt (dies ist aber keine allgemein gültige Regel). Die neu erstellen Werkzeuge und Bibliotheken werden dann benutzt, um sich selbst noch einmal zu bauen, und wieder installiert. Anschließend wird das Gesamtsystem mit den neu erstellten Systemdateien gebaut. Wenn Sie sich im letzten Schritt befinden und Sie wissen, dass Sie dort sind, weil Sie durch die Ausgaben, die Sie ja sichern, der Bauprozedur gesehen haben, können Sie mit ziemlicher Sicherheit den Bau weiterführen: … Fehler beheben … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all Diese Variablen verhindern, dass make buildworld die vorher erstellten Dateien löscht. Das Sie sich im letzten Schritt der Bauprozedur befinden, erkennen Sie daran, dass Sie in der Ausgabe die folgenden Zeilen finden: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- Wenn Sie diese Meldung nicht finden, oder sich nicht sicher sind, dann ist es besser, noch einmal ganz von Vorne anzufangen. Wie kann ich den Bauprozess beschleunigen? Bauen Sie im Single-User-Modus. Legen Sie /usr/src und /usr/obj in getrennte Dateisysteme auf unterschiedliche Festplatten. Benutzen Sie nach Möglichkeit auch getrennte Platten-Controller. Noch besser ist es, diese Dateisysteme auf mehrere Festplatten mit &man.ccd.4; zu verteilen. Bauen Sie die profiled-Bibliotheken, die Sie wahrscheinlich sowieso nicht brauchen, nicht. /etc/make.conf sollte dazu NO_PROFILE=true enthalten. Benutzen Sie , um mehrere Prozesse parallel laufen zu lassen. Normalerweise beschleunigt dies den Bauprozess unabhängig davon, ob Sie ein Einprozessor- oder Mehrprozessorsystem einsetzen. Sie können das Dateisystem /usr/src mit der Option einhängen. Dies verhindert, dass die Zugriffszeiten der Dateien aktualisiert werden (eine Information, die Sie vielleicht gar nicht brauchen). &prompt.root; mount -u -o noatime /usr/src Das Beispiel geht davon aus, dass sich /usr/src auf einem separaten Dateisystem befindet. Wenn das nicht der Fall ist, weil das Verzeichnis beispielsweise Teil des /usr Dateisystems ist, müssen Sie anstelle von /usr/src den Mountpoint des Dateisystems angeben. Das Dateisystem, in dem sich /usr/obj befindet, kann mit der Option eingehangen werden. Dies bewirkt, dass Schreibzugriffe auf die Platte asynchron stattfinden, das heißt ein Schreibzugriff ist sofort beendet, die Daten werden allerdings erst einige Sekunden später geschrieben. Dadurch können Schreibzugriffe zusammengefasst werden, was einen erheblichen Geschwindigkeitszuwachs mit sich bringen kann. Beachten Sie, dass dies Ihr Dateisystem anfälliger für Fehler macht. Im Fall eines Stromausfalls besteht eine erhöhte Wahrscheinlichkeit, dass das Dateisystem beim Start der Maschine zerstört ist. Wenn sich /usr/obj auf einem extra Dateisystem befindet, ist das kein Problem. Wenn sich allerdings auf diesem Dateisystem noch andere wertvolle Daten befinden, stellen Sie sicher, dass Sie aktuelle Sicherungen besitzen. &prompt.root; mount -u -o async /usr/obj Ersetzen Sie /usr/obj durch den Mountpoint des entsprechenden Dateisystems, wenn es sich nicht auf einem eigenen Dateisystem befindet. Was mache ich, wenn etwas nicht funktioniert? Stellen Sie sicher, dass sich in Ihrer Umgebung keine Reste eines vorherigen Baus befinden. Das geht ganz einfach: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir Ja, make cleandir muss wirklich zweimal aufgerufen werden. Nachdem Sie aufgeräumt haben, starten Sie den Bauprozess wieder mit make buildworld. Wenn Sie immer noch Probleme haben, schicken Sie die Fehlermeldungen und die Ausgabe von uname -a an die Mailingliste &a.de.questions;. Bereiten Sie sich darauf vor, weitere Fragen zu Ihrer Umgebung zu beantworten. Veraltete Dateien, Verzeichnisse und Bibliotheken löschen AntonShterenlikhtBasiert auf Notizen von Veraltete Dateien, Verzeichnisse und Bibliotheken löschen Aufgrund der ständigen Weiterentwicklung von &os; kann es dazu kommen, dass Dateien (und deren Inhalte) obsolet werden, weil deren Funktionalität entweder in anderen Dateien implementiert wurde, sich die Versionsnummer der Bibliothek geändert hat oder deren Funktion nicht mehr benötigt wird. Dies kann sowohl Dateien und Verzeichnis, aber auch Bibliotheken betreffen. Diese veralteten Dateien sollten daher entfernt werden, bevor Sie Ihr System aktualisieren. Der Vorteil für den Benutzer ist darin zu sehen, dass dessen System (sowie dessen Backup) von nicht mehr benötigten Dateien gereinigt wird. Falls die obsolete Bibliothek Sicherheits- oder Stabilitätsprobleme aufweist, sollte das System ebenfalls aktualisiert werden, um Ihr System sicher zu halten und/oder durch die fehlerhafte Bibliothek verursachte Systemabstürze zu vermeiden. Veraltete Dateien, Verzeichnisse und Bibliotheken sind in der Datei /usr/src/ObsoleteFiles.inc aufgelistet. Die folgenden Anweisungen sollen Ihnen dabei helfen, diese Dateien während der Systemaktualisierung zu entfernen. Im Folgenden wird angenommen, dass Sie den Anweisungen von folgen. Nachdem Sie make installworld sowie mergemaster erfolgreich ausgeführt haben, sollten Sie Ihr System auf veraltete Dateien und Bibliotheken hin überprüfen: &prompt.root; cd /usr/src &prompt.root; make check-old Werden dabei veraltete Dateien gefunden, können diese im nächsten Schritt entfernt werden: &prompt.root; make delete-old Weitere interessante Targets finden sich in der Datei /usr/src/Makefile. Bei jeder Datei wird nachgefragt, ob Sie diese wirklich löschen wollen. Es ist aber auch möglich, alle Dateien automatisch löschen zu lassen. Dies erreichen Sie, indem Sie die Umgebungsvariable BATCH_DELETE_OLD_FILES entsprechend setzen: &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old Alternativ können Sie auch den folgenden Befehl einsetzen (und jeweils die Antwort yes an die einzelnen Abfragen weiterreichen): &prompt.root; yes | make delete-old Warnung Das Löschen veralteter Dateien kann dazu führen, dass Programme, die auf diese Dateien angewiesen sind, nicht mehr funktionieren. Dies gilt insbesondere für veraltete Bibliotheken. In den meisten Fällen ist es dann notwendig, Programme, Ports und Bibliotheken, welche die veraltete Bibliothek verwenden, neu zu bauen, bevor Sie den Befehl make delete-old-libs ausführen. Die Ports-Sammlung enthält Werkzeuge, die Ihnen beim Prüfen von Bibliothek-Abhängigkeiten helfen können: sysutils/libchk sowie sysutils/bsdadminscripts. Veraltete Bibliotheken können zu Konflikten mit neueren Bibliotheken führen und beispielsweise folgende Meldungen verursachen: /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 Um diese Probleme zu lösen, müssen Sie zuerst herausfinden, welcher Port die Bibliothek installiert hat: &prompt.root; pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 &prompt.root; pkg_info -W /usr/local/lib/libXext.so /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 Danach deinstallieren Sie den Port und bauen ihn neu, um ihn danach erneut zu installieren. Dieser Vorgang kann durch den Einsatz der Werkzeuge ports-mgmt/portmaster oder ports-mgmt/portupgrade automatisiert werden. Nachdem Sie alle Ports erfolgreich neu gebaut haben (und Sie daher keine veralteten Bibliotheken mehr verwenden) können Sie die veralteten Bibliotheken endgültig entfernen: &prompt.root; make delete-old-libs Installation mehrerer Maschinen MikeMeyerBeigetragen von Wenn Sie mehrere Maschinen besitzen, die Sie alle auf dem gleichen Stand halten wollen, ist es eine Verschwendung von Ressourcen, die Quellen auf jeder Maschine vorzuhalten und zu übersetzen. Die Lösung dazu ist, eine Maschine den Großteil der Arbeit durchführen zu lassen und den anderen Maschinen das Ergebnis mit NFS zur Verfügung zu stellen. Dieser Abschnitt zeigt Ihnen wie das geht. Voraussetzungen Stellen Sie zuerst eine Liste der Maschinen zusammen, die auf demselben Stand sein sollen. Wir nennen diese Maschinen die Baugruppe. Jede dieser Maschinen kann mit einem eigenen Kernel laufen, doch sind die Programme des Userlands auf allen Maschinen gleich. Wählen Sie aus der Baugruppe eine Maschine aus, auf der der Bau durchgeführt wird, den Bau-Master. Dies sollte eine Maschine sein, die über die nötigen Ressourcen für make buildworld und make installworld verfügt. Sie brauchen auch eine Testmaschine, auf der Sie die Updates testen, bevor Sie sie in Produktion installieren. Dies sollte eine Maschine, eventuell der Bau-Master, sein, die über einen längeren Zeitraum nicht zur Verfügung stehen kann. Alle Maschinen der Baugruppe müssen /usr/obj und /usr/src von derselben Maschine an gleichem Ort einhängen. Idealerweise befinden sich die beiden Verzeichnisse auf dem Bau-Master auf verschiedenen Festplatten, sie können allerdings auch auf dem Bau-Master über NFS zur Verfügung gestellt werden. Wenn Sie mehrere Baugruppen haben, sollte sich /usr/src auf einem Bau-Master befinden und über NFS für den Rest der Maschinen zur Verfügung gestellt werden. Stellen Sie sicher, dass /etc/make.conf und /etc/src.conf auf allen Maschinen einer Baugruppe mit der Datei des Bau-Masters übereinstimmt. Der Bau-Master muss jeden Teil des Systems bauen, den irgendeine Maschine der Baugruppe benötigt. Auf dem Bau-Master müssen in /etc/make.conf alle zu bauenden Kernel mit der Variablen KERNCONF bekannt gegeben werden. Geben Sie dabei den Kernel des Bau-Masters zuerst an. Für jeden zu bauenden Kernel muss auf dem Bau-Master die entsprechende Konfigurationsdatei unter /usr/src/sys/arch/conf abgelegt werden. Installation des Basissystems Nach diesen Vorbereitungen können Sie mit dem Bau beginnen. Bauen Sie auf dem Bau-Master, wie in beschrieben, den Kernel und die Welt, installieren Sie aber nichts. Wechseln Sie auf die Testmaschine und installieren Sie den gerade gebauten Kernel. Wenn diese Maschine /usr/src und /usr/obj über NFS bekommt, müssen Sie das Netzwerk im Single-User-Modus aktivieren und die beiden Dateisysteme einhängen. Am einfachsten ist dies, wenn Sie auf der Testmaschine ausgehend vom Mehrbenutzermodus mit shutdown now in den Single-User-Modus wechseln. Sie können dann mit der normalen Prozedur den neuen Kernel und das System installieren und anschließend mergemaster laufen lassen. Wenn Sie damit fertig sind, können Sie die Maschine wieder in den Mehrbenutzermodus booten. Nachdem Sie sichergestellt haben, dass die Testmaschine einwandfrei funktioniert, wiederholen Sie diese Prozedur für jede Maschine in der Baugruppe. Die Ports-Sammlung Dasselbe Verfahren können Sie auch für die Ports-Sammlung anwenden. Zuerst müssen alle Maschinen einer Baugruppe /usr/ports von derselben Maschine über NFS zur Verfügung gestellt bekommen. Setzen Sie dann ein Verzeichnis für die Quellen auf, das sich alle Maschinen teilen. Dieses Verzeichnis können Sie in /etc/make.conf mit der Variablen DISTDIR angeben. Das Verzeichnis sollte für den Benutzer beschreibbar sein, auf den der Benutzer root vom NFS Subsystem abgebildet wird. Jede Maschine sollte noch WRKDIRPREFIX auf ein lokales Bauverzeichnis setzen. Wenn Sie vorhaben, Pakete zu bauen und zu verteilen, sollten Sie PACKAGES auf ein Verzeichnis mit den gleichen Eigenschaften wie DISTDIR setzen.