Update to r44734:
Editorial review of Variables and Targets section. Move note on scripting the process to above the process.
This commit is contained in:
parent
86a127eff7
commit
ced0749cb5
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=49277
1 changed files with 114 additions and 172 deletions
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
$FreeBSD$
|
||||
$FreeBSDde$
|
||||
basiert auf: r44733
|
||||
basiert auf: r44734
|
||||
-->
|
||||
<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>
|
||||
|
|
@ -1427,6 +1427,26 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
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>
|
||||
|
||||
|
|
@ -1614,6 +1634,11 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<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>
|
||||
|
|
@ -1646,68 +1671,28 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
</sect2>
|
||||
|
||||
<sect2 xml:id="make-buildworld">
|
||||
<title>Übersetzen der Quellen des Basissystems</title>
|
||||
<title>Variablen und Ziele</title>
|
||||
|
||||
<para>Es ist ratsam, die Ausgaben von &man.make.1; 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 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 TARGET</userinput>
|
||||
<emphasis>… Ausgaben des Kommandos …</emphasis>
|
||||
&prompt.root; <userinput>exit</userinput>
|
||||
Script done, …</screen>
|
||||
|
||||
<para>Sichern Sie die Ausgaben <emphasis>nicht</emphasis> in
|
||||
<filename>/tmp</filename>, da dieses Verzeichnis beim
|
||||
nächsten Reboot aufgeräumt werden kann. Ein geeigneteres
|
||||
Verzeichnis ist <filename>/var/tmp</filename>, oder das
|
||||
Heimatverzeichnis von <systemitem
|
||||
class="username">root</systemitem>.</para>
|
||||
|
||||
<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>Benutzen Sie &man.make.1;, um das Basissystem neu zu
|
||||
bauen. Dieses Kommando liest Anweisungen aus einem
|
||||
<filename>Makefile</filename>, wechles beschreibt, 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>
|
||||
<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 an &man.make.1; weitergegeben wird. Eine Liste gültiger
|
||||
die an <command>make</command> übergeben wird. Eine Liste gültiger
|
||||
Optionen finden Sie in &man.make.1;.</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>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>
|
||||
|
||||
<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
|
||||
|
|
@ -1715,99 +1700,56 @@ Script done, …</screen>
|
|||
|
||||
<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> werden
|
||||
<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>
|
||||
|
||||
<para>Im Regelfall müssen &man.make.1; keine Parameter
|
||||
mitgegeben werden, so dass die 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
|
||||
<buildtarget>buildworld</buildtarget> sein.</para>
|
||||
|
||||
<para>Mit <buildtarget>buildworld</buildtarget> wird ein
|
||||
kompletter Baum unterhalb von <filename>/usr/obj</filename>
|
||||
gebaut, der mit <buildtarget>installworld</buildtarget> 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 gefahrlos
|
||||
auf einem laufenden System bauen, da die Bauprozedur vom
|
||||
Rest des Systems isoliert ist. Das System lässt sich im
|
||||
Mehrbenutzermodus ohne negative Seiteneffekte bauen. Die
|
||||
Installation mit <buildtarget>installworld</buildtarget>
|
||||
sollte aber immer noch im Single-User-Modus erfolgen.</para>
|
||||
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>
|
||||
|
||||
<para>Zweitens kann NFS benutzt werden, um mehrere Maschinen
|
||||
in einem Netzwerk zu aktualisieren. Um die Maschinen
|
||||
<systemitem>A</systemitem>, <systemitem>B</systemitem> und
|
||||
<systemitem>C</systemitem> zu aktualisieren, lassen Sie
|
||||
<command>make buildworld</command> und
|
||||
<command>make installworld</command> auf
|
||||
<systemitem>A</systemitem> laufen. Auf den Maschinen
|
||||
<systemitem>B</systemitem> und <systemitem>C</systemitem>
|
||||
können Sie die Verzeichnisse <filename>/usr/src</filename>
|
||||
und <filename>/usr/obj</filename> von
|
||||
<systemitem>A</systemitem> einhängen und brauchen dort nur
|
||||
noch <command>make installworld</command> auszuführen, um
|
||||
die Bauresultate zu installieren.</para>
|
||||
|
||||
<para>Obwohl das Ziel <buildtarget>world</buildtarget> noch
|
||||
existiert, sollte es wirklich nicht mehr benutzt
|
||||
werden.</para>
|
||||
|
||||
<para>Benutzen Sie stattdessen:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make buildworld</userinput></screen>
|
||||
<para>Zweitens kann, wie in <xref linkend="small-lan"/>
|
||||
beschrieben, <acronym>NFS</acronym> benutzt werden, um
|
||||
mehrere Maschinen in einem Netzwerk zu aktualisieren.</para>
|
||||
|
||||
<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 I/O statt der CPU bestimmt wird, ist diese
|
||||
Option auch auf Einprozessor-Systemen nützlich.</para>
|
||||
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>
|
||||
|
||||
<para>Auf einem typischen Einprozessor-System können Sie den
|
||||
folgenden Befehl eingeben:</para>
|
||||
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>
|
||||
|
||||
<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 im
|
||||
Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und
|
||||
10 aus.</para>
|
||||
<para>Wenn Sie ein Mehrprozessor-System besitzen, probieren
|
||||
Sie Werte zwischen <literal>6</literal> und
|
||||
<literal>10</literal> aus.</para>
|
||||
|
||||
<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>
|
||||
|
||||
<note>
|
||||
<para>Wenn mit <command>make buildworld</command> Variablen
|
||||
verwendet werden, müssen dieselben Variablen auch bei
|
||||
<command>make installworld</command> angegeben werden. Auf
|
||||
die anderen Optionen trifft das nur bedingt zu:
|
||||
<option>-j</option> darf mit
|
||||
<buildtarget>installworld</buildtarget> nicht benutzt
|
||||
werden.</para>
|
||||
<command>make installworld</command> angegeben werden.
|
||||
Allerdings darf <option>-j</option> zusammen mit
|
||||
<buildtarget>installworld</buildtarget>
|
||||
<emphasis>nicht</emphasis> benutzt werden.</para>
|
||||
|
||||
<para>Haben Sie zum Bauen die folgende Kommandozeile
|
||||
verwendet:</para>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue