<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <!-- The FreeBSD Documentation Project The FreeBSD German Documentation Project $FreeBSD$ $FreeBSDde$ basiert auf: r38826 --> <chapter id="updating-upgrading"> <chapterinfo> <authorgroup> <author> <firstname>Jim</firstname> <surname>Mock</surname> <contrib>Umstrukturiert und aktualisiert von </contrib> </author> <!-- Mar 2000 --> </authorgroup> <authorgroup> <author> <firstname>Jordan</firstname> <surname>Hubbard</surname> <contrib>Im Original von </contrib> </author> <author> <firstname>Poul-Henning</firstname> <surname>Kamp</surname> </author> <author> <firstname>John</firstname> <surname>Polstra</surname> </author> <author> <firstname>Nik</firstname> <surname>Clayton</surname> </author> </authorgroup> <!-- with feedback from various others --> <authorgroup> <author> <firstname>Martin</firstname> <surname>Heinen</surname> <contrib>�bersetzt von </contrib> </author> </authorgroup> </chapterinfo> <title>&os; aktualisieren</title> <sect1 id="updating-upgrading-synopsis"> <title>�bersicht</title> <para>&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.</para> <para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie</para> <itemizedlist> <listitem> <para>wissen, welche Werkzeuge verwendet werden k�nnen, um das System und die Port-Sammlung zu aktualisieren.</para> </listitem> <listitem> <para>wissen, wie Sie Ihr System mit <application>freebsd-update</application>, <application>CVSup</application>, <application>CVS</application> oder <application>CTM</application> aktualisieren.</para> </listitem> <listitem> <para>wissen, wie man das aktuell installierte System mit einer urspr�nglichen Version vergleicht.</para> </listitem> <listitem> <para>wissen, wie Sie ihre Dokumentation mit <application>CVSup</application> oder Dokumentations-Ports <!-- oder <application>Docsnap</application> --> aktuell halten k�nnen.</para> </listitem> <listitem> <para>den Unterschied zwischen den beiden Entwicklungszweigen &os.stable; und &os.current; kennen.</para> </listitem> <listitem> <para>Wissen, wie Sie das komplette Basissystem mit <command>make buildworld</command> neu bauen und installieren.</para> </listitem> </itemizedlist> <para>Bevor Sie dieses Kapitel lesen, sollten Sie</para> <itemizedlist> <listitem> <para>Ihr Netzwerk richtig konfiguriert haben (<xref linkend="advanced-networking"/>) und</para> </listitem> <listitem> <para>wissen, wie Sie Software Dritter installieren (<xref linkend="ports"/>).</para> </listitem> </itemizedlist> <note> <para>Im gesamten Kapitel wird der Befehl <command>cvsup</command> verwendet, um die &os; Quellen zu beziehen und zu aktualisieren. Um es zu verwenden, ben�tigen Sie einen Port oder ein Paket wie <filename role="package">net/cvsup</filename> (falls Sie den graphischen <command>cvsup</command>-Client nicht ben�tigen, k�nnen Sie auch nur den Port <filename>net/cvsup-without-gui</filename> installieren). Alternativ k�nnen Sie auch &man.csup.1; verwenden, das bereits Teil des Basissystems ist.</para> </note> </sect1> <sect1 id="updating-upgrading-freebsdupdate"> <sect1info> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>Geschrieben von </contrib> </author> </authorgroup> <authorgroup> <author> <firstname>Colin</firstname> <surname>Percival</surname> <contrib>Basierend auf bereitgestellten Mitschriften von </contrib> </author> </authorgroup> <authorgroup> <author> <firstname>Benedict</firstname> <surname>Reuschling</surname> <contrib>�bersetzt von </contrib> </author> </authorgroup> </sect1info> <title>&os;-Update</title> <indexterm><primary>Updating and Upgrading</primary></indexterm> <indexterm> <primary>freebsd-update</primary> <see>updating-upgrading</see> </indexterm> <para>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.</para> <para>Das ist seit l�ngerem nicht mehr der Fall, da &os; jetzt ein Werkzeug namens <command>freebsd-update</command> 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.</para> <note> <para>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: <ulink url="http://www.FreeBSD.org/releases/"></ulink>.</para> </note> <para>Wenn eine <command>crontab</command> existiert, welche die Eigenschaften von <command>freebsd-update</command> verwendet, muss diese deaktiviert werden, bevor die folgende Aktion gestartet wird.</para> <sect2 id="freebsdupdate-config-file"> <title>Die Konfigurationsdatei</title> <para>Manche Anwender m�chten sicherlich Einstellungen in der Standard-Konfigurationsdatei unter <filename>/etc/freebsd-update.conf</filename> 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:</para> <programlisting># Components of the base system which should be kept updated. Components src world kernel</programlisting> <para>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 <literal>world/games</literal> an dieser Stelle es erlauben, Aktualisierungen f�r Spiele anzuwenden. Die Verwendung von <literal>src/bin</literal> erlaubt es, den Quellcode in <filename class="directory">src/bin</filename> aktuell zu halten.</para> <para>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.</para> <programlisting># Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. IgnorePaths</programlisting> <para>F�gen Sie Pfade wie <filename class="directory">/bin</filename> oder <filename class="directory">/sbin</filename> hinzu, um diese speziellen Verzeichnisse w�hrend des Aktualisierungsprozesses unber�hrt zu lassen. Diese Option kann verwendet werden, um zu verhindern, dass <command>freebsd-update</command> lokale �nderungen �berschreibt.</para> <programlisting># 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</programlisting> <para>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 <literal>KeepModifiedMetadata</literal>, die <command>freebsd-update</command> instruiert, die �nderungen w�hrend der Zusammenf�hrung zu speichern.</para> <programlisting># 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/</programlisting> <para>Eine Liste von Verzeichnissen mit Konfigurationsdateien, in denen <command>freebsd-update</command> 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 <command>freebsd-update</command> bricht ab. Wenn Sie im Zweifel sind, sichern Sie das <filename class="directory">/etc</filename> Verzeichnis und akzeptieren einfach die �nderungen. Lesen Sie <xref linkend="mergemaster"/>, um Informationen �ber das <command>mergemaster</command>-Kommando zu erhalten.</para> <programlisting># Directory in which to store downloaded updates and temporary # files used by &os; Update. # WorkDir /var/db/freebsd-update</programlisting> <para>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.</para> <programlisting># 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</programlisting> <para>Wenn dies auf <literal>yes</literal> gesetzt ist, wird <command>freebsd-update</command> annehmen, dass die <literal>Components</literal>-Liste vollst�ndig ist und nicht versuchen, �nderungen ausserhalb dieser Liste zu t�tigen. Tats�chlich wird <command>freebsd-update</command> versuchen, jede Datei zu aktualisieren, die zu der <literal>Components</literal>-Liste geh�rt.</para> </sect2> <sect2 id="freebsdupdate-security-patches"> <title>Sicherheitsaktualisierungen</title> <para>Sicherheitsaktualisierungen sind auf einer entfernten Maschine abgelegt und k�nnen durch das folgende Kommando heruntergeladen und installiert werden:</para> <screen>&prompt.root; <userinput>freebsd-update fetch</userinput> &prompt.root; <userinput>freebsd-update install</userinput></screen> <para>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 <command>freebsd-update</command> kann als n�chtlicher &man.cron.8;-Job ablaufen. Ein Eintrag in der Datei <filename>/etc/crontab</filename> ist f�r diese Aufgabe ausreichend:</para> <programlisting>@daily root freebsd-update cron</programlisting> <para>Dieser Eintrag besagt, dass einmal am Tag <command>freebsd-update</command> ausgef�hrt wird. Auf diese Weise kann <command>freebsd-update</command> nur durch die Verwendung des <option>cron</option>-Arguments pr�fen, ob Aktualisierungen vorliegen. Wenn Korrekturen existieren, werden diese automatisch auf die lokale Festplatte heruntergeladen, aber nicht eingespielt. Der <username>root</username>-Benutzer bekommt eine Nachricht, damit dieser die Korrekturen manuell installiert.</para> <para>Sollte irgendetwas schief gelaufen sein, kann <command>freebsd-update</command> den letzten Satz von �nderungen mit dem folgenden Befehl zur�ckrollen:</para> <screen>&prompt.root; <userinput>freebsd-update rollback</userinput></screen> <para>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.</para> <para>Das <command>freebsd-update</command>-Werkzeug kann nur den <filename>GENERIC</filename>-Kernel automatisch aktualisieren. Wenn ein selbstkonfigurierter Kernel verwendet wird, muss dieser neu erstellt und installiert werden, nachdem <command>freebsd-update</command> den Rest der Aktualisierungen durchgef�hrt hat. Allerdings wird <command>freebsd-update</command> den <filename>GENERIC</filename>-Kernel in <filename class="directory">/boot/GENERIC</filename> erkennen und aktualisieren (falls dieser existiert), sogar dann, wenn dies nicht der aktuell verwendete Kernel des Systems ist.</para> <note> <para>Es ist eine gute Idee, immer eine Kopie des <filename>GENERIC</filename>-Kernels in <filename class="directory">/boot/GENERIC</filename> aufzubewahren. Das wird bei der Diagnose von verschiedenen Problemen eine grosse Hilfe sein, sowie bei der Durchf�hrung von Versionsaktualisierungen mit <command>freebsd-update</command>, wie in <xref linkend="freebsdupdate-upgrade"/> beschrieben ist.</para> </note> <para>Solange die Standardkonfiguration in <filename>/etc/freebsd-update.conf</filename> nicht ge�ndert wurde, wird <command>freebsd-update</command> 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.</para> <note> <para>Die Aktualisierungen, die �ber <command>freebsd-update</command> 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 <command>freebsd-update install</command> ge�ndert wurden. Allerdings wird <command>freebsd-update</command> auf alle F�lle die Datei <filename>/usr/src/sys/conf/newvers.sh</filename> aktualisieren. Der aktuelle Patch-Level (angegeben durch die <literal>-p</literal>-Nummer, die von dem Kommando <command>uname -r</command> ausgegeben wird) wird aus dieser Datei ausgelesen. Die Neuinstallation des selbstkonfigurierten Kernels, selbst wenn sich daran nichts ge�dert 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.</para> </note> </sect2> <sect2 id="freebsdupdate-upgrade"> <title>Aktualisierungen an Haupt- und Unterversionen</title> <para>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 Ports entweder entfernt und neu installiert oder zu einem sp�teren Zeitpunkt mittels <filename role="package">ports-mgmt/portupgrade</filename> aktualisiert werden. Die meisten Anwender werden wahrscheinlich einen Testlauf mittels des folgenden Kommandos durchf�hren wollen:</para> <screen>&prompt.root; <userinput>portupgrade -af</userinput></screen> <para>Dies sorgt daf�r, dass alles korrekt neu installiert wird. Beachten Sie, dass das Setzen der <makevar>BATCH</makevar>-Umgebungsvariable auf <literal>yes</literal> w�hrend dieses Prozesses auf jede Eingabe mit <literal>ja</literal> antwortet, was es nicht mehr notwendig macht, manuell eingreifen zu m�ssen.</para> <para>Wenn ein selbstkonfigurierter Kernel verwendet wird, ist der Aktualisierungsprozess ein kleines bisschen aufw�ndiger. Eine Kopie des <filename>GENERIC</filename>-Kernels wir ben�tigt und sollte in <filename class="directory">/boot/GENERIC</filename> abgelegt sein. Wenn der <filename>GENERIC</filename>-Kernel nicht bereits im System vorhanden ist, kann dieser �ber eine der folgenden Methoden bezogen werden:</para> <itemizedlist> <listitem> <para>Wenn ein eigener Kernel genau einmal gebaut wurde, ist der Kernel im Verzeichnis <filename class="directory">/boot/kernel.old</filename> in Wirklichkeit der <filename>GENERIC</filename>-Kernel. Benennen Sie einfach dieses Verzeichnis in <filename class="directory">/boot/GENERIC</filename> um.</para> </listitem> <listitem> <para>Angenommen, direkter Zugriff auf die Maschine ist m�glich, so kann eine Kopie des <filename>GENERIC</filename>-Kernels von den CD-ROM-Medien installiert werden. Legen Sie die Installations-CD ein und benutzen Sie die folgenden Befehle:</para> <screen>&prompt.root; <userinput>mount /cdrom</userinput> &prompt.root; <userinput>cd /cdrom/<replaceable>X.Y-RELEASE</replaceable>/kernels</userinput> &prompt.root; <userinput>./install.sh GENERIC</userinput></screen> <para>Ersetzen Sie <filename class="directory"><replaceable>X.Y-RELEASE</replaceable></filename> mit der richtigen Version der Ver�ffentlichung, die Sie verwenden. Der <filename>GENERIC</filename>-Kernel wird standardm�ssig in <filename class="directory">/boot/GENERIC</filename> installiert.</para> </listitem> <listitem> <para>Falls alle obigen Schritte fehlschlagen, kann der <filename>GENERIC</filename>-Kernel folgendermassen aus den Quellen neu gebaut und installiert werden:</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>env DESTDIR=/boot/GENERIC make kernel</userinput> &prompt.root; <userinput>mv /boot/GENERIC/boot/kernel/* /boot/GENERIC</userinput> &prompt.root; <userinput>rm -rf /boot/GENERIC/boot</userinput></screen> <para>Damit dieser Kernel als <filename>GENERIC</filename>-Kernel von <command>freebsd-update</command> erkannt wird, darf die <filename>GENERIC</filename>-Konfigurationsdatei in keiner Weise ge�ndert worden sein. Es wird ebenfalls empfohlen, dass dieser ohne irgendwelche speziellen Optionen erstellt wird (bevorzugt mit einer leeren <filename>/etc/make.conf</filename>).</para> </listitem> </itemizedlist> <para>Der Neustart in den <filename>GENERIC</filename>-Kernel ist zu diesem Zeitpunkt nicht notwendig.</para> <para>Aktualisierungen an Haupt- und Unterversionen k�nnen durchgef�hrt werden, wenn man <command>freebsd-update</command> eine Release-Version als Ziel �bergibt. Beispielsweise wird das folgende Kommando das System auf &os; 8.1 aktualisieren:</para> <screen>&prompt.root; <userinput>freebsd-update -r 8.1-RELEASE upgrade</userinput></screen> <para>Nachdem das Kommando empfangen wurde, �berpr�ft <command>freebsd-update</command> 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:</para> <screen>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</screen> <para>An diesem Punkt wird <command>freebsd-update</command> 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.</para> <para>Wenn ein selbstkonfigurierter Kernel benutzt wird, produziert der vorherige Schritt eine Warnung �hnlich zu der folgenden:</para> <screen>WARNING: This system is running a "<replaceable>MYKERNEL</replaceable>" 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"</screen> <para>Diese Warnung kann an dieser Stelle problemlos ignoriert werden. Der aktualisierte <filename>GENERIC</filename>-Kernel wird als ein Zwischenschritt im Aktualisierungsprozess verwendet.</para> <para>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 <filename class="directory">/etc</filename> anlegen und wichtige Dateien sp�ter manuell vereinen, beispielsweise <filename>master.passwd</filename> oder <filename>group</filename>.</para> <note> <para>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.</para> </note> <para>Sobald dieser Prozess abgeschlossen ist, k�nnen die Aktualisierungen �ber das folgende Kommando auf die Platte geschrieben werden:</para> <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen> <para>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 <filename class="directory">/boot/GENERIC</filename> zu setzen (welcher aktualisiert wurde):</para> <screen>&prompt.root; <userinput>nextboot -k GENERIC</userinput></screen> <warning> <para>Bevor mit dem <filename>GENERIC</filename>-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 <filename>GENERIC</filename>-Kernel �ber die Datei <filename>/boot/loader.conf</filename> �bernommen werden. Sie sollten ebenfalls nicht ben�tigte Dienste, eingeh�ngte Platten, verbundene Netzlaufwerke, usw. deaktivieren, bis der Aktualisierungsprozess abgeschlossen ist.</para> </warning> <para>Die Maschine sollte nun mit dem aktualisierten Kernel neu gestartet werden:</para> <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen> <para>Sobald das System wieder hochgefahren wurde, muss <command>freebsd-update</command> erneut gestartet werden. Der Zustand des Prozesses wurde zuvor gesichert und deshalb wird <command>freebsd-update</command> 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:</para> <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen> <note> <para>Abh�ngig davon, ob irgendwelche Bibliotheksversionen erh�ht wurden, kann es sein, dass nur zwei Installationsphasen anstatt drei durchlaufen werden.</para> </note> <para>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 <filename role="package">ports-mgmt/portupgrade</filename>-Befehl kann verwendet werden, um diesen Vorgang zu automatisieren. Die folgenden Kommandos k�nnen verwendet werden, um diesen Prozess zu starten:</para> <screen>&prompt.root; <userinput>portupgrade -f ruby</userinput> &prompt.root; <userinput>rm /var/db/pkg/pkgdb.db</userinput> &prompt.root; <userinput>portupgrade -f ruby18-bdb</userinput> &prompt.root; <userinput>rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db</userinput> &prompt.root; <userinput>portupgrade -af</userinput></screen> <para>Sobald dies abgeschlossen ist, beenden Sie den Aktualisierungsprozess mit einem letzten Aufruf von <command>freebsd-update</command>. Geben Sie den folgenden Befehl ein, um alle losen Enden des Aktualisierungsprozesses miteinander zu verkn�pfen:</para> <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen> <para>Wenn der <filename>GENERIC</filename>-Kernel tempor�r Verwendung fand, ist dies der richtige Zeitpunkt, einen neuen, selbstkonfigurierten Kernel zu bauen und �ber die �bliche Methode zu installieren.</para> <para>Booten Sie anschliessend die Maschine in die neue &os;-Version. Der Prozess ist damit abgeschlossen.</para> </sect2> <sect2 id="freebsdupdate-system-comparison"> <title>Vergleich des Systemzustands</title> <para>Das <command>freebsd-update</command>-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:</para> <screen>&prompt.root; <userinput>freebsd-update IDS >> outfile.ids</userinput></screen> <warning> <para>Obwohl der Befehlsname <acronym>IDS</acronym> lautet, sollte er in keiner Weise als Ersatz f�r ein Intrusion Detection System wie <filename role="package">security/snort</filename> angesehen werden. Da <command>freebsd-update</command> seine Daten auf Platte ablegt, ist die M�glichkeit von Verf�lschungen offensichtlich. Obwohl diese M�glichkeit durch die Verwendung von <varname>kern.securelevel</varname> oder die Ablage von <command>freebsd-update</command> 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 <acronym>DVD</acronym> oder einen externen, separat aufbewahrten <acronym>USB</acronym>-Plattenspeicher, zu vergleichen.</para> </warning> <para>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 <filename>outfile.ids</filename> geschickt wurde. Es scrollt zu schnell vorbei, um diese mit den Augen zu vergleichen und bald wird auch der Konsolenpuffer damit �berf�llt.</para> <para>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:</para> <screen>&prompt.root; <userinput>cat outfile.ids | awk '{ print $1 }' | more</userinput> /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf</screen> <para>Diese Ausgabe wurde abgeschnitten, es existieren noch viel mehr Dateien dazu. Manche dieser Dateien besitzen ganz selbstverst�ndliche Ver�nderungen, <filename>/etc/passwd</filename> 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 <command>freebsd-update</command> diese aktualisiert hat. Um bestimmte Dateien oder Verzeichnisse auszuschliessen, h�ngen Sie diese an die <literal>IDSIgnorePaths</literal>-Option in <filename>/etc/freebsd-update.conf</filename> an.</para> <para>Diese Vorgehensweise kann als Teil einer ausgekl�gelten Aktualisierungsmethode benutzt werden, unabh�ngig von der zuvor angesprochenen Variante.</para> </sect2> </sect1> <sect1 id="updating-upgrading-portsnap"> <sect1info> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>Geschrieben von </contrib> </author> </authorgroup> <authorgroup> <author> <firstname>Colin</firstname> <surname>Percival</surname> <contrib>Basierend auf bereitgestellten Mitschriften von </contrib> </author> </authorgroup> <authorgroup> <author> <firstname>Benedict</firstname> <surname>Reuschling</surname> <contrib>�bersetzt von </contrib> </author> </authorgroup> </sect1info> <title>Portsnap: Ein Werkzeug zur Aktualisierung der Ports-Sammlung</title> <indexterm><primary>Updating and Upgrading</primary></indexterm> <indexterm> <primary>Portsnap</primary> <see>Updating and Upgrading</see> </indexterm> <para>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:</para> <screen>&prompt.root; <userinput>portsnap fetch</userinput> Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. 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.</screen> <para>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.</para> <para>Wenn &man.portsnap.8; erfolgreich die <command>fetch</command>-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 <command>portsnap</command> das erste Mal ausgef�hrt haben, m�ssen Sie den Befehl <literal>portsnap extract</literal> verwenden, um die Ports-Sammlung zu installieren:</para> <screen>&prompt.root; <userinput>portsnap extract</userinput> /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 <replaceable>...</replaceable></screen> <para>Um Ihre bereits installierte Ports-Sammlung zu aktualisieren, verwenden Sie hingegen den Parameter <literal>update</literal>:</para> <screen>&prompt.root; <userinput>portsnap update</userinput></screen> <para>Der Prozess ist jetzt abgeschlossen und Anwendungen k�nnen mittels der aktuellen Ports-Sammlung installiert oder aktualisiert werden.</para> <para>Die Operationen <literal>fetch</literal> und <literal>extract</literal> oder <literal>update</literal> k�nnen auch nacheinander ausgef�hrt werden, wie im folgenden Beispiel gezeigt:</para> <screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen> <para>Dieser Befehl l�dt die aktuelle Version der Ports-Sammlung herunter und aktualisiert anschlie�end Ihre lokale Version im Verzeichnis <filename class="directory">/usr/ports</filename>.</para> </sect1> <sect1 id="updating-upgrading-documentation"> <sect1info> <authorgroup> <author> <firstname>Benedict</firstname> <surname>Reuschling</surname> <contrib>�bersetzt von </contrib> </author> </authorgroup> </sect1info> <title>Aktualisieren der Dokumentationssammlung</title> <indexterm><primary>Updating and Upgrading</primary></indexterm> <indexterm> <primary>Documentation</primary> <see>Updating and Upgrading</see> </indexterm> <para>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 <ulink url="http://www.freebsd.org/doc/">&os; Webseite</ulink> 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.</para> <sect2 id="csup-doc"> <title>Verwenden von CVSup um die Dokumentation zu aktualisieren</title> <para>Die Quellen und die installierte Kopie der &os; Dokumentation kann mittels <application>CVSup</application> aktualisiert werden, indem ein �hnlicher Mechanismus angewendet wird, wie derjenige f�r die Betriebssystemquellen (vergleichen Sie mit <xref linkend="makeworld"/>). Dieser Abschnitt beschreibt:</para> <itemizedlist> <listitem> <para>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.</para> </listitem> <listitem> <para>Wie man eine Kopie der Dokumentationsquellen nach <filename class="directory">/usr/doc</filename> herunterl�dt, unter Verwendung von <application>CVSup</application>.</para> </listitem> <listitem> <para>Wie man die &os; Dokumentation aus den Quellen baut und unter <filename class="directory">/usr/share/doc</filename> installiert.</para> </listitem> <listitem> <para>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.</para> </listitem> </itemizedlist> </sect2> <sect2 id="installing-documentation-toolchain"> <title>CVSup und die Werkzeugsammlung der Dokumentation installieren</title> <para>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.</para> <para>Alle ben�tigten Werkzeuge sind als Teil der Ports-Sammlung verf�gbar. Der Port <filename role="package">textproc/docproj</filename> dient als Masterport, der vom &os; Documentation Project entwickelt wurde, um die initiale Installation und zuk�nftige Aktualisierungen dieser Werkzeuge zu vereinfachen.</para> <note> <para>Wenn Sie die Dokumentation nicht als &postscript; oder PDF ben�tigen, k�nnen Sie alternativ die Installation des <filename role="package">textproc/docproj-nojadetex</filename>-Ports in Erw�gung ziehen. Diese Version der Dokumentations-Werkzeugsammlung enth�lt alles ausser das <application>teTeX</application>-Textsatzsystem. <application>teTeX</application> ist eine sehr grosse Sammlung an Werkzeugen, deshalb ist es vern�nftig, deren Installation auszulassen, wenn die Ausgabe von PDF nicht unbedingt gebraucht wird.</para> </note> <para>F�r weitere Informationen �ber das Installieren und Verwenden von <application>CVSup</application>, lesen Sie <link linkend="cvsup">CVSup verwenden</link>.</para> </sect2> <sect2 id="updating-documentation-sources"> <title>Die Dokumentationsquellen aktualisieren</title> <para>Das Programm <application>CVSup</application> kann eine saubere Kopie der Dokumentationsquellen holen, indem es die Datei <filename>/usr/share/examples/cvsup/doc-supfile</filename> als Konfigurationsvorlage verwendet. Der Standard-Host zum Aktualisieren ist auf einen Platzhalterwert im <filename>doc-supfile</filename> gesetzt, aber &man.cvsup.1; akzeptiert auch einen Hostnamen �ber die Kommandozeile. Somit k�nnen die Dokumentationsquellen von einem der <application>CVSup</application>-Server geholt werden, indem man eingibt:</para> <screen>&prompt.root; <userinput>cvsup -h <replaceable>cvsup.FreeBSD.org</replaceable> -g -L 2 <filename>/usr/share/examples/cvsup/doc-supfile</filename></userinput></screen> <para>�ndern Sie <replaceable>cvsup.FreeBSD.org</replaceable> auf den Ihnen am n�chsten gelegenen <application>CVSup</application>-Server. Eine vollst�ndige Liste von Spiegelservern finden Sie unter <xref linkend="cvsup-mirrors"/>.</para> <para>Es dauert eine Weile, wenn die Dokumentationsquellen das allererste Mal heruntergeladen werden. Lassen Sie es laufen, bis es fertig ist.</para> <para>Zuk�nftige Aktualisierungen der Dokumentationsquellen k�nnen Sie �ber den gleichen Befehl bekommen. Das Programm <application>CVSup</application> l�dt und kopiert nur diejenigen Aktualisierungen herunter, die seit seinem letzten Aufruf hinzugekommen sind. Deshalb sollte jeder weitere Aufruf von <application>CVSup</application> nach dem Ersten wesentlich schneller abgeschlossen sein.</para> <para>Nachdem die Quellen einmal ausgecheckt wurden, besteht ein anderer Weg, die Dokumentation zu aktualisieren, darin, das <filename>Makefile</filename> im Verzeichnis <filename class="directory">/usr/doc</filename> anzupassen. Durch setzen von <makevar>SUP_UPDATE</makevar>, <makevar>SUPHOST</makevar> und <makevar>DOCSUPFILE</makevar> in der Datei <filename>/etc/make.conf</filename> ist es jetzt m�glich, folgendes zu tun:</para> <screen>&prompt.root; <userinput>cd /usr/doc</userinput> &prompt.root; <userinput>make update</userinput></screen> <para>Ein typischer Satz dieser &man.make.1;-Optionen f�r <filename>/etc/make.conf</filename> ist:</para> <programlisting>SUP_UPDATE= yes SUPHOST?= cvsup.freebsd.org DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting> <note> <para>Das Setzen des Werts von <makevar>SUPHOST</makevar> und <makevar>DOCSUPFILE</makevar> auf <literal>?=</literal> erlaubt es, diese in der Kommandozeile von make zu �berschreiben. Diese Methode wird empfohlen, um Optionen zu <filename>make.conf</filename> hinzuzuf�gen, um zu verhindern, dass man die Datei jedes Mal bearbeiten muss, um einen anderen Wert f�r die Option auszuprobieren.</para> </note> </sect2> <sect2 id="updating-documentation-options"> <title>Einstellbare Optionen der Dokumentationsquellen</title> <para>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 <filename>/etc/make.conf</filename> setzen, oder als Kommandozeilenoptionen, die dem &man.make.1;-Werkzeug �bergeben werden.</para> <para>Die folgenden Optionen sind ein paar davon:</para> <variablelist> <varlistentry> <term><makevar>DOC_LANG</makevar></term> <listitem> <para>Eine Liste von Sprachen und Kodierungen, die gebaut und installiert werden sollen, z.B. <literal>en_US.ISO8859-1</literal>, um nur die englische Dokumentation zu erhalten.</para> </listitem> </varlistentry> <varlistentry> <term><makevar>FORMATS</makevar></term> <listitem> <para>Ein einzelnes Format oder eine Liste von Ausgabeformaten, das gebaut werden soll. Momentan werden <literal>html</literal>, <literal>html-split</literal>, <literal>txt</literal>, <literal>ps</literal>, <literal>pdf</literal>, und <literal>rtf</literal> unterst�tzt.</para> </listitem> </varlistentry> <varlistentry> <term><makevar>SUPHOST</makevar></term> <listitem> <para>Der Hostname des <application>CVSup</application>-Servers, der verwendet werden soll, um Aktualisierungen zu holen.</para> </listitem> </varlistentry> <varlistentry> <term><makevar>DOCDIR</makevar></term> <listitem> <para>Wohin die Dokumentation installiert werden soll. Der Standardpfad ist <filename class="directory">/usr/share/doc</filename>.</para> </listitem> </varlistentry> </variablelist> <para>F�r weitere make-Variablen, die als systemweite Optionen in &os; unterst�tzt werden, lesen Sie &man.make.conf.5;.</para> <para>F�r weitere make-Variablen, die vom System zum Erstellen der &os;-Dokumentation unterst�tzt werden, lesen Sie die <ulink url="&url.doc.langbase;/books/fdp-primer">Fibel f�r neue Mitarbeiter des &os;-Dokumentationsprojekts</ulink>.</para> </sect2> <sect2 id="updating-installed-documentation"> <title>Die &os;-Dokumentation aus den Quellen installieren</title> <para>Wenn ein aktueller Schnappschuss der Dokumentationsquellen nach <filename class="directory">/usr/doc</filename> heruntergeladen wurde, ist alles bereit f�r eine Aktualisierung der bestehenden Dokumentation.</para> <para>Eine komplette Aktualisierung aller Sprachoptionen, definiert durch die <makevar>DOC_LANG</makevar> Makefile-Option, kann durch folgende Eingabe erreicht werden:</para> <screen>&prompt.root; <userinput>cd /usr/doc</userinput> &prompt.root; <userinput>make install clean</userinput></screen> <para>Wenn <filename>make.conf</filename> mit den richtigen Optionen <makevar>DOCSUPFILE</makevar>, <makevar>SUPHOST</makevar> und <makevar>SUP_UPDATE</makevar> eingerichtet wurde, kann der Installationsschritt mit einer Aktualisierung der Dokumentationsquellen kombiniert werden, indem man eingibt:</para> <screen>&prompt.root; <userinput>cd /usr/doc</userinput> &prompt.root; <userinput>make update install clean</userinput></screen> <para>Wenn nur eine Aktualisierung einer bestimmten Sprache gew�nscht wird, kann &man.make.1; in einem sprachspezifischen Unterverzeichnis von <filename class="directory">/usr/doc</filename> aufgerufen werden, z.B.:</para> <screen>&prompt.root; <userinput>cd /usr/doc/en_US.ISO8859-1</userinput> &prompt.root; <userinput>make update install clean</userinput></screen> <para>Die zu installierenden Ausgabeformate k�nnen durch das Setzen der make-Variablen <makevar>FORMATS</makevar> angegeben werden, z.B.:</para> <screen>&prompt.root; <userinput>cd /usr/doc</userinput> &prompt.root; <userinput>make FORMATS='html html-split' install clean</userinput></screen> </sect2> <sect2 id="doc-ports"> <sect2info> <authorgroup> <author> <firstname>Marc</firstname> <surname>Fonvieille</surname> <contrib>Basierend auf der Arbeit von </contrib> </author> </authorgroup> </sect2info> <title>Verwendung von Dokumentations-Ports</title> <indexterm><primary>Updating and Upgrading</primary></indexterm> <indexterm> <primary>documentation package</primary> <see>Updating and Upgrading</see> </indexterm> <para>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 <emphasis>documentation toolchain</emphasis>, ein gewisser Grad an Vertrautheit mit <application>CVS</application> 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:</para> <itemizedlist> <listitem> <para>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).</para> </listitem> <listitem> <para>die Dokumentationsquellen herunterzuladen und durch das Ports-System erstellen zu lassen (was die Schritte zum Auschecken und Erstellen etwas erleichtert).</para> </listitem> </itemizedlist> <para>Diese beiden Methoden der Aktualisierung der &os;-Dokumentation werden durch eine Menge von <emphasis>Dokumentations-Ports</emphasis> unterst�tzt, die von &a.doceng; monatlich aktualisiert wird. Diese sind in der Ports-Sammlung unter der virtuellen Kategorie, <ulink url="http://www.freshports.org/docs/">docs</ulink> genannt, gelistet.</para> <sect3 id="doc-ports-install-make"> <title>Erstellen und Installieren von Dokumentations-Ports</title> <para>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.</para> <note> <para>Als zus�tzliche Eigenschaft zeichnen sie eine Abh�ngigkeit zum <emphasis>Dokumentations-Werkzeugsatz</emphasis> auf, wenn die Dokumentations-Ports lokal erstellt werden, weshalb dieser auch automatisch mitinstalliert wird.</para> </note> <para>Die Dokumentations-Ports sind wie folgt organisiert:</para> <itemizedlist> <listitem> <para>Es existiert ein <quote>Master-Port</quote>, <filename role="package">misc/freebsd-doc-en</filename>, 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.</para> </listitem> <listitem> <para>Es gibt einen <quote>Alles-in-Einem-Port</quote>, <filename role="package">misc/freebsd-doc-all</filename>, welcher die komplette Dokumentation in allen verf�gbaren Sprachen erstellt und installiert.</para> </listitem> <listitem> <para>Schliesslich gibt es noch einen sogenannten <quote>slave port</quote> f&¨r jede �bersetzung, z.B.: <filename role="package">misc/freebsd-doc-hu</filename> f�r Dokumentation in ungarischer Sprache. All diese ben�tigen den Master-Port und installieren die �bersetzte Dokumentation in der entsprechenden Sprache.</para> </listitem> </itemizedlist> <para>Um einen Dokumentations-Port aus den Quellen zu installieren, geben Sie das folgende Kommando (als <username>root</username>) ein:</para> <screen>&prompt.root; <userinput>cd /usr/ports/misc/freebsd-doc-en</userinput> &prompt.root; <userinput>make install clean</userinput></screen> <para>Auf diese Weise wird die englische Dokumentation gebaut und als getrenntes <acronym>HTML</acronym>-Format im Verzeichnis <filename class="directory">/usr/local/share/doc/freebsd</filename> installiert (genau wie unter <ulink url="http://www.FreeBSD.org"></ulink> zu finden).</para> <sect4 id="doc-ports-options"> <title>Gebr�uchliche Schalter und Optionen</title> <para>Es gibt viele Optionen, um das Standarderhalten der Dokumentations-Ports zu ver�ndern. Im Folgenden sind nur ein paar davon aufgef�hrt:</para> <variablelist> <varlistentry> <term><makevar>WITH_HTML</makevar></term> <listitem> <para>Erlaubt das Erstellen im HTML-Format: eine einzige HTML-Datei pro Dokument. Die formatierte Dokumentation wird als Datei mit dem Namen <filename>article.html</filename> gespeichert, oder, je nachdem, als <filename>book.html</filename>, zuzu�glich der Bilder.</para> </listitem> </varlistentry> <varlistentry> <term><makevar>WITH_PDF</makevar></term> <listitem> <para>Erlaubt das Erstellen von &adobe; Portable Document Format, f�r die Verwendung mit &adobe; &acrobat.reader;, <application>Ghostscript</application> oder anderen PDF-Betrachtern. Die formatierte Dokumentation wird als Datei mit dem Namen <filename>article.pdf</filename> oder, soweit angemessen, als <filename>book.pdf</filename> gespeichert.</para> </listitem> </varlistentry> <varlistentry> <term><makevar>DOCBASE</makevar></term> <listitem> <para>Wohin die Dokumentation installiert werden soll. Der Standardpfad ist <filename class="directory">/usr/local/share/doc/freebsd</filename>.</para> <note> <para>Beachten Sie, dass sich der Standardpfad von dem Verzeichnis unterscheidet, das von der <application>CVSup</application>-Methode verwendet wird. Das liegt daran, dass ein Port installiert wird und diese �blicherweise im Verzeichnis <filename class="directory">/usr/local</filename> abgelegt werden. Durch setzen der <makevar>PREFIX</makevar>-Variablen kann dieses Verhalten ge�ndert werden.</para> </note> </listitem> </varlistentry> </variablelist> <para>Es folgt ein kurzes Beispiel, wie die Variablen verwendet werden, um die oben erw�hnte ungarische Dokumentation als Portable Document Format zu installieren:</para> <screen>&prompt.root; cd /usr/ports/misc/freebsd-doc-hu &prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean</screen> </sect4> </sect3> <sect3 id="doc-ports-install-package"> <title>Verwendung von Dokumentations-Paketen</title> <para>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.</para> <para>&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.</para> <note> <para>Wenn Bin�rpakete zu Einsatz kommen, wird die &os;-Dokumentation in <emphasis>allen</emphasis> verf�gbaren Formaten in der gegebenen Sprache installiert.</para> </note> <para>Zum Beispiel installiert das folgende Kommando das aktuelle, vorgefertigte Paket der ungarischen Dokumentation:</para> <screen>&prompt.root; <userinput>pkg_add -r hu-freebsd-doc</userinput></screen> <note> <para>Pakete haben das folgende Namensformat, welches sich von dem Namen des dazugeh�rigen Ports unterscheidet: <literal><replaceable>lang</replaceable>-freebsd-doc</literal>. <replaceable>lang</replaceable> entspricht hier der Kurzform des Sprachcodes, z.B. <literal>hu</literal> f�r Ungarisch, oder <literal>zh_cn</literal> f�r vereinfachtes Chinesisch.</para> </note> </sect3> <sect3 id="doc-ports-update"> <title>Dokumentations-Ports aktualisieren</title> <para>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 <filename role="package">ports-mgmt/portupgrade</filename> indem nur Pakete verwendet werden sollen:</para> <screen>&prompt.root; <userinput>portupgrade -PP hu-freebsd-doc</userinput></screen> </sect3> </sect2> <!-- FIXME: Waiting for a working docsnap server... --> <![ IGNORE [ <sect2 id="docsnap"> <sect2info> <authorgroup> <author> <firstname>Pav</firstname> <surname>Lucistnik</surname> <contrib>Based on information provided by </contrib> </author> </authorgroup> </sect2info> <title>Using Docsnap</title> <indexterm><primary>Updating and Upgrading</primary></indexterm> <indexterm> <primary>Docsnap</primary> <see>Updating and Upgrading</see> </indexterm> <para><application>Docsnap</application> is an &man.rsync.1; repository for updating installed &os; Documentation in a relatively easy and fast way. A <quote><application>Docsnap</application> server</quote> tracks the documentation sources, and builds them in HTML format every hour. The <filename role="package">textproc/docproj</filename> is unneeded with <application>Docsnap</application> as only patches to the built documentation exist.</para> <para>The only requirement for using this technique is the <filename role="package">net/rsync</filename> port or package. To add it, use the following command:</para> <screen>&prompt.root; <userinput>pkg_add -r rsync</userinput></screen> <note> <para><application>Docsnap</application> has been originally developed for updating documentation installed to <filename class="directory">/usr/share/doc</filename>, but the following examples could be adapted for other directories as well. For user directories, it does not require <username>root</username> privileges.</para> </note> <para>To update the documentation set, issue the following command:</para> <screen>&prompt.root; <userinput>rsync -rltvz <replaceable>docsnap.sk.FreeBSD.org</replaceable>::docsnap <replaceable>/usr/share/doc</replaceable></userinput></screen> <note> <para>There is only one <application>Docsnap</application> server at the moment; the <hostid>docsnap.sk.FreeBSD.org</hostid> shown above.</para> </note> <para>Do not use the <option>--delete</option> flag here as there are some items installed into <filename class="directory">/usr/share/doc</filename> during <command>make installworld</command>, which would accidentally be removed. To clean up, use this command instead:</para> <screen>&prompt.root; <userinput>rsync -rltvz --delete <replaceable>docsnap.sk.FreeBSD.org</replaceable>::docsnap/??_??\.\* <replaceable>/usr/share/doc</replaceable></userinput></screen> <para>If a subset of documentation needs to be updated, for example, the English documentation only, the following command should be used:</para> <screen>&prompt.root; <userinput>rsync -rltvz <replaceable>docsnap.sk.FreeBSD.org</replaceable>::docsnap/en_US.ISO8859-1 <replaceable>/usr/share/doc</replaceable></userinput></screen> </sect2> ]]> </sect1> <sect1 id="current-stable"> <title>Einem Entwicklungszweig folgen</title> <indexterm><primary>-CURRENT</primary></indexterm> <indexterm><primary>-STABLE</primary></indexterm> <para>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;.</para> <sect2 id="current"> <title>&os.current;</title> <para>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.</para> <sect3> <title>Was ist &os.current;?</title> <indexterm><primary>Snapshot</primary></indexterm> <para>&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!</para> </sect3> <sect3> <title>Wer braucht &os.current;?</title> <para>&os.current; wird haupts�chlich f�r 3 Interessengruppen zur Verf�gung gestellt:</para> <orderedlist> <listitem> <para>Entwickler, die an einem Teil des Quellbaums arbeiten und daher �ber die aktuellen Quellen verf�gen m�ssen.</para> </listitem> <listitem> <para>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.</para> </listitem> <listitem> <para>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.</para> </listitem> </orderedlist> </sect3> <sect3> <title>Was &os.current; <emphasis>nicht</emphasis> ist!</title> <orderedlist> <listitem> <para>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.</para> </listitem> <listitem> <para>Ein schneller Weg, um an Fehlerbehebungen (engl. <foreignphrase>bug fixes</foreignphrase>) zu kommen. Jede Version von &os.current; f�hrt mit gleicher Wahrscheinlichkeit neue Fehler ein, mit der sie alte behebt.</para> </listitem> <listitem> <para>In irgendeiner Form <quote>offiziell unterst�tzt</quote>. Wir tun unser Bestes, um Leuten aus den drei <quote>legitimen</quote> Benutzergruppen von &os.current; zu helfen, aber wir <emphasis>haben einfach nicht die Zeit</emphasis>, 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 <emphasis>und</emphasis> 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.</para> </listitem> </orderedlist> </sect3> <sect3> <title>Benutzen von &os.current;</title> <indexterm> <primary>-CURRENT</primary> <secondary>benutzen</secondary> </indexterm> <orderedlist> <listitem> <para>Es ist <emphasis>essentiell</emphasis>, die Mailinglisten &a.current.name; und &a.svn-src-head.name; zu lesen. Wenn Sie <emphasis>&a.current.name;</emphasis> 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.</para> <para>In der &a.svn-src-head.name; Mailingliste sehen Sie zu jeder �nderung das Commit-Log, das Informationen zu m�glichen Seiteneffekten enth�lt.</para> <para>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.</para> </listitem> <listitem> <para>Beschaffen Sie sich die Quellen von einem <link linkend="mirrors">&os;-Spiegel</link>. Sie haben dazu zwei M�glichkeiten:</para> <orderedlist> <indexterm> <primary><command>cvsup</command></primary> </indexterm> <indexterm> <primary><command>cron</command></primary> </indexterm> <indexterm> <primary>-CURRENT</primary> <secondary>mit <application>CVSup</application> synchronisieren</secondary> </indexterm> <listitem> <para>Benutzen Sie das Programm <link linkend="cvsup">cvsup</link> mit der Datei <filename>standard-supfile</filename> aus dem Verzeichnis <filename>/usr/share/examples/cvsup</filename>. Dies ist die empfohlene Methode, da Sie die ganzen Quellen nur einmal herunterladen und danach nur noch �nderungen beziehen. Viele lassen <command>cvsup</command> aus <command>cron</command> heraus laufen, um ihre Quellen automatisch auf Stand zu bringen. Sie m�ssen die obige Sup-Datei anpassen und <link linkend="cvsup">cvsup</link> in Ihrer Umgebung konfigurieren.</para> <note> <para>Die <filename>standard-supfile</filename>-Beispieldatei ist daf�r vorgesehen, einen bestimmten Sicherheitszweig zu verfolgen und nicht &os.current;. Sie m�ssen diese Datei bearbeiten und die folgende Zeile:</para> <programlisting>*default release=cvs tag=RELENG_<replaceable>X</replaceable>_<replaceable>Y</replaceable></programlisting> <para>durch diese ersetzen:</para> <programlisting>*default release=cvs tag=.</programlisting> <para>Lesen Sie den Abschnitt �ber <link linkend="cvs-tags">CVS Tags</link> im Handbuch, um eine genaue Beschreibung von verwendbaren Tags zu erhalten.</para> </note> </listitem> <listitem> <indexterm> <primary>-CURRENT</primary> <secondary>mit CTM synchronisieren</secondary> </indexterm> <para><application><link linkend="ctm">CTM</link></application> kommt in Frage, wenn Sie �ber eine schlechte Internet-Anbindung (hoher Preis oder nur E-Mail Zugriff) verf�gen. Der Umgang mit <application>CTM</application> 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 jedem mit einem 9600 bps oder schnellerem Modem, <application><link linkend="cvsup">CVSup</link></application> zu benutzen.</para> </listitem> </orderedlist> </listitem> <listitem> <para>Wenn Sie die Quellen einsetzen und nicht nur darin lesen wollen, besorgen Sie sich bitte die <emphasis>kompletten</emphasis> 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.</para> <indexterm> <primary>-CURRENT</primary> <secondary>�bersetzen</secondary> </indexterm> <para>Sehen Sie sich das <filename>Makefile</filename> in <filename>/usr/src</filename> genau an, bevor Sie &os.current; �bersetzen. Wenn Sie &os; das erste Mal aktualisieren, sollten Sie sowohl <link linkend="makeworld">einen Kernel als auch das System neu installieren</link>. Lesen Sie bitte die Mailingliste &a.current; und <filename>/usr/src/UPDATING</filename>, um �ber �nderungen im Installationsverfahren, die manchmal vor der Einf�hrung eines neuen Releases notwendig sind, informiert zu sein.</para> </listitem> <listitem> <para>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.</para> </listitem> </orderedlist> </sect3> </sect2> <sect2 id="stable"> <title>&os.stable;</title> <sect3> <title>Was ist &os.stable;?</title> <indexterm><primary>-STABLE</primary></indexterm> <para>&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 <emphasis>immer noch</emphasis> 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.</para> </sect3> <sect3> <title>Wer braucht &os.stable;?</title> <para>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.</para> <para>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, <footnote><para>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 <ulink url="&url.base;/security/">http://www.FreeBSD.org/security/</ulink>.</para> </footnote> 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.</para> <para>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.</para> <para>Aus diesen Gr�nden empfehlen wir Ihnen <emphasis>nicht</emphasis>, 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.</para> <para>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.</para> </sect3> <sect3> <title>Benutzen von &os.stable;</title> <indexterm> <primary>-STABLE</primary> <secondary>benutzen</secondary> </indexterm> <orderedlist> <listitem> <para>Lesen Sie Mailingliste &a.stable.name;, damit Sie �ber Abh�ngigkeiten beim Bau von &os.stable; 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.</para> <para>Abonnieren Sie die passende <application>SVN</application>-Liste f�r den jeweiligen Branch, den Sie verfolgen. Wenn Sie beispielsweise den Zweig 7-STABLE verfolgen, lesen Sie die &a.svn-src-stable-7.name;. Dort sehen Sie zu jeder �nderung das Commit-Log, das Informationen zu m�glichen Seiteneffekten enth�lt.</para> <para>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.</para> </listitem> <listitem> <para>Wenn Sie ein neues System installieren und dazu einen der monatlich aus &os.stable; erzeugten Snapshots verwenden wollen, sollten Sie zuerst die <ulink url="&url.base;/../snapshots/">Snapshot Website</ulink> auf aktuelle Informationen �berpr�fen. Alternativ k�nnen Sie auch das neueste &os.stable;-Release von den <link linkend="mirrors">Spiegeln</link> beziehen und Ihr System nach den folgenden Anweisungen aktualisieren.</para> <para>Wenn Sie schon ein �lteres Release von &os; und das System mit dem Quellcode aktualisieren wollen, benutzen Sie einen der <link linkend="mirrors">&os;-Spiegel</link>. Sie haben dazu zwei M�glichkeiten:</para> <orderedlist> <listitem> <indexterm> <primary><command>cvsup</command></primary> </indexterm> <indexterm> <primary><command>cron</command></primary> </indexterm> <indexterm> <primary>-STABLE</primary> <secondary>mit <application>CVSup</application> synchronisieren</secondary> </indexterm> <para>Benutzen Sie das Programm <link linkend="cvsup">cvsup</link> mit der Datei <filename>stable-supfile</filename> aus dem Verzeichnis <filename>/usr/share/examples/cvsup</filename>. Dies ist die empfohlene Methode, da Sie die ganzen Quellen nur einmal herunterladen und danach nur noch �nderungen beziehen. Viele lassen <command>cvsup</command> aus <command>cron</command> heraus laufen, um ihre Quellen automatisch auf Stand zu bringen. Sie m�ssen das oben erw�hnte <filename>supfile</filename> anpassen und <link linkend="cvsup">cvsup</link> konfigurieren.</para> </listitem> <listitem> <indexterm> <primary>-STABLE</primary> <secondary>mit CTM synchronisieren</secondary> </indexterm> <para>Benutzen Sie <application><link linkend="ctm"> CTM</link></application>. Wenn Sie �ber keine schnelle und billige Internet-Anbindung verf�gen, sollten Sie diese Methode in Betracht ziehen.</para> </listitem> </orderedlist> </listitem> <listitem> <para>Benutzen Sie <command>cvsup</command> oder <command>ftp</command>, wenn Sie schnellen Zugriff auf die Quellen brauchen und die Bandbreite keine Rolle spielt, andernfalls benutzen Sie <application>CTM</application>.</para> </listitem> <listitem> <indexterm> <primary>-STABLE</primary> <secondary>�bersetzen</secondary> </indexterm> <para>Bevor Sie &os.stable; �bersetzen, sollten Sie sich das <filename>Makefile</filename> in <filename>/usr/src</filename> genau anschauen. Wenn Sie &os; das erste Mal aktualisieren, sollten Sie sowohl <link linkend="makeworld">einen Kernel als auch das System neu installieren</link>. Lesen Sie bitte die Mailingliste &a.stable; und <filename>/usr/src/UPDATING</filename>, um �ber �nderungen im Installationsverfahren, die manchmal vor der Einf�hrung eines neuen Releases notwendig sind, informiert zu sein.</para> </listitem> </orderedlist> </sect3> </sect2> </sect1> <sect1 id="synching"> <title>Synchronisation der Quellen</title> <para>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 <link linkend="anoncvs">AnonymousCVS</link>, <link linkend="cvsup">CVSup</link> und <link linkend="ctm">CTM</link> an.</para> <warning> <para>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 <filename>/bin</filename> und <filename>/sbin</filename>) 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.</para> </warning> <indexterm> <primary>CVS</primary> <secondary>anonymous</secondary> </indexterm> <para><application>Anonymous CVS</application> und <application>CVSup</application> benutzen die <foreignphrase>Pull</foreignphrase>-Methode <footnote> <para>Von engl. <foreignphrase>to pull</foreignphrase> = <emphasis>ziehen</emphasis>. Der Client holt sich bei dieser Methode die Dateien ab.</para> </footnote>, um die Quellen zu aktualisieren. Im Fall von <application>CVSup</application> ruft der Benutzer oder ein <command>cron</command>-Skript <command>cvsup</command> auf, das wiederum mit einem <command>cvsupd</command> Server interagiert, um Ihre Quellen zu aktualisieren. 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. <application>Anonymous CVS</application> ist eine Erweiterung von <application>CVS</application>, die es Ihnen erlaubt, �nderungen direkt aus einem entfernten CVS-Repository zu ziehen. <application>Anonymous CVS</application> ist leichter zu handhaben als <application>CVSup</application>, doch ist letzteres sehr viel effizienter.</para> <indexterm> <primary><application>CTM</application></primary> </indexterm> <para>Im Gegensatz dazu vergleicht <application>CTM</application> 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 <quote>CTM-Deltas</quote> 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 <application>CVSup</application> und erzeugt auch weniger Last auf unseren Servern, da es die <foreignphrase>Push</foreignphrase>-Methode <footnote> <para>Von engl. <foreignphrase>to push</foreignphrase> = <emphasis>schieben</emphasis>. Der Server schickt dem Client die Dateien.</para> </footnote> verwendet.</para> <para>Es gibt nat�rlich noch weitere Unterschiede, die Sie beachten sollten. Wenn Sie unabsichtlich Teile Ihres Archivs l�schen, wird das von <application>CVSup</application> wie <application>Anonymous CVS</application> erkannt und repariert. Wenn sich fehlerhafte Dateien in Ihrem Quellbaum befinden, l�schen Sie diese einfach und synchronisieren erneut. <application>CTM</application> 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 <quote>Basis-Delta</quote>, starten und die �nderungen wieder mit <application>CTM</application> nachziehen.</para> </sect1> <sect1 id="makeworld"> <title>Das komplette Basissystem neu bauen</title> <indexterm> <primary>Bau des Basissystems</primary> </indexterm> <para>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.</para> <warning> <title>Erstellen Sie eine Sicherungskopie!</title> <para>Es kann nicht oft genug betont werden, wie wichtig es ist, Ihr System zu sichern, <emphasis>bevor</emphasis> 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.</para> <para>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!</para> </warning> <warning> <title>Abonnieren Sie die richtige Mailingliste</title> <indexterm><primary>Mailingliste</primary></indexterm> <para>Die &os.stable; und &os.current; Zweige befinden sich in <emphasis>st�ndiger Entwicklung</emphasis>. Die Leute, die zu &os; beitragen, sind Menschen und ab und zu machen sie Fehler.</para> <para>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.</para> <para>Wenn solche Probleme auftauchen, wird ein <quote>heads up</quote> an die passende Mailingliste geschickt, welches das Problem erkl�rt und die betroffenen Systeme benennt. Eine <quote>all clear</quote> Meldung wird versendet, wenn das Problem gel�st ist.</para> <para>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.</para> </warning> <warning> <title>Finger weg von <command>make world</command></title> <para>�ltere Dokumentationen empfehlen, das Kommando <command>make world</command> 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 <command>make world</command> falsch, benutzen Sie stattdessen die nachstehende Anleitung.</para> </warning> <sect2 id="canonical-build"> <title>Richtig aktualisieren</title> <para>Um Ihr System zu aktualisieren, sollten Sie zuerst <filename>/usr/src/UPDATING</filename> 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.</para> <para>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 <quote>Basissystem</quote> sind hier die zentralen Bin�rdateien, Bibliotheken und Entwicklerdateien gemeint. Der Compiler ist Teil des <quote>Basissystems</quote>, beinhaltet aber ein paar Besonderheiten.</para> <para>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 <xref linkend="synching"/>, um detaillierte Hilfe �ber die Aktualisierung der Quellen zu erhalten.</para> <para>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.</para> <para>Jede erfolgreiche Aktualisierung muss sich mit den folgenden Sachverhalten auseinandersetzen:</para> <itemizedlist> <listitem> <para>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 <emphasis>installiert</emphasis> werden muss, bevor der neue Kernel gebaut wird.</para> </listitem> <listitem> <para>Das neue Basissystem ben�tigt eventuell neue Eigenschaften des Kernels. Also muss der neue Kernel installiert sein, bevor das neue Basissystem installiert wird.</para> </listitem> </itemizedlist> <para>Diese ersten beiden Sachverhalte sind die Grundlage f�r die zentrale Sequenz von <maketarget>buildworld</maketarget>, <maketarget>buildkernel</maketarget>, <maketarget>installkernel</maketarget> und <maketarget>installworld</maketarget>, 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:</para> <itemizedlist> <listitem> <para>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.</para> </listitem> <listitem> <para>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.</para> </listitem> <listitem> <para>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.</para> </listitem> </itemizedlist> <para>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:</para> <orderedlist> <listitem> <para><command>make <maketarget>buildworld</maketarget></command></para> <para>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 <filename class="directory">/usr/obj</filename>.</para> </listitem> <listitem> <para><command>make <maketarget>buildkernel</maketarget></command></para> <para>Statt dem alten Ansatz, &man.config.8; und &man.make.1; zu verwenden, nutzt dieser den <emphasis>neuen</emphasis> Compiler, der in <filename class="directory">/usr/obj</filename> abgelegt ist. Das sch�tzt Sie vor falschen Compiler-Kernel-Kombinationen.</para> </listitem> <listitem> <para><command>make <maketarget>installkernel</maketarget></command></para> <para>Platziert den neuen Kernel und Kernelmodule auf der Platte, was es erlaubt, mit dem frisch aktualisierten Kernel zu starten.</para> </listitem> <listitem> <para>Starten Sie das System neu in den Single-User-Modus.</para> <para>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.</para> </listitem> <listitem> <para><command>mergemaster <option>-p</option></command></para> <para>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 <maketarget>installworld</maketarget>-Schritt in der Lage ist, auf dem neu installierten System die Benutzer oder Systemgruppennamen ohne Probleme zu verwenden.</para> </listitem> <listitem> <para><command>make <maketarget>installworld</maketarget></command></para> <para>Kopiert das Basissystem aus <filename class="directory">/usr/obj</filename>. Sie haben jetzt den neuen Kernel und das neue Basissystem auf der Festplatte.</para> </listitem> <listitem> <para><command>mergemaster</command></para> <para>Sie k�nnen nun die verbleibenden Konfigurationsdateien aktualisieren, da Sie nun das neue Basissystem auf der Platte haben.</para> </listitem> <listitem> <para>Starten Sie das System neu.</para> <para>Ein kompletter Systemneustart ist notwendig, um den neuen Kernel und das neue Basissystem mit den neuen Konfigurationsdateien zu laden.</para> </listitem> </orderedlist> <para>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 <command>make <maketarget>world</maketarget></command>, gefolgt von der Erstellung und Installation des neuen Kernels funktioniert m�glicherweise gut genug, um kleinere Aktualisierungen vorzunehmen.</para> <para>Wenn Sie allerdings zwischen Hauptversionen aktualisieren wollen und befolgen diese Schritte nicht, sollten Sie sich auf Probleme gefasst machen.</para> <para>Es ist auch wichtig zu wissen, dass viele Aktualisierungen, z.B. von 4.<replaceable>X</replaceable> 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 <filename>/usr/src/UPDATING</filename> gr�ndlich, besonders am Ende, wo die aktuell vorgeschlagene Aktualisierungssequenz explizit aufgelistet ist.</para> <para>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.</para> <para>Als Zusammenfassung ist hier nochmal die aktuell vorgeschlagene Vorgehensweise f�r die Aktualisierung von &os; aus den Quellen aufgelistet:</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make buildworld</userinput> &prompt.root; <userinput>make buildkernel</userinput> &prompt.root; <userinput>make installkernel</userinput> &prompt.root; <userinput>shutdown -r now</userinput></screen> <note> <para>Es gibt einige, sehr seltene Situationen, in denen Sie <command>mergemaster -p</command> zus�tzlich ausf�hren m�ssen, bevor Sie das System mit <maketarget>buildworld</maketarget> bauen. Diese Situationen werden in <filename>UPDATING</filename> beschrieben. Solche Situationen treten aber in der Regel nur dann auf, wenn Sie Ihr &os;-System um eine oder mehrere Hauptversionen aktualisieren.</para> </note> <para>Nachdem <maketarget>installkernel</maketarget> erfolgreich abgeschlossen wurde, starten Sie das System im Single-User-Modus (etwa durch die Eingabe von <command>boot -s</command> am Loaderprompt). Danach f�hren Sie die folgenden Anweisungen aus:</para> <screen>&prompt.root; <userinput>mount -u /</userinput> &prompt.root; <userinput>mount -a -t ufs</userinput> &prompt.root; <userinput>adjkerntz -i</userinput> &prompt.root; <userinput>mergemaster -p</userinput> &prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make installworld</userinput> &prompt.root; <userinput>mergemaster</userinput> &prompt.root; <userinput>reboot</userinput></screen> <warning> <title>Lesen Sie bitte weiter</title> <para>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.</para> </warning> </sect2> <sect2 id="src-updating"> <title>Lesen Sie <filename>/usr/src/UPDATING</filename></title> <para>Bevor Sie etwas anderes tun, lesen Sie bitte <filename>/usr/src/UPDATING</filename> (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 <filename>UPDATING</filename> sind aktueller als die in diesem Handbuch. Im Zweifelsfall folgen Sie bitte den Anweisungen aus <filename>UPDATING</filename>.</para> <important> <para>Das Lesen von <filename>UPDATING</filename> ersetzt nicht das Abonnieren der richtigen Mailingliste. Die beiden Voraussetzungen erg�nzen sich, es reicht nicht aus, nur eine zu erf�llen.</para> </important> </sect2> <sect2 id="make-conf"> <title>�berpr�fen Sie <filename>/etc/make.conf</filename></title> <indexterm> <primary><filename>make.conf</filename></primary> </indexterm> <para>�berpr�fen Sie die Dateien <filename>/usr/share/examples/etc/make.conf</filename> und <filename>/etc/make.conf</filename>. 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 <filename>/etc/make.conf</filename> ein. Beachten Sie, dass alles, was Sie in <filename>/etc/make.conf</filename> eintragen, bei jedem Aufruf von <command>make</command> angezogen wird. Es ist also klug, hier etwas Sinnvolles einzutragen.</para> <para>Typischerweise wollen Sie die Zeilen, die <makevar>CFLAGS</makevar> und <makevar>NO_PROFILE</makevar> enthalten, aus <filename>/usr/share/examples/etc/make.conf</filename> nach <filename>/etc/make.conf</filename> �bertragen und dort aktivieren.</para> <para>Sehen Sie sich auch die anderen Definitionen, wie <makevar>COPTFLAGS</makevar> oder <makevar>NOPORTDOCS</makevar> an und entscheiden Sie, ob Sie diese aktivieren wollen.</para> </sect2> <sect2 id="updating-etc"> <title>Aktualisieren Sie die Dateien in <filename>/etc</filename></title> <para>Das Verzeichnis <filename>/etc</filename> 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.</para> <para>Einige der Konfigurationsdateien, besonders <filename>/etc/group</filename>, werden f�r den Normalbetrieb des Systems gebraucht.</para> <para>Es gab F�lle, in denen das Kommando <command>make installworld</command> 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 <command>make buildworld</command> ob die Accounts oder Gruppen vorhanden sind.</para> <para>Ein Beispiel daf�r trat beim Anlegen des Benutzers <username>smmsp</username> auf. Die Installationsprozedur schlug an der Stelle fehl, an der &man.mtree.8; versuchte, <filename>/var/spool/clientmqueue</filename> anzulegen.</para> <para>Um dieses Problem zu umgehen,rufen Sie &man.mergemaster.8; pr�-buildworld-Modus auf, der mit <option>-p</option> aktiviert wird. In diesem Modus werden nur Dateien verglichen, die f�r den Erfolg von <maketarget>buildworld</maketarget> oder <maketarget>installworld</maketarget> essentiell sind.</para> <tip> <para>Wenn Sie besonders paranoid sind, sollten Sie Ihr System nach Dateien absuchen, die der Gruppe, die Sie umbenennen oder l�schen, geh�ren:</para> <screen>&prompt.root; <userinput>find / -group <replaceable>GID</replaceable> -print</userinput></screen> <para>Das obige Kommando zeigt alle Dateien an, die der Gruppe <replaceable>GID</replaceable> (dies kann entweder ein Gruppenname oder eine numerische ID sein) geh�ren.</para> </tip> </sect2> <sect2 id="makeworld-singleuser"> <title>Wechseln Sie in den Single-User-Modus</title> <indexterm><primary>Single-User-Modus</primary></indexterm> <para>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.</para> <indexterm><primary>Mehrbenutzermodus</primary></indexterm> <para>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 <maketarget>installkernel</maketarget> oder <maketarget>installworld</maketarget> installieren wollen.</para> <para>Als Superuser k�nnen Sie mit dem folgenden Kommando ein laufendes System in den Single-User-Modus bringen:</para> <screen>&prompt.root; <userinput>shutdown now</userinput></screen> <para>Alternativ k�nnen Sie das System mit der Option <quote>single user</quote> in den Single-User-Modus booten. Danach geben Sie die folgenden Befehle ein:</para> <screen>&prompt.root; <userinput>fsck -p</userinput> &prompt.root; <userinput>mount -u /</userinput> &prompt.root; <userinput>mount -a -t ufs</userinput> &prompt.root; <userinput>swapon -a</userinput></screen> <para>Die Kommandos �berpr�fen die Dateisysteme, h�ngen <filename>/</filename> wieder beschreibbar ein, h�ngen dann alle anderen UFS Dateisysteme aus <filename>/etc/fstab</filename> ein und aktivieren den Swap-Bereich.</para> <note> <para>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:</para> <screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen> <para>Dies stellt sicher, dass Ihre Zeitzone richtig eingestellt ist. Ohne dieses Kommando werden Sie vielleicht sp�ter Probleme bekommen.</para> </note> </sect2> <sect2 id="cleaning-usr-obj"> <title>Entfernen Sie <filename>/usr/obj</filename></title> <para>Die neu gebauten Teile des Systems werden in der Voreinstellung unter <filename>/usr/obj</filename> gespeichert. Die Verzeichnisse dort spiegeln die Struktur unter <filename>/usr/src</filename>.</para> <para>Sie k�nnen den <command>make buildworld</command> Prozess beschleunigen, indem Sie dieses Verzeichnis entfernen. Dies erspart Ihnen zudem einigen �rger aufgrund von Abh�ngigkeiten.</para> <para>Einige Dateien unter <filename>/usr/obj</filename> sind vielleicht durch die <option>immutable</option>-Option (siehe &man.chflags.1;) schreibgesch�tzt, die vor dem L�schen entfernt werden muss.</para> <screen>&prompt.root; <userinput>cd /usr/obj</userinput> &prompt.root; <userinput>chflags -R noschg *</userinput> &prompt.root; <userinput>rm -rf *</userinput></screen> </sect2> <sect2 id="updating-upgrading-compilebase"> <title>�bersetzen der Quellen des Basissystems</title> <sect3> <title>Sichern der Ausgaben</title> <para>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.</para> <para>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 <userinput>exit</userinput> ein, wenn der Bau abgeschlossen ist:</para> <screen>&prompt.root; <userinput>script /var/tmp/mw.out</userinput> Script started, output file is /var/tmp/mw.out &prompt.root; <userinput>make <replaceable>TARGET</replaceable></userinput> <emphasis>… Ausgaben des Kommandos …</emphasis> &prompt.root; <userinput>exit</userinput> Script done, …</screen> <para>Sichern Sie die Ausgaben nicht in <filename>/tmp</filename>, da dieses Verzeichnis beim n�chsten Boot aufger�umt werden kann. Ein geeigneteres Verzeichnis ist <filename>/var/tmp</filename>, wie im vorigen Beispiel gezeigt, oder das Heimatverzeichnis von <username>root</username>.</para> </sect3> <sect3 id="make-buildworld"> <title>�bersetzen des Basissystems</title> <para>Wechseln Sie in das Verzeichnis, in dem die Quellen liegen (in der Voreinstellung ist das <filename>/usr/src</filename>):</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput></screen> <indexterm><primary><command>make</command></primary></indexterm> <para>Zum Neubau der Welt benutzen Sie &man.make.1;. Dieses Kommando liest ein <filename>Makefile</filename>, das Anweisungen enth�lt, wie die Programme, aus denen &os; besteht, zu bauen sind und in welcher Reihenfolge diese zu bauen sind.</para> <para>Ein typischer Aufruf von <command>make</command> sieht wie folgt aus:</para> <screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen> <para>In diesem Beispiel ist <option>-<replaceable>x</replaceable></option> eine Option, die Sie an &man.make.1; weitergeben wollen. Eine Liste g�ltiger Optionen finden Sie in der &man.make.1; Manualpage.</para> <para>Das Verhalten eines <filename>Makefile</filename>s wird von Variablen bestimmt. Mit <option>-D<replaceable>VARIABLE</replaceable></option> setzen Sie eine Variable. Diese Variablen sind dieselben, die auch in <filename>/etc/make.conf</filename> gesetzt werden, dies ist nur ein alternativer Weg, Variablen zu setzen.</para> <para>Um zu verhindern, dass die <quote>profiled</quote> Bibliotheken gebaut werden, rufen Sie <command>make</command> wie folgt auf:</para> <screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen> <para>Dieser Aufruf entspricht dem folgenden Eintrag in <filename>/etc/make.conf</filename>:</para> <programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting> <para>Jedes <filename>Makefile</filename> definiert einige <quote>Ziele</quote>, die festlegen, was genau zu tun ist. Mit <replaceable>target</replaceable> w�hlen Sie eins dieser Ziele aus.</para> <para>Einige Ziele im <filename>Makefile</filename> sind nicht f�r den Endanwender gedacht, sondern unterteilen den Bauprozess in eine Reihe von Einzelschritten.</para> <para>Im Regelfall m�ssen Sie &man.make.1; keine Parameter mitgeben, so dass Ihre Kommandozeile wie folgt aussehen wird:</para> <screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen> <para><replaceable>target</replaceable> steht dabei f�r die verschiedenen Ziele. Das erste Ziel sollte immer <makevar>buildworld</makevar> sein.</para> <para>Mit <maketarget>buildworld</maketarget> wird ein kompletter Baum unterhalb von <filename>/usr/obj</filename> gebaut, der mit <maketarget>installworld</maketarget>, einem weiteren Ziel, auf dem System installiert werden kann.</para> <para>�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 <maketarget>installworld</maketarget> sollte aber immer noch im Single-User-Modus erfolgen.</para> <para>Zweitens k�nnen Sie NFS benutzen, um mehrere Maschinen in Ihrem Netzwerk zu aktualisieren. Wenn Sie die Maschinen <hostid>A</hostid>, <hostid>B</hostid> und <hostid>C</hostid> aktualisieren wollen, lassen sie <command>make buildworld</command> und <command>make installworld</command> auf <hostid>A</hostid> laufen. Auf den Maschinen <hostid>B</hostid> und <hostid>C</hostid> k�nnen Sie die Verzeichnisse <filename>/usr/src</filename> und <filename>/usr/obj</filename> von <hostid>A</hostid> einh�ngen und brauchen dort nur noch <command>make installworld</command> auszuf�hren, um die Bauresultate zu installieren.</para> <para>Obwohl das Ziel <maketarget>world</maketarget> noch existiert, sollten Sie es wirklich nicht mehr benutzen.</para> <para>Um das System zu bauen, setzen Sie das folgende Kommando ab:</para> <screen>&prompt.root; <userinput>make buildworld</userinput></screen> <para>Mit <option>-j</option> k�nnen Sie <command>make</command> 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.</para> <para>Auf einem typischen Einprozessor-System k�nnen Sie den folgenden Befehl absetzen:</para> <screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen> <para>&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.</para> <para>Wenn Sie ein Mehrprozessor-System besitzen und SMP in Ihrem Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und 10 aus.</para> </sect3> <sect3> <title>Laufzeiten</title> <indexterm> <primary>Bau des Basissystems</primary> <secondary>Laufzeiten</secondary> </indexterm> <para>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.</para> </sect3> </sect2> <sect2 id="new-kernel"> <title>�bersetzen und Installation des Kernels</title> <indexterm> <primary>Kernel</primary> <secondary>�bersetzen</secondary> </indexterm> <para>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.</para> <para>Am einfachsten und sichersten bauen Sie dazu den <filename>GENERIC</filename> Kernel. Obwohl der <filename>GENERIC</filename> 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 <filename>GENERIC</filename> gebootet und sichergestellt haben, dass Ihr System funktioniert, k�nnen Sie einen neuen Kernel mit Ihrer Konfigurationsdatei bauen.</para> <para>In aktuellen &os;-Versionen m�ssen Sie das <link linkend="make-buildworld">Basissystem neu bauen</link>, bevor Sie einen neuen Kernel erstellen.</para> <note> <para>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:</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput> &prompt.root; <userinput>make installkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen> </note> <para>Wenn <varname>kern.securelevel</varname> einen Wert gr��er als <literal>1</literal> besitzt <emphasis>und</emphasis> der Kernel mit <literal>noschg</literal> oder �hnlichen Optionen gesch�tzt ist, m�ssen Sie <maketarget>installkernel</maketarget> im Einbenutzermodus ausf�hren. Wenn das nicht der Fall ist, sollten die beiden Kommandos problemlos im Mehrbenutzermodus laufen. Weitere Informationen �ber <varname>kern.securelevel</varname> finden Sie in &man.init.8; und &man.chflags.1; erl�utert Optionen, die Sie auf Dateien setzen k�nnen.</para> </sect2> <sect2 id="new-kernel-singleuser"> <title>Booten Sie in den Single-User-Modus</title> <indexterm><primary>Single-User-Modus</primary></indexterm> <para>Um zu pr�fen, ob der neue Kernel funktioniert, sollten Sie in den Single-User-Modus booten. Folgen Sie dazu der Anleitung aus <xref linkend="makeworld-singleuser"/>.</para> </sect2> <sect2 id="make-installworld"> <title>Installation des Systems</title> <para>Nun k�nnen Sie das neue System mit <maketarget>installworld</maketarget> installieren. Rufen Sie dazu das folgende Kommando auf:</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make installworld</userinput></screen> <note> <para>Wenn Sie mit dem <command>make buildworld</command> Kommando Variablen verwendet haben, m�ssen Sie dieselben Variablen auch bei dem <command>make installworld</command> Kommando angeben. Auf die anderen Optionen trifft das nur bedingt zu: <option>-j</option> darf mit <maketarget>installworld</maketarget> nicht benutzt werden.</para> <para>Sie haben zum Bauen die folgende Kommandozeile verwendet:</para> <screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen> <para>Bei der Installation setzen Sie dann das folgende Kommando ab:</para> <screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen> <para>W�rden Sie die Variable bei der Installation weglassen, so w�rde das System versuchen, die <quote>profiled</quote> Bibliotheken, die aber gar nicht gebaut wurden, zu installieren.</para> </note> </sect2> <sect2 id="post-installworld-updates"> <title>Aktualisieren der von <command>make installworld</command> ausgelassenen Dateien</title> <para>Neue oder ge�nderte Konfigurationsdateien aus einigen Verzeichnissen, besonders <filename>/etc</filename>, <filename>/var</filename> und <filename>/usr</filename> werden bei der Installationsprozedur nicht ber�cksichtigt.</para> <para>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 <filename>/etc</filename> f�r den Fall, dass etwas schief geht.</para> <sect3 id="mergemaster"> <sect3info> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>Beigetragen von </contrib> </author> </authorgroup> </sect3info> <title><command>mergemaster</command></title> <indexterm><primary><command>mergemaster</command></primary></indexterm> <para>Das Bourne-Shell Skript &man.mergemaster.8; hilft Ihnen dabei, die Unterschiede zwischen den Konfigurationsdateien in <filename>/etc</filename> und denen im Quellbaum unter <filename>/usr/src/etc</filename> zu finden. <command>mergemaster</command> ist der empfohlene Weg, Ihre Systemkonfiguration mit dem Quellbaum abzugleichen.</para> <para>Rufen Sie <command>mergemaster</command> einfach auf und schauen Sie zu. Ausgehend von <filename>/</filename> wird <command>mergemaster</command> 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 <option>+</option> gekennzeichnet. Zeilen die gel�scht oder ersetzt werden, sind mit einem <option>-</option> gekennzeichnet. Das Anzeigeformat wird in &man.diff.1; genauer erkl�rt.</para> <para>&man.mergemaster.8; zeigt Ihnen jede ge�nderte Datei an und Sie haben die Wahl, die neue Datei (in <command>mergemaster</command> 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 <command>mergemaster</command> ein <keycap>?</keycap> eingeben.</para> <para>Wenn Sie die tempor�re Datei l�schen, geht <command>mergemaster</command> 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.</para> <para>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.</para> <para>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 <keycap>l</keycap> �bernehmen Sie die aktuelle Zeile der links dargestellten Datei, mit der Taste <keycap>r</keycap> �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.</para> <para>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.</para> <para>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.</para> </sect3> <sect3> <title>Manueller Abgleich der Konfigurationsdateien</title> <para>Wenn Sie den Abgleich lieber selbst ausf�hren wollen, beachten Sie bitte, dass Sie nicht einfach die Dateien aus <filename>/usr/src/etc</filename> nach <filename>/etc</filename> kopieren k�nnen. Einige dieser Dateien m�ssen zuerst <emphasis>installiert</emphasis> werden, bevor sie benutzt werden k�nnen. Das liegt daran, dass <filename>/usr/src/etc</filename> keine exakte Kopie von <filename>/etc</filename> ist. Zudem gibt es Dateien, die sich in <filename>/etc</filename> befinden aber nicht in <filename>/usr/src/etc</filename>.</para> <para>Wenn Sie, wie empfohlen, <command>mergemaster</command> benutzen, k�nnen Sie direkt in den n�chsten <link linkend="updating-upgrading-rebooting">Abschnitt</link> wechseln.</para> <para>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.</para> <warning> <title>Sichern Sie die Inhalte von <filename>/etc</filename></title> <para>Obwohl bei dieser Prozedur keine Dateien in <filename>/etc</filename> automatisch ver�ndert werden, sollten Sie dessen Inhalt an einen sicheren Ort kopieren:</para> <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen> <para>Mit <option>-R</option> wird rekursiv kopiert und <option>-p</option> erh�lt die Attribute der kopierten Dateien, wie Zugriffszeiten und Eigent�mer.</para> </warning> <para>Sie m�ssen die neuen Dateien in einem tempor�ren Verzeichnis installieren. <filename>/var/tmp/root</filename> ist eine gute Wahl f�r das tempor�re Verzeichnis, in dem auch noch einige Unterverzeichnisse angelegt werden m�ssen.</para> <screen>&prompt.root; <userinput>mkdir /var/tmp/root</userinput> &prompt.root; <userinput>cd /usr/src/etc</userinput> &prompt.root; <userinput>make DESTDIR=/var/tmp/root distrib-dirs distribution</userinput></screen> <para>Die obigen Kommandos bauen die n�tige Verzeichnisstruktur auf und installieren die neuen Dateien in diese Struktur. Unterhalb von <filename>/var/tmp/root</filename> wurden einige leere Verzeichnisse angelegt, die Sie am besten wie folgt entfernen:</para> <screen>&prompt.root; <userinput>cd /var/tmp/root</userinput> &prompt.root; <userinput>find -d . -type d | xargs rmdir 2>/dev/null</userinput></screen> <para>Im obigen Beispiel wurde die Fehlerausgabe nach <filename>/dev/null</filename> umgeleitet, um die Warnungen �ber nicht leere Verzeichnisse zu unterdr�cken.</para> <para><filename>/var/tmp/root</filename> enth�lt nun alle Dateien, die unterhalb von <filename>/</filename> installiert werden m�ssen. Sie m�ssen nun jede dieser Dateien mit den schon existierenden Dateien vergleichen.</para> <para>Einige der installierten Dateien unter <filename>/var/tmp/root</filename> beginnen mit einem <quote>.</quote>. Als dieses Kapitel verfasst wurde, waren das nur die Startdateien f�r die Shells in <filename>/var/tmp/root/</filename> und <filename>/var/tmp/root/root/</filename>. Abh�ngig davon, wann Sie dieses Handbuch lesen, k�nnen mehr Dateien dieser Art existieren. Verwenden Sie <command>ls -a</command> um sicherzustellen, dass Sie alle derartigen Dateien finden.</para> <para>Benutzen Sie &man.diff.1; um Unterschiede zwischen zwei Dateien festzustellen:</para> <screen>&prompt.root; <userinput>diff /etc/shells /var/tmp/root/etc/shells</userinput></screen> <para>Das obige Kommando zeigt Ihnen die Unterschiede zwischen der installierten Version von <filename>/etc/shells</filename> und der neuen Version in <filename>/var/tmp/root/etc/shells</filename>. Entscheiden Sie anhand der Unterschiede, ob Sie beide Dateien abgleichen oder die neue Version �ber die alte kopieren wollen.</para> <tip> <title>Versehen Sie das tempor�re Verzeichnis mit einem Zeitstempel</title> <para>Wenn Sie das System oft neu bauen, m�ssen Sie <filename>/etc</filename> genauso oft aktualisieren. Dies kann mit der Zeit sehr l�stig werden.</para> <para>Sie k�nnen das Verfahren beschleunigen, wenn Sie sich eine Kopie der Dateien behalten, die Sie zuletzt nach <filename>/etc</filename> installiert haben. Das folgende Verfahren zeigt Ihnen, wie das geht.</para> <procedure> <step> <para>Folgen Sie der normalen Prozedur um das System zu bauen. Wenn Sie <filename>/etc</filename> 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:</para> <screen>&prompt.root; <userinput>mkdir /var/tmp/root-19980214</userinput> &prompt.root; <userinput>cd /usr/src/etc</userinput> &prompt.root; <userinput>make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution</userinput></screen> </step> <step> <para>Gleichen Sie die �nderungen entsprechend der Anleitung von oben ab.</para> <para>Wenn Sie fertig sind, entfernen Sie das Verzeichnis <filename>/var/tmp/root-19980214</filename> <emphasis>nicht</emphasis>.</para> </step> <step> <para>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 <filename>/var/tmp/root-19980221</filename>.</para> </step> <step> <para>Sie k�nnen nun die Unterschiede, die sich in einer Woche ergeben haben, sehen, indem Sie &man.diff.1; rekursiv anwenden:</para> <screen>&prompt.root; <userinput>cd /var/tmp</userinput> &prompt.root; <userinput>diff -r root-19980214 root-19980221</userinput></screen> <para>�blicherweise sind die Differenzen, die Sie jetzt sehen, kleiner als die Differenzen zwischen <filename>/var/tmp/root-19980221/etc</filename> und <filename>/etc</filename>. Da die angezeigten Differenzen kleiner sind, ist es jetzt einfacher den Abgleich der Dateien durchzuf�hren.</para> </step> <step> <para>Sie k�nnen nun das �lteste der beiden <filename>/var/tmp/root-*</filename> Verzeichnisse entfernen:</para> <screen>&prompt.root; <userinput>rm -rf /var/tmp/root-19980214</userinput></screen> </step> <step> <para>Wiederholen Sie diesen Prozess jedes Mal wenn Sie Dateien in <filename>/etc</filename> abgleichen m�ssen.</para> </step> </procedure> <para>Mit &man.date.1; k�nnen Sie den Verzeichnisnamen automatisch erzeugen:</para> <screen>&prompt.root; <userinput>mkdir /var/tmp/root-`date "+%Y%m%d"`</userinput></screen> </tip> </sect3> </sect2> <sect2 id="updating-upgrading-rebooting"> <title>Das System neu starten</title> <para>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:</para> <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen> </sect2> <sect2> <title>Ende</title> <para>Herzlichen Gl�ckwunsch! Sie haben gerade erfolgreich Ihr &os; System aktualisiert.</para> <para>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 <filename>/etc/magic</filename> 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:</para> <screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput> &prompt.root; <userinput>make all install</userinput></screen> </sect2> <sect2 id="updating-questions"> <title>Fragen</title> <qandaset> <qandaentry> <question> <para>Muss ich wirklich immer alles neu bauen, wenn sich etwas ge�ndert hat?</para> </question> <answer> <para>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 <application>CVSup</application>-Lauf nur die folgenden Dateien ge�ndert haben:</para> <screen><filename>src/games/cribbage/instr.c</filename> <filename>src/games/sail/pl_main.c</filename> <filename>src/release/sysinstall/config.c</filename> <filename>src/release/sysinstall/media.c</filename> <filename>src/share/mk/bsd.port.mk</filename></screen> <para>In diesem Fall k�nnen Sie in die entsprechenden Unterverzeichnisse wechseln und dort <command>make all install</command> ausf�hren. Wenn sich allerdings etwas Wichtiges, wie <filename>src/lib/libc/stdlib</filename>, ge�ndert hat, sollten Sie die Welt oder mindestens die statisch gelinkten Teile des Systems (sowie Ihre statisch gelinkten Erg�nzungen) neu bauen.</para> <para>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.</para> <para>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.</para> </answer> </qandaentry> <qandaentry> <question> <indexterm><primary>Signal 11</primary></indexterm> <para>Der Bau bricht mit vielen <errorname>Signal 11</errorname>-Fehlern (oder anderen Signalnummern) ab. Was ist da passiert?</para> </question> <answer> <para>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.</para> <para>Es liegt garantiert ein Hardwarefehler vor, wenn ein neuer �bersetzungslauf an einer anderen Stelle abbricht.</para> <para>In diesem Fall k�nnen Sie nur einzelne Komponenten Ihres Systems tauschen, um zu bestimmen, welche Komponente den Fehler verursacht.</para> </answer> </qandaentry> <qandaentry> <question> <para>Kann ich <filename>/usr/obj</filename> l�schen, wenn ich fertig bin?</para> </question> <answer> <para>Kurze Antwort: Ja.</para> <para>In <filename>/usr/obj</filename> 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.</para> <para>Wenn Sie allerdings genau wissen, was Sie tun, k�nnen Sie diesen Schritt bei <command>make buildworld</command> 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.</para> </answer> </qandaentry> <qandaentry> <question> <para>Kann ein abgebrochener Bau weitergef�hrt werden?</para> </question> <answer> <para>Das h�ngt davon ab, wieweit der Bauprozess fortgeschritten ist.</para> <para><emphasis>�blicherweise</emphasis> 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.</para> <para>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:</para> <screen><emphasis>… Fehler beheben …</emphasis> &prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen> <para>Diese Variablen verhindern, dass <command>make buildworld</command> die vorher erstellten Dateien l�scht.</para> <para>Das Sie sich im letzten Schritt der Bauprozedur befinden, erkennen Sie daran, dass Sie in der Ausgabe die folgenden Zeilen finden:</para> <screen>-------------------------------------------------------------- Building everything.. --------------------------------------------------------------</screen> <para>Wenn Sie diese Meldung nicht finden, oder sich nicht sicher sind, dann ist es besser, noch einmal ganz von Vorne anzufangen.</para> </answer> </qandaentry> <qandaentry> <question> <para>Wie kann ich den Bauprozess beschleunigen?</para> </question> <answer> <itemizedlist> <listitem> <para>Bauen Sie im Single-User-Modus.</para> </listitem> <listitem> <para>Legen Sie <filename>/usr/src</filename> und <filename>/usr/obj</filename> in getrennte Dateisysteme auf unterschiedliche Festplatten. Benutzen Sie nach M�glichkeit auch getrennte Platten-Controller.</para> </listitem> <listitem> <para>Noch besser ist es, diese Dateisysteme auf mehrere Festplatten mit &man.ccd.4; zu verteilen.</para> </listitem> <listitem> <para>Bauen Sie die <quote>profiled</quote>-Bibliotheken, die Sie wahrscheinlich sowieso nicht brauchen, nicht. <filename>/etc/make.conf</filename> sollte dazu <literal>NO_PROFILE=true</literal> enthalten.</para> </listitem> <listitem> <para>Setzen Sie die <makevar>CFLAGS</makevar> in <filename>/etc/make.conf</filename> auf <option>-O -pipe</option>. Die Optimierungsstufe <option>-O2</option> ist deutlich langsamer und die Performance-Unterschiede zwischen <option>-O</option> und <option>-O2</option> sind vernachl�ssigbar klein. <option>-pipe</option> veranlasst den Compiler Pipes anstelle von Dateien f�r die Kommunikation zu benutzen. Dies spart einige Plattenzugriffe, geht aber auf Kosten des Speichers.</para> </listitem> <listitem> <para>Benutzen Sie <option>-j<replaceable>n</replaceable></option>, um mehrere Prozesse parallel laufen zu lassen. Normalerweise beschleunigt dies den Bauprozess unabh�ngig davon, ob Sie ein Einprozessor- oder Mehrprozessorsystem einsetzen.</para> </listitem> <listitem> <para>Sie k�nnen das Dateisystem <filename>/usr/src</filename> mit der Option <option>noatime</option> einh�ngen. Dies verhindert, dass die Zugriffszeiten der Dateien aktualisiert werden (eine Information, die Sie vielleicht gar nicht brauchen).</para> <screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen> <warning> <para>Das Beispiel geht davon aus, dass sich <filename>/usr/src</filename> auf einem separaten Dateisystem befindet. Wenn das nicht der Fall ist, weil das Verzeichnis beispielsweise Teil des <filename>/usr</filename> Dateisystems ist, m�ssen Sie anstelle von <filename>/usr/src</filename> den Mountpoint des Dateisystems angeben.</para> </warning> </listitem> <listitem> <para>Das Dateisystem, in dem sich <filename>/usr/obj</filename> befindet, kann mit der Option <option>async</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.</para> <warning> <para>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.</para> <para>Wenn sich <filename>/usr/obj</filename> 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.</para> </warning> <screen>&prompt.root; <userinput>mount -u -o async /usr/obj</userinput></screen> <warning> <para>Ersetzen Sie <filename>/usr/obj</filename> durch den Mountpoint des entsprechenden Dateisystems, wenn es sich nicht auf einem eigenen Dateisystem befindet.</para> </warning> </listitem> </itemizedlist> </answer> </qandaentry> <qandaentry> <question> <para>Was mache ich, wenn etwas nicht funktioniert?</para> </question> <answer> <para>Stellen Sie sicher, dass sich in Ihrer Umgebung keine Reste eines vorherigen Baus befinden. Das geht ganz einfach:</para> <screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/usr</userinput> &prompt.root; <userinput>rm -rf /usr/obj/usr</userinput> &prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make cleandir</userinput> &prompt.root; <userinput>make cleandir</userinput></screen> <para>Ja, <command>make cleandir</command> muss wirklich zweimal aufgerufen werden.</para> <para>Nachdem Sie aufger�umt haben, starten Sie den Bauprozess wieder mit <command>make buildworld</command>.</para> <para>Wenn Sie immer noch Probleme haben, schicken Sie die Fehlermeldungen und die Ausgabe von <command>uname -a</command> an die Mailingliste &a.de.questions;. Bereiten Sie sich darauf vor, weitere Fragen zu Ihrer Umgebung zu beantworten.</para> </answer> </qandaentry> </qandaset> </sect2> </sect1> <sect1 id="make-delete-old"> <sect1info> <authorgroup> <author> <firstname>Anton</firstname> <surname>Shterenlikht</surname> <contrib>Basiert auf Notizen von </contrib> </author> </authorgroup> </sect1info> <title>Veraltete Dateien, Verzeichnisse und Bibliotheken l�schen</title> <indexterm> <primary>Veraltete Dateien, Verzeichnisse und Bibliotheken l�schen</primary> </indexterm> <para>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 <filename>/usr/src/ObsoleteFiles.inc</filename> aufgelistet. Die folgenden Anweisungen sollen Ihnen dabei helfen, diese Dateien w�hrend der Systemaktualisierung zu entfernen.</para> <para>Im Folgenden wird angenommen, dass Sie den Anweisungen von <xref linkend="canonical-build"/> folgen. Nachdem Sie <command>make <maketarget>installworld</maketarget></command> sowie <command>mergemaster</command> erfolgreich ausgef�hrt haben, sollten Sie Ihr System auf veraltete Dateien und Bibliotheken hin �berpr�fen:</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make check-old</userinput></screen> <para>Werden dabei veraltete Dateien gefunden, k�nnen diese im n�chsten Schritt entfernt werden:</para> <screen>&prompt.root; <userinput>make delete-old</userinput></screen> <tip> <para>Weitere interessante Targets finden sich in der Datei <filename>/usr/src/Makefile</filename>.</para> </tip> <para>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 <makevar>BATCH_DELETE_OLD_FILES</makevar> entsprechend setzen:</para> <screen>&prompt.root; <userinput>make -DBATCH_DELETE_OLD_FILES delete-old</userinput></screen> <para>Alternativ k�nnen Sie auch den folgenden Befehl einsetzen (und jeweils die Antwort <command>yes</command> an die einzelnen Abfragen weiterreichen):</para> <screen>&prompt.root; <userinput>yes | make delete-old</userinput></screen> <warning> <title>Warnung</title> <para>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 <command>make <maketarget>delete-old-libs</maketarget></command> ausf�hren.</para> </warning> <para>Die Ports-Sammlung enth�lt Werkzeuge, die Ihnen beim Pr�fen von Bibliothek-Abh�ngigkeiten helfen k�nnen: <filename role="package">sysutils/libchk</filename> sowie <filename role="package">sysutils/bsdadminscripts</filename>.</para> <para>Veraltete Bibliotheken k�nnen zu Konflikten mit neueren Bibliotheken f�hren und beispielsweise folgende Meldungen verursachen:</para> <screen>/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</screen> <para>Um diese Probleme zu l�sen, m�ssen Sie zuerst herausfinden, welcher Port die Bibliothek installiert hat:</para> <screen>&prompt.root; <userinput>pkg_info -W /usr/local/lib/libtiff.so</userinput> /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 &prompt.root; <userinput>pkg_info -W /usr/local/lib/libXext.so</userinput> /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1</screen> <para>Danach deinstallieren Sie den Port und bauen ihn neu, um ihn danach erneut zu installieren. Dieser Vorgang kann durch den Einsatz der Werkzeuge <filename role="package">ports-mgmt/portmaster</filename> oder <filename role="package">ports-mgmt/portupgrade</filename> 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:</para> <screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen> </sect1> <sect1 id="small-lan"> <sect1info> <authorgroup> <author> <firstname>Mike</firstname> <surname>Meyer</surname> <contrib>Beigetragen von </contrib> </author> </authorgroup> </sect1info> <title>Installation mehrerer Maschinen</title> <para>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.</para> <sect2 id="small-lan-preliminaries"> <title>Voraussetzungen</title> <para>Stellen Sie zuerst eine Liste der Maschinen zusammen, die auf demselben Stand sein sollen. Wir nennen diese Maschinen die <emphasis>Baugruppe</emphasis>. 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 <emphasis>Bau-Master</emphasis>. Dies sollte eine Maschine sein, die �ber die n�tigen Ressourcen f�r <command>make buildworld</command> und <command>make installworld</command> verf�gt. Sie brauchen auch eine <emphasis>Testmaschine</emphasis>, 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.</para> <para>Alle Maschinen der Baugruppe m�ssen <filename>/usr/obj</filename> und <filename>/usr/src</filename> 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 <filename>/usr/src</filename> auf einem Bau-Master befinden und �ber NFS f�r den Rest der Maschinen zur Verf�gung gestellt werden.</para> <para>Stellen Sie sicher, dass <filename>/etc/make.conf</filename> und <filename>/etc/src.conf</filename> 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 <filename>/etc/make.conf</filename> alle zu bauenden Kernel mit der Variablen <makevar>KERNCONF</makevar> 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 <filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename> abgelegt werden.</para> </sect2> <sect2 id="small-lan-base-system"> <title>Installation des Basissystems</title> <para>Nach diesen Vorbereitungen k�nnen Sie mit dem Bau beginnen. Bauen Sie auf dem Bau-Master, wie in <xref linkend="make-buildworld"/> 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 <filename>/usr/src</filename> und <filename>/usr/obj</filename> �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 <command>shutdown now</command> in den Single-User-Modus wechseln. Sie k�nnen dann mit der normalen Prozedur den neuen Kernel und das System installieren und anschlie�end <command>mergemaster</command> laufen lassen. Wenn Sie damit fertig sind, k�nnen Sie die Maschine wieder in den Mehrbenutzermodus booten.</para> <para>Nachdem Sie sichergestellt haben, dass die Testmaschine einwandfrei funktioniert, wiederholen Sie diese Prozedur f�r jede Maschine in der Baugruppe.</para> </sect2> <sect2 id="small-lan-ports"> <title>Die Ports-Sammlung</title> <para>Dasselbe Verfahren k�nnen Sie auch f�r die Ports-Sammlung anwenden. Zuerst m�ssen alle Maschinen einer Baugruppe <filename>/usr/ports</filename> 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 <filename>/etc/make.conf</filename> mit der Variablen <makevar>DISTDIR</makevar> angeben. Das Verzeichnis sollte f�r den Benutzer beschreibbar sein, auf den der Benutzer <username>root</username> vom NFS Subsystem abgebildet wird. Jede Maschine sollte noch <makevar>WRKDIRPREFIX</makevar> auf ein lokales Bauverzeichnis setzen. Wenn Sie vorhaben, Pakete zu bauen und zu verteilen, sollten Sie <makevar>PACKAGES</makevar> auf ein Verzeichnis mit den gleichen Eigenschaften wie <makevar>DISTDIR</makevar> setzen.</para> </sect2> </sect1> </chapter>