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$
|
$FreeBSD$
|
||||||
$FreeBSDde$
|
$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">
|
<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>
|
<info><title>&os; aktualisieren</title>
|
||||||
|
@ -1608,7 +1608,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
||||||
Anweisungen in <xref linkend="synching"/>
|
Anweisungen in <xref linkend="synching"/>
|
||||||
synchronisiert.</para>
|
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
|
zentralen Binärdateien, Bibliotheken und Entwicklerdateien
|
||||||
sowie einen integrierten Compiler. Die Reihenfolge, in der
|
sowie einen integrierten Compiler. Die Reihenfolge, in der
|
||||||
diese Komponenten gebaut werden, ist wichtig.</para>
|
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
|
Schritte notwendig, um eine Aktualisierung der Konfiguration
|
||||||
durchzuführen. Der Aktualisierungsprozess ersetzt zum
|
durchzuführen. Der Aktualisierungsprozess ersetzt zum
|
||||||
Großteil Dateien oder fügt neue hinzu, bestehende Dateien
|
Großteil Dateien oder fügt neue hinzu, bestehende Dateien
|
||||||
werden nicht gelöscht. In wenigen Ausnahmefällen kann dies
|
werden nicht gelöscht. Da dieser Prozess Probleme verursachen
|
||||||
Probleme verursachen. Aus diesem Grund wird der
|
kann, werden in <filename>/usr/src/UPDATING</filename>
|
||||||
Aktualisierungsprozess manchmal bestimmte Dateien zum
|
gegebenenfalls Dateien aufgelistet, die manuell entfernt
|
||||||
manuellen Löschen vorschlagen.</para>
|
werden müssen.</para>
|
||||||
|
|
||||||
<para>Diese Bedenken haben zu der folgenden und empfohlenen
|
<para>Diese Bedenken haben zu einer empfohlenen
|
||||||
Reihenfolge geführt.</para>
|
Reihenfolge bei der Aktualisierung geführt, die im folgenden
|
||||||
|
Prozess beschrieben wird.</para>
|
||||||
|
|
||||||
<procedure>
|
<procedure>
|
||||||
<title>Zusammenfassung des Aktualisierungsprozesses</title>
|
<title>Zusammenfassung des Aktualisierungsprozesses</title>
|
||||||
|
@ -1654,178 +1655,148 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
||||||
beschrieben.</para>
|
beschrieben.</para>
|
||||||
|
|
||||||
<step>
|
<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
|
<screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/*</userinput>
|
||||||
ein paar damit zusammenhängende Werkzeuge und verwendet dann
|
&prompt.root; <userinput>rm -rf /usr/obj</userinput></screen>
|
||||||
den neuen Compiler, um den Rest des Basissystems zu erstellen.
|
|
||||||
Das Ergebnis landet dann in <filename>/usr/obj</filename>.</para>
|
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step>
|
<step>
|
||||||
<para><command>make buildkernel</command></para>
|
<para>Übersetzen Sie zuerst den neuen Compiler und
|
||||||
|
ein paar damit zusammenhängende Werkzeuge. Verwenden Sie
|
||||||
<para>Dieser Ansatz nutzt den <emphasis>neuen</emphasis>
|
dann den neuen Compiler, um den Rest des Basissystems zu
|
||||||
Compiler, der in <filename>/usr/obj</filename> abgelegt
|
erstellen. Das Ergebnis wird in
|
||||||
ist, um vor falschen Compiler-Kernel-Kombinationen zu
|
<filename>/usr/obj</filename> abgelegt.</para>
|
||||||
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>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<para><command>make delete-old</command></para>
|
|
||||||
|
|
||||||
<para>Dieses Target entfernt veraltete Dateien. Dies
|
|
||||||
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>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step>
|
|
||||||
<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>
|
|
||||||
</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>
|
|
||||||
</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>
|
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
||||||
&prompt.root; <userinput>make buildworld</userinput>
|
&prompt.root; <userinput>make buildworld</userinput></screen>
|
||||||
&prompt.root; <userinput>make buildkernel</userinput>
|
</step>
|
||||||
&prompt.root; <userinput>make installkernel</userinput>
|
|
||||||
&prompt.root; <userinput>shutdown -r now</userinput></screen>
|
|
||||||
|
|
||||||
<note>
|
<step>
|
||||||
<para>Es gibt einige, sehr seltene Situationen, in denen Sie
|
<para>Benutzen Sie den neuen Compiler aus
|
||||||
<command>mergemaster -p</command> zusätzlich
|
<filename>/usr/obj</filename>, um sich vor falschen
|
||||||
ausführen müssen, bevor Sie das System mit
|
Compiler-Kernel-Kombinationen abzusichern.</para>
|
||||||
<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
|
<screen>&prompt.root; <userinput>make buildkernel</userinput></screen>
|
||||||
abgeschlossen wurde, starten Sie das System durch die Eingabe
|
</step>
|
||||||
von <command>boot -s</command> am Loaderprompt im
|
|
||||||
Single-User-Modus.</para>
|
|
||||||
|
|
||||||
<para>Wenn Sie UFS benutzen, geben Sie folgende Befehle
|
<step>
|
||||||
ein:</para>
|
<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>
|
<screen>&prompt.root; <userinput>mount -u /</userinput>
|
||||||
&prompt.root; <userinput>mount -a -t ufs</userinput></screen>
|
&prompt.root; <userinput>mount -a -t ufs</userinput>
|
||||||
|
&prompt.root; <userinput>swapon -a</userinput></screen>
|
||||||
|
|
||||||
<para>Wenn Sie ZFS benutzen (angenommen der Name des zpools ist
|
<para>Wenn das System mit <acronym>ZFS</acronym> formatiert
|
||||||
zroot), geben Sie folgendes ein:</para>
|
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>
|
<screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
|
||||||
&prompt.root; <userinput>zfs mount -a</userinput></screen>
|
&prompt.root; <userinput>zfs mount -a</userinput></screen>
|
||||||
|
</step>
|
||||||
|
|
||||||
<para>Geben Sie anschließend folgende Kommandos ein:</para>
|
<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>adjkerntz -i</userinput>
|
<screen>&prompt.root; <userinput>kbdmap</userinput></screen>
|
||||||
&prompt.root; <userinput>mergemaster -p</userinput>
|
</step>
|
||||||
&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>
|
<step>
|
||||||
<title>Lesen Sie bitte weiter</title>
|
<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>
|
||||||
|
|
||||||
<para>Die folgenden Abschnitte beschreiben detailliert
|
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
|
||||||
die einzelnen Schritte, insbesondere wenn eine angepasste
|
</step>
|
||||||
Kernelkonfiguration verwendet wird.</para>
|
|
||||||
</warning>
|
<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:</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. 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>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
|
||||||
|
</step>
|
||||||
|
</procedure>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 xml:id="src-updating">
|
<sect2 xml:id="src-updating">
|
||||||
|
@ -1836,6 +1807,10 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
||||||
<primary><filename>make.conf</filename></primary>
|
<primary><filename>make.conf</filename></primary>
|
||||||
</indexterm>
|
</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
|
<para>Die verfügbaren &man.make.1;-Optionen werden in
|
||||||
&man.make.conf.5; und
|
&man.make.conf.5; und
|
||||||
<filename>/usr/share/examples/etc/make.conf</filename>
|
<filename>/usr/share/examples/etc/make.conf</filename>
|
||||||
|
|
Loading…
Reference in a new issue