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:
parent
0511b0ce99
commit
312fc032e5
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=49149
1 changed files with 144 additions and 169 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue