Update to r43796:

All the required steps are now in order, in one place, and in a Procedure.

Reviewed by:	bcr
Differential Revision:	https://reviews.freebsd.org/D7277
This commit is contained in:
Bjoern Heidotting 2016-07-22 21:00:27 +00:00
parent 0511b0ce99
commit 312fc032e5
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=49149

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde$
basiert auf: r43795
basiert auf: r43796
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="updating-upgrading">
<info><title>&os; aktualisieren</title>
@ -1608,7 +1608,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
Anweisungen in <xref linkend="synching"/>
synchronisiert.</para>
<para>Die <quote>Welt</quote> enthält den &os;-Kernel, die
<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>
@ -1637,13 +1637,14 @@ before running "/usr/sbin/freebsd-update install"</screen>
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. In wenigen Ausnahmefällen kann dies
Probleme verursachen. Aus diesem Grund wird der
Aktualisierungsprozess manchmal bestimmte Dateien zum
manuellen Löschen vorschlagen.</para>
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 der folgenden und empfohlenen
Reihenfolge geführt.</para>
<para>Diese Bedenken haben zu einer empfohlenen
Reihenfolge bei der Aktualisierung geführt, die im folgenden
Prozess beschrieben wird.</para>
<procedure>
<title>Zusammenfassung des Aktualisierungsprozesses</title>
@ -1654,178 +1655,148 @@ before running "/usr/sbin/freebsd-update install"</screen>
beschrieben.</para>
<step>
<para><command>make buildworld</command></para>
<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>
<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>/usr/obj</filename>.</para>
</step>
<step>
<para><command>make buildkernel</command></para>
<para>Dieser Ansatz nutzt den <emphasis>neuen</emphasis>
Compiler, der in <filename>/usr/obj</filename> abgelegt
ist, um vor falschen Compiler-Kernel-Kombinationen zu
schützen.</para>
</step>
<step>
<para><command>make installkernel</command></para>
<para>Platziert den neuen Kernel und Kernelmodule auf der Platte,
was es erlaubt, mit dem frisch aktualisierten Kernel zu
starten.</para>
</step>
<step>
<para>Starten Sie das System 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>
</step>
<step>
<para><command>mergemaster -p</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 <buildtarget>installworld</buildtarget>-Schritt
in der Lage ist, auf dem neu installierten System die Benutzer
oder Systemgruppennamen ohne Probleme zu verwenden.</para>
</step>
<step>
<para><command>make installworld</command></para>
<para>Kopiert das Basissystem aus
<filename>/usr/obj</filename>. Der neue Kernel und das
neue Basissystem sind jetzt auf der Platte
installiert.</para>
</step>
<step>
<para><command>mergemaster</command></para>
<para>Aktualisiert die verbleibenden Konfigurationsdateien,
da nun das neue Basissystem auf der Platte ist.</para>
</step>
<screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/*</userinput>
&prompt.root; <userinput>rm -rf /usr/obj</userinput></screen>
</step>
<step>
<para><command>make delete-old</command></para>
<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>
<para>Dieses Target entfernt veraltete Dateien. Dies
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput></screen>
</step>
<step>
<para>Benutzen Sie den neuen Compiler aus
<filename>/usr/obj</filename>, um sich vor falschen
Compiler-Kernel-Kombinationen abzusichern.</para>
<screen>&prompt.root; <userinput>make buildkernel</userinput></screen>
</step>
<step>
<para>Installieren Sie den neuen Kernel und die Kernelmodule,
damit Sie den frisch aktualisierten Kernel starten
können.</para>
<screen>&prompt.root; <userinput>make installkernel</userinput></screen>
</step>
<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>
<screen>&prompt.root; <userinput>shutdown now</userinput></screen>
<para>Führen Sie folgende Befehle im Single-User-Modus aus,
wenn das System mit einem
<acronym>UFS</acronym>-Dateisystem formatiert ist:</para>
<screen>&prompt.root; <userinput>mount -u /</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput>
&prompt.root; <userinput>swapon -a</userinput></screen>
<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>
<screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
&prompt.root; <userinput>zfs mount -a</userinput></screen>
</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 initiale
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 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. Zum Beispiel gibt es
Probleme mit einigen Ports, wenn die Datei
<filename>utmp.h></filename> noch präsent ist, während die
neue Datei <filename>utmpx.h</filename> installiert
wird.</para>
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>Starten Sie das System neu.</para>
<para>Stellen Sie sicher, dass alle Ports neu gebaut wurden,
bevor die alten Bibliotheken entfernt werden. Verwenden Sie
dazu die Anweisungen aus <xref linkend="ports-upgrading"/>.
Entfernen Sie anschließend alle veralteten Bibliotheken um
Konflikte mit den neuen Bibliotheken zu vermeiden.</para>
<para>Ein kompletter Systemneustart ist notwendig, um den neuen
Kernel und das neue Basissystem mit den neuen
Konfigurationsdateien zu laden.</para>
</step>
<step>
<para><command>make delete-old-libs</command></para>
<para>Entfernt alle veralteten Bibliotheken um Konflikte mit
den neuen Bibliotheken zu vermeiden. Stellen Sie sicher,
dass alle Port neu gebaut wurden, bevor die alten
Bibliotheken entfernt werden.</para>
<screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
</step>
</procedure>
<para>Beachten Sie, dass wenn Sie von einem Release des gleichen
&os;-Zweigs auf ein aktuelleres Release des gleichen Zweigs, z.B.
von 9.0 auf 9.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
world</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>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
<buildtarget>buildworld</buildtarget> bauen. Diese Situationen
werden in <filename>UPDATING</filename> beschrieben. Solche
Situationen treten aber in der Regel nur dann auf, wenn das
&os;-System um eine oder mehrere Hauptversionen aktualisiert
wird.</para>
</note>
<para>Nachdem <buildtarget>installkernel</buildtarget> erfolgreich
abgeschlossen wurde, starten Sie das System durch die Eingabe
von <command>boot -s</command> am Loaderprompt im
Single-User-Modus.</para>
<para>Wenn Sie UFS benutzen, geben Sie folgende Befehle
ein:</para>
<screen>&prompt.root; <userinput>mount -u /</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput></screen>
<para>Wenn Sie ZFS benutzen (angenommen der Name des zpools ist
zroot), geben Sie folgendes ein:</para>
<screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
&prompt.root; <userinput>zfs mount -a</userinput></screen>
<para>Geben Sie anschließend folgende Kommandos ein:</para>
<screen>&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>make delete-old</userinput>
&prompt.root; <userinput>reboot</userinput>
&prompt.root; <userinput>make delete-old-libs</userinput></screen>
<warning>
<title>Lesen Sie bitte weiter</title>
<para>Die folgenden Abschnitte beschreiben detailliert
die einzelnen Schritte, insbesondere wenn eine angepasste
Kernelkonfiguration verwendet wird.</para>
</warning>
</sect2>
<sect2 xml:id="src-updating">
@ -1836,6 +1807,10 @@ before running "/usr/sbin/freebsd-update install"</screen>
<primary><filename>make.conf</filename></primary>
</indexterm>
<para>Die folgenden Abschnitte beschreiben detailliert die
einzelnen Schritte, insbesondere wenn eine angepasste
Kernelkonfiguration verwendet wird.</para>
<para>Die verfügbaren &man.make.1;-Optionen werden in
&man.make.conf.5; und
<filename>/usr/share/examples/etc/make.conf</filename>