Date: Sat, 10 Jun 2017 21:42:20 +0000 (UTC) From: Bjoern Heidotting <bhd@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r50357 - head/de_DE.ISO8859-1/books/handbook/cutting-edge Message-ID: <201706102142.v5ALgKNu094675@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bhd Date: Sat Jun 10 21:42:20 2017 New Revision: 50357 URL: https://svnweb.freebsd.org/changeset/doc/50357 Log: Update to r50251: Rewrite the Build from Source section, simplifying and clarifying. Approved by: bcr Differential Revision: https://reviews.freebsd.org/D11134 Modified: head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml Modified: head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml ============================================================================== --- head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml Sat Jun 10 15:20:12 2017 (r50356) +++ head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml Sat Jun 10 21:42:20 2017 (r50357) @@ -5,7 +5,7 @@ $FreeBSD$ $FreeBSDde$ - basiert auf: r50201 + basiert auf: r50251 --> <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" @@ -283,8 +283,8 @@ MergeChanges /etc/ /var/named/etc/ /boot/device.hints< Änderungen werden entweder akzeptiert, oder öffnen einen Editor, oder <command>freebsd-update</command> bricht ab. Im Zweifelsfall sichern Sie <filename>/etc</filename> und - akzeptieren einfach die Änderungen. Lesen Sie <xref - linkend="mergemaster"/>, um Informationen über + akzeptieren einfach die Änderungen. Lesen Sie + &man.mergemaster.8;, um Informationen über <command>mergemaster</command> zu erhalten.</para> <programlisting># Directory in which to store downloaded updates and temporary @@ -1186,1183 +1186,471 @@ before running "/usr/sbin/freebsd-update install"</scr </listitem> </orderedlist> </sect2> - - <sect2 xml:id="stable"> - <title>&os.stable;</title> - - <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. - Benutzer, die nicht über die notwendigen Ressourcen zum - Testen verfügen, sollten stattdessen eine aktuelle Version - von &os; benutzen.</para> - - <para>Wer daran interessiert ist den &os;-Entwicklungsprozess - zu verfolgen oder dazu beizutragen, insbesondere im Hinblick - auf das nächste Hauptversion, der sollte es in Erwägung - ziehen, &os.stable; zu benutzen.</para> - - <para>Obwohl wir versuchen sicherzustellen, dass der - &os.stable; Zweig sich jederzeit übersetzen lässt und - lauffähig ist, können wir dafür keine Garantie übernehmen. - Auch wenn Neuentwicklungen in &os.current; stattfinden, ist - es jedoch so, dass mehr Leute &os.stable; anstelle von - &os.current; benutzen und es daher unvermeidlich ist, dass - Fehler und Grenzfälle erst in &os.stable; auffallen. Aus - diesen Gründen empfehlen wir Ihnen - <emphasis>nicht</emphasis> blindlings &os.stable; zu - benutzen. Es ist besonders wichtig, dass &os.stable; zuerst - sorgfältig in einer Testumgebung getestet wird, bevor die - Produktion auf &os.stable; migriert.</para> - - <para>Um &os.stable; zu folgen:</para> - - <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 9-STABLE verfolgen, lesen Sie die - &a.svn-src-stable-9.name;. Diese Liste enthält zu jeder - Änderung das Commit-Log, das Informationen zu möglichen - Seiteneffekten enthält.</para> - - <para>Um diese Listen zu abonnieren, besuchen Sie die - Seite &a.mailman.lists.link;. Klicken Sie auf die - gewünschte Liste und folgenden Sie den Anweisungen. - Wenn Sie daran interessiert sind, Änderungen am gesamten - Quellbaum zu verfolgen, abonnieren Sie - &a.svn-src-all.name;.</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 <link - xlink:href="&url.base;/snapshots"> - www.freebsd.org/snapshots</link> auf aktuelle - Informationen überprüfen. Alternativ können Sie auch - das neueste &os.stable;-Release von den <link - linkend="mirrors">&os; Spiegeln</link> beziehen.</para> - - <para>Um ein bestehendes &os;-System auf &os.stable; zu - aktualisieren, benutzen Sie <link - linkend="svn">svn</link>, um den gewünschten - Entwicklungs- oder Release-Zweig auszuchecken. Die - Zweige, wie beispielsweise <literal>stable/9</literal>, - sind unter <link xlink:href="&url.base;/releng/"> - www.freebsd.org/releng</link> aufgeführt.</para> - </listitem> - - <listitem> - <para>Lesen Sie <filename>/usr/src/Makefile</filename> - sehr aufmerksam bevor Sie &os.stable; aktualisieren und - folgen Sie den Anweisungen in <xref - linkend="makeworld"/>. Lesen Sie 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> - </sect2> </sect1> - <sect1 xml:id="synching"> - <title>Synchronisation der Quellen</title> + <sect1 xml:id="updating-src"> + <title>&os; aus den Quellen aktualisieren</title> - <para>Es gibt verschiedene Methoden um die Quellen von &os; - aktuell zu halten. Dieser Abschnitt beschreibt - <application>Subversion</application>, den primären Dienst für - diese Aufgabe.</para> + <para>Das Aktualisieren von &os; aus den Quellen bietet im + Vergleich zu binären Updates mehrere Vorteile. Der Quellcode + kann mit Optionen gebaut werden, um die Vorteile von + spezifischer Hardware zu nutzen. Teile des Basissystems können + mit veränderten Einstellungen gebaut, oder falls nicht + gewünscht, auch ganz ausgelassen werden. + Dieser Prozess dauert zwar länger als die Aktualisierung mit + binären Updates, ermöglicht aber eine vollständige Anpassung, um + eine individuelle Version von &os; zu erstellen.</para> - <warning> - <para>Obwohl es möglich ist, nur Teile des Quellbaums zu - aktualisieren, ist die einzige unterstütze Prozedur, - den kompletten Quellbaum zu aktualisieren und alles neu zu - übersetzen. Dazu zählen alle Userland-Programme in - <filename>/bin</filename> und <filename>/sbin</filename>, - sowie die Kernelquellen. Wird hingegen nur ein Teil der - Quellen, zum Beispiel nur der Kernel oder nur die Programme - aus dem Userland aktualisiert, treten Probleme auf, die von - Übersetzungsfehlern über Kernel-Panics bis hin zu - Beschädigung von Daten reichen können.</para> - </warning> + <sect2 xml:id="updating-src-quick-start"> + <title>Schnellstartanleitung</title> - <indexterm> - <primary>Subversion</primary> - </indexterm> + <para>Diese kurze Referenz zeigt die typischen Schritte um &os; + aus den Quellen zu aktualisieren. Spätere Abschnitte + beschreiben die Prozedur im Detail.</para> - <para><application>Subversion</application> benutzt die - <foreignphrase>Pull</foreignphrase>-Methode, um die Quellen zu - aktualisieren. Der Benutzer, oder ein - <command>cron</command>-Skript, ruft das Programm - <command>svn</command> auf, das die Quellen aktualisiert. - <application>Subversion</application> ist die empfohlene - Methode, um die lokalen Quellen zu aktualisieren, da - aktuelle Updates zu einem vom Benutzer bestimmten Zeitpunkt - herunterlädt. Zudem ist es einfach, die Prozedur auf bestimmte - Dateien oder Verzeichnisse zu beschränken. Die angeforderten - Updates werden zur Laufzeit auf dem Server generiert. Die - Aktualisierung der Quellen wird in <xref linkend="svn"/> - beschrieben.</para> - - <para>Wenn ein Benutzer unabsichtlich Teile des Archivs löscht, - wird das von <application>Subversion</application> erkannt und - bei der nächsten Aktualisierung repariert.</para> - </sect1> - - <sect1 xml:id="makeworld"> - <title>Das Basissystem neu bauen</title> - - <indexterm> - <primary>Bau des Basissystems</primary> - </indexterm> - - <para>Sobald der lokalen Quellbaum mit einer bestimmten &os; - Version, z.B. &os.stable; oder &os.current; synchronisiert - wurde, kann dieser dazu benutzt werden das System neu zu - bauen. Dieser Prozess wird auch als - <quote>die Welt neu bauen</quote> bezeichnet.</para> - - <para><emphasis>Bevor</emphasis> das System neu gebaut wird, - müssen die folgende Aufgaben erledigt werden:</para> - - <procedure> - <title>Führen Sie diese Aufgaben aus, <emphasis>bevor</emphasis> - das System neu gebaut wird</title> - - <step> - <para>Sichern Sie alle wichtigen Daten auf ein anderes System - oder auf Wechselmedien und überprüfen Sie die Integrität der - Sicherungskopie. Zudem sollten Sie bootfähige - Installationsmedien zur Hand haben. Es kann nicht oft genug - betont werden, wie wichtig es ist, vor dem Neubau des - Systems eine Sicherung zu machen. Während der Neubau des - Systems eine einfache Aufgabe ist, wird es zwangsläufig - einmal vorkommen, dass Fehler im Quellcode dazu führen, dass - das System nicht mehr bootet. Wahrscheinlich wird die - Sicherungskopie nicht benötigt, aber gehen Sie auf Nummer - sicher!</para> - </step> - - <step> - <indexterm><primary>Mailingliste</primary></indexterm> - <para>Lesen Sie die neuesten Einträge in &a.stable; oder - &a.current;, je nachdem welchen Zweig Sie folgen. - Informieren Sie sich über bekannte Probleme und welche - Systeme davon betroffen sind. Wenn ein Problem für den - von Ihnen synchronisierten Code besteht, warten Sie auf - eine <quote>all clear</quote>-Nachricht, die besagt, dass - das Problem behoben wurde. Synchronisieren Sie dann die - Quellen neu um sicherzustellen, dass die lokale Version - die benötigten Korrekturen hat.</para> - </step> - - <step> - <para>Lesen Sie <filename>/usr/src/UPDATING</filename> für - zusätzliche Aufgaben, die für diese Version des Quellcodes - notwendig sind. Diese Datei enthält wichtige Informationen - über potentielle Probleme. Gegebenenfalls müssen einige - Kommandos in einer bestimmten Reihenfolge ausgeführt werden. - Manche Aktualisierungen erfordern bestimmte zusätzliche - Schritte, die ausgeführt werden müssen, bevor das System neu - gebaut wird, wie beispielsweise das umbenennen oder löschen - von bestimmten Dateien. Diese Aufgaben sind am Ende der - Datei aufgeführt. 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> - </step> - </procedure> - - <warning> - <title>Verwenden Sie nicht <command>make world</command></title> - - <para>Einige ältere Dokumentationen empfehlen - <command>make world</command> für den Neubau. - Das Kommando überspringt jedoch wichtige Schritte und sollte - nur von Experten verwendet werden. In fast allen Fällen ist - <command>make world</command> falsch. Benutzen Sie - stattdessen die nachstehende Anleitung.</para> - </warning> - - <sect2 xml:id="canonical-build"> - <title>Übersicht</title> - - <para>Dieser Prozess geht davon aus, dass ein System von einer - älteren Version von &os; auf eine neuere Version aktualisiert - wird. Der Quellcode für die neue Version wurde nach den - Anweisungen in <xref linkend="synching"/> - synchronisiert.</para> - - <para>Das Basissystem enthält den &os;-Kernel, die - zentralen Binärdateien, Bibliotheken und Entwicklerdateien - sowie einen integrierten Compiler. Die Reihenfolge, in der - diese Komponenten gebaut werden, ist wichtig.</para> - - <para>Beispielsweise könnte der alte Compiler aufgrund von - Fehlern nicht in der Lage sein, den neuen Kernel zu - übersetzen. Da der neue Kernel mit dem neuen Compiler - übersetzt wird, muss der neue Compiler gebaut, aber nicht - notwendigerweise <emphasis>installiert</emphasis> werden, - bevor der neue Kernel gebaut wird.</para> - - <para>Das neue Basissystem ist eventuell auf neue Funktionen des - Kernels angewiesen. Aus diesem Grund muss der neue Kernel - installiert sein, bevor das neue Basissystem installiert - wird.</para> - - <para>Das alte Basissystem wird möglicherweise nicht korrekt mit - dem neuen Kernel funktionieren, weshalb das neue Basissystem - sofort nach der Installation des neuen Kernels installiert - werden muss.</para> - - <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. Der Aktualisierungsprozess ersetzt zum - Großteil Dateien oder fügt neue hinzu, bestehende Dateien - werden nicht gelöscht. Da dieser Prozess Probleme verursachen - kann, werden in <filename>/usr/src/UPDATING</filename> - gegebenenfalls Dateien aufgelistet, die manuell entfernt - werden müssen.</para> - - <para>Diese Bedenken haben zu einer empfohlenen - Reihenfolge bei der Aktualisierung geführt, die im folgenden - Prozess beschrieben wird.</para> - - <note> - <para>Es ist ratsam, die Ausgaben von <command>make</command> - in einer Datei zu sichern. Wenn etwas schief geht, kann - eine Kopie der Fehlermeldung zu einer der &os;-Mailinglisten - gesendet werden.</para> - - <para>Dazu können Sie einfach <command>script</command> - benutzen, dem Sie beim Aufruf als Parameter den Dateinamen - für die Ausgaben mitgeben. Sichern Sie die Ausgaben nicht - nach <filename>/tmp</filename>, da dessen Inhalt beim - nächsten Neustart vielleicht verloren geht. Ein besserer - Platz ist <filename>/var/tmp</filename>. Setzen Sie dieses - Kommando unmittelbar vor dem Neubau ab und geben Sie - <userinput>exit</userinput> ein, wenn der Bau abgeschlossen - ist:</para> - - <screen>&prompt.root; <userinput>script <replaceable>/var/tmp/mw.out</replaceable></userinput> -Script started, output file is /var/tmp/mw.out</screen> - </note> - <procedure> - <title>Zusammenfassung des Aktualisierungsprozesses</title> + <step xml:id="updating-src-quick-start-preparing"> + <title>Vorbereitungen</title> - <para>Die verwendeten Kommandos sollten in der hier - angegebenen Reihenfolge ausgeführt werden. Die Funktionen - der einzelnen Kommandos werden in diesem Abschnitt - beschrieben.</para> + <para>Wenn der Rechner zum ersten mal aktualisiert wird, + geben Sie folgendes Kommando ein:</para> - <step> - <para>Wenn der Bauprozess bereits einmal auf diesem - System durchgeführt wurde, existiert vielleicht noch eine - Kopie davon in <filename>/usr/obj</filename>. Um den - neuen Bauprozess zu beschleunigen und Ärger aufgrund von - Abhängigkeiten zu vermeiden, kann dieses Verzeichnis - entfernt werden:</para> + <screen>&prompt.root; <userinput>etcupdate extract</userinput></screen> - <screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/*</userinput> -&prompt.root; <userinput>rm -rf /usr/obj</userinput></screen> - </step> + <para>Dies erstellt einen Kontrollpunkt zum späteren + Vergleich und Zusammenführen von + Systemeinstellungen.</para> - <step> - <para>Übersetzen Sie zuerst den neuen Compiler und - ein paar damit zusammenhängende Werkzeuge. Verwenden Sie - dann den neuen Compiler, um den Rest des Basissystems zu - erstellen. Das Ergebnis wird in - <filename>/usr/obj</filename> abgelegt.</para> - - <screen>&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make buildworld</userinput></screen> + <para><emphasis>Dieses Kommando muss auf dem Rechner nur + einmalig ausgeführt werden.</emphasis> + &man.etcupdate.8; benötigt nach dem ersten + <emphasis>extract</emphasis> keine weiteren + Aktualisierungen.</para> </step> <step> - <para>Benutzen Sie den neuen Compiler aus - <filename>/usr/obj</filename>, um sich vor falschen - Compiler-Kernel-Kombinationen abzusichern. Dies ist - notwendig, da sich einige Datenstrukturen geändert haben - könnten und Programme wie &man.ps.1; und &man.top.1; nur - mit einem Kernel zusammen arbeiten, der auch zu dem - entsprechenden Quellcode passt.</para> + <title>Aktualisierung und Bauprozess</title> - <screen>&prompt.root; <userinput>make buildkernel</userinput></screen> - </step> + <screen>&prompt.root; <userinput>svn update /usr/src</userinput> <co xml:id="updating-src-qs-svnup"/> +<emphasis>check <filename>/usr/src/UPDATING</filename></emphasis> <co xml:id="updating-src-qs-review-updating"/> +&prompt.root; <userinput>cd /usr/src</userinput> <co xml:id="updating-src-qs-cd"/> +&prompt.root; <userinput>make -j<replaceable>4</replaceable> buildworld</userinput> <co xml:id="updating-src-qs-buildworld"/> +&prompt.root; <userinput>make -j<replaceable>4</replaceable> kernel</userinput> <co xml:id="updating-src-qs-kernel"/> +&prompt.root; <userinput>shutdown -r now</userinput> <co xml:id="updating-src-qs-reboot"/> +&prompt.root; <userinput>cd /usr/src</userinput> <co xml:id="updating-src-qs-cd2"/> +&prompt.root; <userinput>make installworld</userinput> <co xml:id="updating-src-qs-installworld"/> +&prompt.root; <userinput>etcupdate</userinput> <co xml:id="updating-src-qs-etcupdate"/> +&prompt.root; <userinput>shutdown -r now</userinput> <co xml:id="updating-src-qs-shutdown"/></screen> - <step> - <para>Installieren Sie den neuen Kernel und die - Kernelmodule, damit Sie den frisch aktualisierten Kernel - starten können. 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 zuerst in den Single-User-Modus - wechseln. Andernfalls läuft dieses Kommando problemlos im - Mehrbenutzermodus. Weitere Informationen über - <varname>kern.securelevel</varname> finden Sie in - &man.init.8;. Optionen, die auf Dateien gesetzt werden - können, werden in &man.chflags.1; detailliert - erläutert.</para> + <calloutlist> + <callout arearefs="updating-src-qs-svnup"> + <para>Holt die neueste Version der Quellen. + <xref linkend="updating-src-obtaining-src"/> enthält + weitere Informationen zum Aktualisieren und Bauen der + Quellen.</para> + </callout> - <screen>&prompt.root; <userinput>make installkernel</userinput></screen> - </step> + <callout arearefs="updating-src-qs-review-updating"> + <para><filename>/usr/src/UPDATING</filename> enthält + Anweisungen für alle manuellen Schritte, die vor oder + nach dem Bau der Quellen erforderlich sind.</para> + </callout> - <step> - <para>Starten Sie das System in den Single-User-Modus, damit - Probleme mit der Aktualisierung von Programmen, die - bereits gestartet sind, minimiert werden. Ebenso - minimiert dieser Modus Probleme, die mit der Verwendung - des alten Basissystems und des neuen Kernels zu tun - haben.</para> + <callout arearefs="updating-src-qs-cd"> + <para>Wechsel in das Bauverzeichnis.</para> + </callout> - <screen>&prompt.root; <userinput>shutdown now</userinput></screen> + <callout arearefs="updating-src-qs-buildworld"> + <para>Bau des Basissystems, mit Ausnahme des + Kernels.</para> + </callout> - <para>Führen Sie folgende Befehle im Single-User-Modus aus, - wenn das System mit einem - <acronym>UFS</acronym>-Dateisystem formatiert ist:</para> + <callout arearefs="updating-src-qs-kernel"> + <para>Bau und Installation des Kernels. Dieser Schritt + ist gleichbedeutend mit + <buildtarget>buildkernel</buildtarget> und + <buildtarget>installkernel</buildtarget>.</para> + </callout> - <screen>&prompt.root; <userinput>mount -u /</userinput> -&prompt.root; <userinput>mount -a -t ufs</userinput> -&prompt.root; <userinput>swapon -a</userinput></screen> + <callout arearefs="updating-src-qs-installworld"> + <para>Installation des Basissystems.</para> + </callout> - <para>Wenn das System mit <acronym>ZFS</acronym> formatiert - ist, führen Sie stattdessen folgende Befehle aus. In - diesem Beispiel ist der Name des Pools - <literal>zroot</literal>:</para> + <callout arearefs="updating-src-qs-etcupdate"> + <para>Aktualisierung und Zusammenführung der + Konfigurationsdateien in + <filename>/etc</filename>.</para> + </callout> - <screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput> -&prompt.root; <userinput>zfs mount -a</userinput></screen> + <callout arearefs="updating-src-qs-shutdown"> + <para>Neustart des Systems mit dem neu erstellten + Basissystem und Kernel.</para> + </callout> + </calloutlist> </step> - - <step> - <para>Optional: Wenn eine andere Tastaturbelegung als - US-Englisch gewünscht wird, kann diese mit &man.kbdmap.1; - angepasst werden:</para> - - <screen>&prompt.root; <userinput>kbdmap</userinput></screen> - </step> - - <step> - <para>Führen Sie folgenden Befehl aus, wenn die - <acronym>CMOS</acronym>-Uhr auf die lokale Zeit - eingestellt ist (dies ist der Fall, wenn die Ausgabe von - &man.date.1; nicht die richtige Zeit anzeigt):</para> - - <screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen> - </step> - - <step> - <para>Bei der Aktualisierung des Basissystems werden - bestimmte Verzeichnisse, wie <filename>/etc</filename>, - <filename>/var</filename> und <filename>/usr</filename> - ausgelassen. Im nächsten Schritt werden ein paar - Konfigurationsdateien zur Vorbereitung für das neue - Basissystem aktualisiert. Der folgende Befehl - aktualisiert lediglich Dateien, die für das Gelingen von - <buildtarget>installworld</buildtarget> unerlässlich sind. - Beispielsweise können neue Gruppen, Systembenutzerkonten, - oder neue Startskripten erstellt werden, die seit der - letzten Aktualisierung hinzugefügt wurden. Dieser Schritt - ist notwendig, damit - <buildtarget>installworld</buildtarget> in der Lage ist, - die neuen Konten, Gruppen und Skripten zu verwenden. - Weitere Informationen zu diesem Befehl finden Sie in - <xref linkend="mergemaster"/>:</para> - - <screen>&prompt.root; <userinput>mergemaster -p</userinput></screen> - </step> - - <step> - <para>Installieren Sie das neue Basissystem und die - Systemdateien aus <filename>/usr/obj</filename>:</para> - - <screen>&prompt.root; <userinput>cd /usr/src</userinput> -&prompt.root; <userinput>make installworld</userinput></screen> - </step> - - <step> - <para>Aktualisieren Sie die verbleibenden - Konfigurationsdateien:</para> - - <screen>&prompt.root; <userinput>mergemaster -iF</userinput></screen> - </step> - - <step> - <para>Löschen Sie veraltete Dateien. Dieser Schritt - ist wichtig, da alte Dateien manchmal Probleme bereiten, - falls sie nicht entfernt werden:</para> - - <screen>&prompt.root; <userinput>make delete-old</userinput></screen> - </step> - - <step> - <para>Nun wird ein Neustart benötigt, um den neuen Kernel - und das neue Basissystem zu laden:</para> - - <screen>&prompt.root; <userinput>reboot</userinput></screen> - </step> - - <step> - <para>Stellen Sie sicher, dass alle Ports neu gebaut wurden, - bevor die alten Bibliotheken entfernt werden. Folgen - Sie dazu den Anweisungen aus <xref - linkend="ports-upgrading"/>. Entfernen Sie anschließend - alle veralteten Bibliotheken um Konflikte mit den neuen - Bibliotheken zu vermeiden. Weitere Informationen zu - diesem Schritt finden Sie - in <xref linkend="make-delete-old"/>.</para> - - <screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen> - </step> </procedure> - - <indexterm><primary>Single-User Modus</primary></indexterm> - - <para>Wenn Sie eine Ausfallzeit des Systems in Kauf nehmen - können, sollten sie das System im Single-User Modus - bauen. Die Neuinstallation des Systems verändert viele - wichtige Systemdateien, Systemwerkzeuge, Bibliotheken und - Include-Dateien. Ändern Sie diese Dateien auf einem laufenden - System, insbesondere mit aktiven Nutzern, kann dies große - Probleme verursachen.</para> </sect2> - <sect2 xml:id="src-updating"> - <title>Konfigurationsdateien</title> + <sect2 xml:id="updating-src-preparing"> + <title>Vorbereitungen zum Aktualisieren aus den Quellen</title> - <indexterm> - <primary><filename>make.conf</filename></primary> - </indexterm> + <para>Wenn der Rechner zum ersten Mal aus den Quellen + aktualisiert wird, lassen Sie + <command>etcupdate extract</command> laufen, um einen + Kontrollpunkt zum späteren Vergleich zu erstellen. Dieser + Schritt wird einmalig auf dem Rechner ausgeführt.</para> - <para>Der Bauprozess verwendet verschiedene - Konfigurationsdateien.</para> - - <para>Das <filename>Makefile</filename> in - <filename>/usr/src</filename> legt fest, wie die Programme, - aus denen &os; besteht, zu bauen sind und in welcher - Reihenfolge diese zu bauen sind.</para> - - <para>Die verfügbaren Optionen für <command>make</command> - werden in &man.make.conf.5; und - <filename>/usr/share/examples/etc/make.conf</filename> - beschrieben. Jede Option in - <filename>/etc/make.conf</filename> beeinflusst das Verhalten - von <command>make</command> beim Bau von Programmen. Die in - <filename>/etc/make.conf</filename> gesetzten Optionen wirken - sich bei jedem Aufruf von <command>make</command> aus, - einschließlich beim Bau von Programmen aus der Ports-Sammlung, - vom Benutzer geschriebene C-Programme oder beim Bau des - &os;-Betriebssystems. Änderungen an einigen Einstellungen - können weitreichende und unerwartete Auswirkungen nach sich - ziehen. Lesen Sie die Kommentare in diesen beiden Ressourcen - und beachten Sie, dass die Standardwerte aus einer Kombination - von Leistung und Sicherheit gewählt wurden.</para> - - <indexterm> - <primary><filename>/etc/src.conf</filename></primary> - </indexterm> - - <para>Der Bau des Betriebssystems aus dem Quellcode wird von - <filename>/etc/src.conf</filename> kontrolliert. Im Gegensatz - zu <filename>/etc/make.conf</filename> greifen die Optionen in - <filename>/etc/src.conf</filename> nur dann, wenn das - &os; Betriebssystem selbst gebaut wird. Die vielen Optionen - für diese Datei werden in &man.src.conf.5; beschrieben. - Seien Sie vorsichtig mit dem Entfernen von scheinbar nicht - mehr benötigten Kernelmodulen und Optionen. Manchmal gibt es - unerwartete oder subtile Wechselwirkungen.</para> + <para>Lesen Sie <filename>/usr/src/UPDATING</filename>. Jeder + manuelle Schritt, welcher vor oder nach der Aktualisierung + erforderlich ist, wird in dieser Datei beschrieben.</para> </sect2> - <sect2 xml:id="make-buildworld"> - <title>Variablen und Ziele</title> + <sect2 xml:id="updating-src-obtaining-src"> + <title>Den Quellcode aktualisieren</title> - <para>Ein typischer Aufruf von <command>make</command> sieht - wie folgt aus:</para> + <para>Der Quellcode von &os; befindet sich in + <filename>/usr/src/</filename>. Die bevorzugte Methode zur + Aktualisierung dieser Quellen ist über das + Versionskontrollsystem <application>Subversion</application>. + Sie sollten sicherstellen, dass der Quellcode unter + Versionskontrolle steht:</para> - <screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen> + <screen>&prompt.root; <userinput>svn info /usr/src</userinput> +Path: /usr/src +Working Copy Root Path: /usr/src +...</screen> - <para>In diesem Beispiel ist - <option>-<replaceable>x</replaceable></option> eine Option, - die an <command>make</command> übergeben wird. Eine Liste - gültiger Optionen finden Sie in &man.make.1;.</para> + <para>Dies ist ein Hinweis darauf, dass + <filename>/usr/src/</filename> unter Versionskontrolle steht + und mit &man.svn.1; aktualisiert werden kann.</para> - <para>Mit - <option>-D<replaceable>VARIABLE</replaceable></option> - setzen Sie eine Variable. Das Verhalten der - <filename>Makefile</filename> wird von Variablen bestimmt. - Diese sind etweder in <filename>/etc/make.conf</filename> - eingetragen, oder können an <command>make</command> übergeben - werden. Das folgende Beispiel setzt eine Variable, die - verhindert, dass die <quote>profiled</quote> Bibliotheken - gebaut werden:</para> + <screen xml:id="synching">&prompt.root; <userinput>svn update /usr/src</userinput></screen> - <screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen> + <para>Dieser Vorgang kann einige Zeit in Anspruch nehmen, falls + das Verzeichnis nicht zuletzt aktualisiert wurde. Nach + Beendigung ist der Quellcode aktuell und der im nächsten + Abschnitt beschriebene Bauprozess kann beginnen.</para> - <para>Dieser Aufruf entspricht dem folgenden Eintrag in - <filename>/etc/make.conf</filename>:</para> + <note xml:id="updating-src-obtaining-src-checkout"> + <title>Beschaffung des Quellcodes</title> - <programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting> + <para>Meldet die Ausgabe + <literal>'/usr/src' is not a working copy</literal>, dann + fehlen entweder Dateien, oder das Verzeichnis wurde mit + einer anderen Methode aktualisiert. Ein erneuter Checkout + der Quellen ist jetzt erforderlich.</para> - <para>Das <quote>Ziel</quote> sagt <command>make</command> - was zu tun ist und das <filename>Makefile</filename> - definiert die verfügbaren Ziele. Einige Ziele werden - verwendet, um den Bauprozess in eine Reihe von - Einzelschritten zu unterteilen.</para> + <table xml:id="updating-src-obtaining-src-repopath"> + <title>&os; Versionen und Repository-Pfade</title> - <para>Über separate Optionen zu verfügen, ist aus mehreren - Gründen nützlich. Erstens erlaubt dies einen Bauprozess, - der die Komponenten des laufenden Systems nicht - beeinträchtigt. Deswegen können Sie - <command>buildworld</command> gefahrlos im Mehrbenutzermodus - laufen lassen. Die Installation mit - <buildtarget>installworld</buildtarget> sollte aber immer - noch im Single-User-Modus erfolgen.</para> + <tgroup cols="3"> + <thead> + <row> + <entry>Ausgabe von <command>uname -r</command></entry> + <entry>Repository-Pfad</entry> + <entry>Beschreibung</entry> + </row> + </thead> - <para>Zweitens kann, wie in <xref linkend="small-lan"/> - beschrieeben, <acronym>NFS</acronym> benutzt werden, um - mehrere Maschinen in einem Netzwerk zu aktualisieren.</para> + <tbody> + <row> + <entry><literal><replaceable>X.Y</replaceable>-RELEASE</literal></entry> + <entry><literal>base/releng/</literal><replaceable>X</replaceable></entry> + <entry>Die Release-Version inklusive kritischer + Sicherheits- und Bugfix-Patches. Dieser Zweig wird + für die meisten Benutzer empfohlen.</entry> + </row> - <para>Mit <option>-j</option> können Sie - <command>make</command> anweisen, mehrere Prozesse zu - starten. Da der Übersetzungsprozess - hauptsächlich von <acronym>I/O</acronym> statt der - <acronym>CPU</acronym> bestimmt wird, ist diese Option für - Einprozessor- und Mehrprozessor-Systeme nützlich.</para> + <row> + <entry><literal><replaceable>X.Y</replaceable>-STABLE</literal></entry> + <entry><literal>base/stable/</literal><replaceable>X</replaceable></entry> + <entry> + <para>Die Release-Version und alle weitere Versionen + auf diesem Zweig. + <emphasis>STABLE</emphasis> bezieht sich darauf, + dass die Binärschnittstelle + (<acronym>ABI</acronym>) sich nicht ändert, sodass + Anwendungen welche auf älteren Versionen erstellt + wurden weiterhin lauffähig sind. Eine Anwendung, + welche für &os; 10.1 übersetzt wurde, läuft + auch auf &os; 10-STABLE.</para> - <para>Auf einem typischen Einprozessor-System können Sie den - folgenden Befehl eingeben, um bis zu vier Prozesse - gleichzeitig laufen zu lassen. Erfahrungsberichte aus den - Mailinglisten zeigen, dass dieser Aufruf typischerweise den - besten Geschwindigkeitsgewinn bringt:</para> + <para>STABLE-Zweige haben gelegentlich Fehler und + Inkompatibilitäten, welche den Benutzer + beeinträchtigen könnten. In der Regel werden + diese Fehler aber zügig behoben.</para> + </entry> + </row> - <screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen> + <row> + <entry><literal><replaceable>X</replaceable>-CURRENT</literal></entry> + <entry><literal>base/head/</literal></entry> + <entry>Die neueste unveröffentlichte Version von + &os;. Der CURRENT-Zweig kann viele Fehler und + Inkompatibilitäten enthalten und wird daher nur für + fortgeschrittene Benutzer empfohlen.</entry> + </row> + </tbody> + </tgroup> + </table> - <para>Wenn Sie ein Mehrprozessor-System besitzen, probieren - Sie Werte zwischen <literal>6</literal> und - <literal>10</literal> aus.</para> + <para>Ermitteln Sie mit &man.uname.1; die verwendete + &os;-Version:</para> - <indexterm> - <primary>Bau des Basissystems</primary> - <secondary>Laufzeiten</secondary> - </indexterm> + <screen>&prompt.root; <userinput>uname -r</userinput> +10.3-RELEASE</screen> - <note> - <para>Wenn mit <command>make buildworld</command> Variablen - verwendet werden, müssen dieselben Variablen auch bei - <command>make installworld</command> angegeben werden. - Allerdings darf <option>-j</option> zusammen mit - <buildtarget>installworld</buildtarget> - <emphasis>nicht</emphasis> benutzt werden.</para> + <para>Basierend auf <xref + linkend="updating-src-obtaining-src-repopath"/> ist + <literal>base/releng/10</literal> der Repository-Pfad zur + Aktualisierung von <literal>10.3-RELEASE</literal>. Dieser + Pfad wird beim Auschecken der Quellen benutzt:</para> - <para>Haben Sie zum Bauen die folgende Kommandozeile - verwendet:</para> + <screen>&prompt.root; <userinput>mv /usr/src /usr/src.bak</userinput> <co xml:id="updating-src-obtaining-src-mv"/> +&prompt.root; <userinput>svn checkout https://svn.freebsd.org/base/<replaceable>releng/10.3</replaceable> /usr/src</userinput> <co xml:id="updating-src-obtaining-src-checkout-cmd"/></screen> - <screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen> + <calloutlist> + <callout arearefs="updating-src-obtaining-src-mv"> + <para>Verschiebt das alte Verzeichnis. Wenn es keine + lokalen Änderungen in diesem Verzeichnis gibt, kann es + gelöscht werden.</para> + </callout> - <para>dann installieren Sie das Ergebnis mit:</para> - - <screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen> - - <para>Andernfalls würde das System bei der Installation - versuchen, die <quote>profiled</quote> Bibliotheken, die - aber gar nicht gebaut wurden, zu installieren.</para> + <callout arearefs="updating-src-obtaining-src-checkout-cmd"> + <para>Der Pfad aus <xref + linkend="updating-src-obtaining-src-repopath"/> wird + der Repository-URL hinzugefügt. Der dritte Parameter + ist das lokale Zielverzeichnis für den Quellcode.</para> + </callout> + </calloutlist> </note> </sect2> - <sect2 xml:id="mergemaster"> - <info> - <title>Abgleich der Konfigurationsdateien</title> + <sect2 xml:id="updating-src-building"> + <title>Den Quellcode bauen</title> - <authorgroup> - <author> - <personname> - <firstname>Tom</firstname> - <surname>Rhodes</surname> - </personname> - <contrib>Beigetragen von </contrib> - </author> - </authorgroup> - </info> + <para xml:id="makeworld">Die Welt, also das gesamte + Basissystem mit Ausnahme des Kernels, wird zuerst + übersetzt, um aktuelle Werkzeuge zum Erstellen des + Kernels bereitzustellen. Anschließend wird der + Kernel gebaut:</para> - <indexterm><primary><command>mergemaster</command></primary></indexterm> + <screen>&prompt.root; <userinput>cd /usr/src</userinput> +&prompt.root; <userinput>make buildworld</userinput> +&prompt.root; <userinput>make buildkernel</userinput></screen> - <para>&os; enthält das &man.mergemaster.8; Bourne-Shell - Skript, welches dabei behilflich ist die Unterschiede zwischen - den Konfigurationsdateien in <filename>/etc</filename> und - denen unter <filename>/usr/src/etc</filename> zu finden. - Dies ist der empfohlene Weg, die Systemkonfiguration mit dem - Quellbaum abzugleichen.</para> + <para>Das Ergebnis wird in <filename>/usr/obj</filename> + abgelegt.</para> - <para>Es ist ratsam, zuerst das bestehende - <filename>/etc</filename> an einen sicheren Ort zu - kopieren. Mit <option>-R</option> wird rekursiv kopiert und - <option>-p</option> erhält die Zugriffszeiten und Eigentümer - der Dateien:</para> + <para>Dies sind die grundlegenden Schritte. Weitere Optionen + zur Kontrolle des Bauprozesses sind nachfolgend + beschrieben.</para> - <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen> + <sect3 xml:id="updating-src-building-clean-build"> + <title>Umgebung für den Bauprozess säubern</title> - <para>Beim Aufruf wird <command>mergemaster</command> - ausgehend von <filename>/</filename> einen virtuellen - Root-Baum aufbauen und darin die neuen Konfigurationsdateien - ablegen. - Diese Dateien werden dann mit den auf dem System - installierten Dateien 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 <option>-</option> gekennzeichnet. Das - Anzeigeformat wird in &man.diff.1; genauer erklärt.</para> + <para>Einige Versionen von &os; hinterlassen bereits + übersetzten Code im temporären Objektverzeichnis + <filename>/usr/obj</filename>. Dies kann nachfolgende + Bauprozesse beschleunigen, da Code, der nicht verändert + wurde, nicht neu übersetzt werden muss. Um eine saubere + Umgebung für den Bauprozess zu schaffen, entfernen Sie + <filename>/usr/obj</filename> bevor Sie mit dem Bau + beginnen. Dies ist dasselbe wie + <command>make clean</command>, nur sehr viel + schneller:</para> - <para>Als nächstes zeigt <command>mergemaster</command> jede - geänderte Datei an und Sie haben die Wahl, die neue Datei - (auch 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 Ausgabe noch einmal - zu sehen.</para> + <screen>&prompt.root; <userinput>rm -rf /usr/obj/*</userinput></screen> + </sect3> - <para>Wenn Sie die temporäre Datei löschen, geht - <command>mergemaster</command> davon aus, dass Sie die - aktuelle Datei unverändert behalten möchten. Die Auswahl - dieser Option wird nicht empfohlen. Durch die Eingabe von - <keycap>?</keycap> können Sie jederzeit die Hilfe am Prompt - von <command>mergemaster</command> aufrufen. Wenn Sie eine - Datei überspringen, wird <command>mergemaster</command> - diese am Ende erneut präsentieren.</para> + <sect3 xml:id="updating-src-building-jobs"> + <title>Anzahl der Prozesse einstellen</title> - <para>Wenn Sie die temporäre Datei installieren, wird die - aktuelle Datei mit der neuen Datei überschrieben. Sie - sollten alle unveränderten Konfigurationsdateien auf diese - Weise aktualisieren.</para> + <para>Eine höhere Anzahl an Prozessen kann die + Geschwindigkeit auf Mehrprozessor-Systemen verbessern. + Die Anzahl der Kerne lässt sich mit + <command>sysctl hw.cpu</command> bestimmen. Prozessoren + variieren ebenso, wie die verschiedenen Build-Systeme von + &os;. Sie müssen daher mehrere Versuche starten um zu + sehen, wie die Anzahl der Prozesse die Geschwindigkeit + beeinflusst. Als Ausgangspunkt können Sie die halbe bis + doppelte Anzahl der Kerne als Wert probieren. Die Anzahl + der Prozesse wird mit <option>-j</option> angegeben.</para> - <para>Wenn Sie sich entschließen den Inhalt beider Dateien - abzugleichen, wird ein Texteditor aufgerufen, in dem 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> + <example xml:id="updating-src-building-jobs-example"> + <title>Die Anzahl der Prozesse erhöhen</title> - <para>Haben Sie sich entschieden die Differenzen noch einmal - anzuzeigen, werden nochmals die Unterschiede in beiden - Dateien angezeigt.</para> + <para>Das Basissystem und den Kernel mit vier Prozessen + bauen:</para> - <para>Wenn <command>mergemaster</command> alle Systemdateien - abgearbeitet hat, werden weitere Optionen abgefragt. Sie - werden unter Umständen gefragt, ob die Passwort-Datei neu - gebaut werden soll. Am Ende haben Sie die Möglichkeit, die - restlichen temporären Dateien zu löschen.</para> + <screen>&prompt.root; <userinput>make -j4 buildworld buildkernel</userinput></screen> + </example> + </sect3> - <!-- - <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> + <sect3 xml:id="updating-src-building-only-kernel"> + <title>Nur den Kernel erstellen</title> - <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> + <para>Wenn sich der Quellcode verändert hat, muss ein + <buildtarget>buildworld</buildtarget> ausgeführt + werden. Danach kann der Kernel mit + <buildtarget>buildkernel</buildtarget> übersetzt + werden. Um lediglich den Kernel zu übersetzen:</para> - <warning> - <title>Sichern Sie die Inhalte von <filename>/etc</filename></title> + <screen>&prompt.root; <userinput>cd /usr/src</userinput> +&prompt.root; <userinput>make buildkernel</userinput></screen> + </sect3> - <para>Es wird empfohlen, zuerst das bestehende - <filename>/etc</filename> an einen sicheren Ort zu - kopieren:</para> + <sect3 xml:id="updating-src-building-custom-kernel"> + <title>Einen angepassten Kernel erstellen</title> - <screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen> + <para>Der &os; Standard-Kernel basiert auf einer + <emphasis>Konfigurationsdatei</emphasis> namens + <filename>GENERIC</filename>. Der + <filename>GENERIC</filename>-Kernel enthält die + gängigsten Gerätetreiber und Optionen. Manchmal ist es + aber sinnvoll oder gar notwendig, einen angepassten + Kernel zu erstellen, um Gerätetreiber oder Optionen *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706102142.v5ALgKNu094675>