aff1e3aff0
books/handbook/Makefile fixes only books/handbook/book.sgml 1.146 -> 1.147 books/handbook/advanced-networking/chapter.sgml 1.293 -> 1.309 [*] books/handbook/bibliography/chapter.sgml 1.62 -> 1.63 books/handbook/config/chapter.sgml 1.144 -> 1.156 books/handbook/cutting-edge/chapter.sgml 1.198 -> 1.200 books/handbook/disks/chapter.sgml 1.196 -> 1.201 books/handbook/eresources/chapter.sgml 1.140 -> 1.143 books/handbook/introduction/chapter.sgml 1.97 -> 1.98 books/handbook/kernelconfig/chapter.sgml 1.130 -> 1.132 books/handbook/l10n/chapter.sgml 1.95 -> 1.96 books/handbook/mail/chapter.sgml 1.116 -> 1.117 books/handbook/mirrors/chapter.sgml 1.340 -> 1.342 books/handbook/multimedia/chapter.sgml 1.81 -> 1.83 books/handbook/pgpkeys/chapter.sgml 1.222 -> 1.226 books/handbook/ppp-and-slip/chapter.sgml 1.131 -> 1.137 books/handbook/ports/chapter.sgml 1.217 -> 1.218 books/handbook/printing/chapter.sgml 1.82 -> 1.86 books/handbook/security/chapter.sgml 1.203 -> 1.205 books/handbook/serialcomms/chapter.sgml 1.84 -> 1.88 Obtained from: The FreeBSD German Documentation Project. [*] Submitted by: Johann Kois <J.Kois@web.de>
1962 lines
80 KiB
Text
1962 lines
80 KiB
Text
<!--
|
|
The FreeBSD Documentation Project
|
|
The FreeBSD German Documentation Project
|
|
|
|
$FreeBSD$
|
|
$FreeBSDde: de-docproj/books/handbook/cutting-edge/chapter.sgml,v 1.64 2004/06/06 18:26:47 mheinen Exp $
|
|
basiert auf: 1.200
|
|
-->
|
|
|
|
<chapter id="cutting-edge">
|
|
<chapterinfo>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Jim</firstname>
|
|
<surname>Mock</surname>
|
|
<contrib>Umstrukturiert und aktualisiert von </contrib>
|
|
</author>
|
|
<!-- Mar 2000 -->
|
|
</authorgroup>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Jordan</firstname>
|
|
<surname>Hubbard</surname>
|
|
<contrib>Im Original von </contrib>
|
|
</author>
|
|
<author>
|
|
<firstname>Poul-Henning</firstname>
|
|
<surname>Kamp</surname>
|
|
</author>
|
|
<author>
|
|
<firstname>John</firstname>
|
|
<surname>Polstra</surname>
|
|
</author>
|
|
<author>
|
|
<firstname>Nik</firstname>
|
|
<surname>Clayton</surname>
|
|
</author>
|
|
</authorgroup>
|
|
<!-- with feedback from various others -->
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Martin</firstname>
|
|
<surname>Heinen</surname>
|
|
<contrib>Übersetzt von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</chapterinfo>
|
|
|
|
<title>Das Neueste und Beste</title>
|
|
|
|
<sect1 id="cutting-edge-synopsis">
|
|
<title>Übersicht</title>
|
|
|
|
<para>&os; wird zwischen einzelnen Releases konstant weiter entwickelt.
|
|
Es gibt mehrere einfache Möglichkeiten, ein System auf dem
|
|
aktuellen Stand der Entwicklung zu halten. Seien Sie jedoch gewarnt:
|
|
Die neueste Version ist nicht für jeden geeignet! Dieses
|
|
Kapitel hilft Ihnen bei der Entscheidung, ob Sie mit dem
|
|
Entwicklungssystem Schritt halten oder ein Release verwenden
|
|
wollen.</para>
|
|
|
|
<para>Nachdem Sie dieses Kapitel gelesen haben, werden Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>den Unterschied der beiden Entwicklerversionen
|
|
&os.stable; und &os.current; kennen,</para>
|
|
</listitem>
|
|
<listitem><para>wissen, wie Sie Ihr System mit
|
|
<application>CVSup</application>, <application>CVS</application>
|
|
oder <application>CTM</application> aktualisieren.</para>
|
|
</listitem>
|
|
<listitem><para>Wissen, wie Sie mit <command>make world</command> das
|
|
komplette Basissystem wieder neu bauen und installieren
|
|
können.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Bevor Sie dieses Kapitel lesen, sollten Sie</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Ihr Netzwerk richtig konfiguriert haben (<xref
|
|
linkend="advanced-networking">) und</para>
|
|
</listitem>
|
|
<listitem><para>wissen, wie Sie Software Dritter installieren
|
|
(<xref linkend="ports">).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 id="current-stable">
|
|
<title>&os.current; vs. &os.stable;</title>
|
|
<indexterm><primary>-CURRENT</primary></indexterm>
|
|
<indexterm><primary>-STABLE</primary></indexterm>
|
|
|
|
<para>FreeBSD besitzt zwei Entwicklungszweige: &os.current; und
|
|
&os.stable;. Dieser Abschnitt beschreibt beide Zweige und
|
|
erläutert, wie Sie Ihr System auf dem aktuellen Stand
|
|
eines Zweiges halten. Zuerst wird &os.current; vorgestellt, dann
|
|
&os.stable;.</para>
|
|
|
|
<sect2 id="current">
|
|
<title>&os.current;</title>
|
|
|
|
<para>Beachten Sie im Folgenden, dass &os.current; die Spitze
|
|
der Entwicklung von &os; ist. Benutzer von &os.current; sollten
|
|
über sehr gute technische Fähigkeiten verfügen und
|
|
in der Lage sein, schwierige Probleme alleine zu lösen. Wenn
|
|
&os; neu für Sie ist, überlegen Sie sich genau, ob Sie
|
|
&os.current; benutzen wollen.</para>
|
|
|
|
<sect3>
|
|
<title>Was ist &os.current;?</title>
|
|
<indexterm><primary>Snapshot</primary></indexterm>
|
|
|
|
<para>&os.current; besteht aus den neuesten Quellen des
|
|
FreeBSD-Systems. Es enthält Sachen, an denen gerade
|
|
gearbeitet wird, experimentelle Änderungen und
|
|
Übergangsmechanismen, die im nächsten offiziellen
|
|
Release der Software enthalten sein können oder nicht.
|
|
Obwohl &os.current; täglich von vielen Entwicklern gebaut
|
|
wird, gibt es Zeiträume, in denen sich das System nicht
|
|
bauen lässt. Diese Probleme werden so schnell wie
|
|
möglich gelöst, aber ob Sie mit &os.current;
|
|
Schiffbruch erleiden oder die gewünschten Verbesserungen
|
|
erhalten, kann von dem Zeitpunkt abhängen, an dem Sie sich
|
|
den Quelltext besorgt haben!</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Wer braucht &os.current;?</title>
|
|
|
|
<para>&os.current; wird hauptsächlich für 3
|
|
Interessengruppen zur Verfügung gestellt:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Entwickler, die an einem Teil des Quellbaums arbeiten und
|
|
daher über die aktuellen Quellen verfügen
|
|
müssen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Tester, die bereit sind, Zeit in das Lösen von
|
|
Problemen zu investieren und sicherstellen, dass
|
|
&os.current; so stabil wie möglich bleibt. Weiterhin
|
|
Leute, die Vorschläge zu Änderungen oder der
|
|
generellen Entwicklung von &os; machen und Patches
|
|
bereitstellen, um diese Vorschläge zu realisieren.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Für Leute, die die Entwicklung im Auge behalten
|
|
wollen, oder die Quellen zu Referenzzwecken (zum Beispiel
|
|
darin lesen, aber nicht verwenden) benutzen wollen. Auch diese
|
|
Gruppe macht Vorschläge oder steuert Quellcode
|
|
bei.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Was &os.current; <emphasis>nicht</emphasis> ist!</title>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Der schnellste Weg, neue Sachen vor dem offiziellen
|
|
Release auszuprobieren. Bedenken Sie, dass der erste,
|
|
der die neuen Sachen ausprobiert, auch der erste ist, der die
|
|
neuen Fehler findet.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Ein schneller Weg, um an Fehlerbehebungen (engl.
|
|
<foreignphrase>bug fixes</foreignphrase>) zu kommen. Jede
|
|
Version von &os.current; führt mit gleicher
|
|
Wahrscheinlichkeit neue Fehler ein, mit der sie alte
|
|
behebt.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>In irgendeiner Form <quote>offiziell
|
|
unterstützt</quote>. Wir tun unser Bestes, um Leuten
|
|
aus den drei <quote>legitimen</quote> Benutzergruppen von
|
|
&os.current; zu helfen, aber wir <emphasis>haben einfach nicht
|
|
die Zeit</emphasis>, technische Unterstützung zu
|
|
erbringen. Das kommt nicht daher, dass wir kleinliche,
|
|
gemeine Leute sind, die anderen nicht helfen wollen (wenn
|
|
wir das wären, würden wir &os; nicht machen), wir
|
|
können einfach nicht jeden Tag Hunderte Nachrichten
|
|
beantworten <emphasis>und</emphasis> an &os; arbeiten! Vor
|
|
die Wahl gestellt, &os; zu verbessern oder jede Menge Fragen
|
|
zu experimentellem Code zu beantworten, haben sich die
|
|
Entwickler für ersteres entschieden.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Benutzen von &os.current;</title>
|
|
|
|
<indexterm>
|
|
<primary>-CURRENT</primary>
|
|
<secondary>benutzen</secondary>
|
|
</indexterm>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Es ist <emphasis>essentiell</emphasis>, die Mailinglisten
|
|
&a.current.name; und &a.cvsall.name; zu lesen. Wenn Sie
|
|
&a.current.name; nicht lesen, verpassen Sie die Kommentare
|
|
anderer über den momentanen Zustand des Systems und rennen
|
|
demzufolge in viele bekannte Probleme, die schon gelöst
|
|
sind. Noch kritischer ist, dass Sie wichtige
|
|
Bekanntmachungen verpassen, die erhebliche Auswirkungen
|
|
auf die Stabilität Ihres Systems haben können.</para>
|
|
|
|
<para>In der &a.cvsall.name; Mailingliste sehen Sie zu jeder
|
|
Änderung das Commit-Log, das Informationen zu
|
|
möglichen Seiteneffekten enthält.</para>
|
|
|
|
<para>Um diese Listen zu abonnieren (oder zu lesen)
|
|
besuchen Sie bitte die Seite &a.mailman.lists.link;.
|
|
Weitere Informationen erhalten Sie, wenn Sie dort
|
|
auf die gewünschte Liste klicken.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Beschaffen Sie sich die Quellen von einem
|
|
<link linkend="mirrors">&os;-Spiegel</link>. Sie haben
|
|
dazu zwei Möglichkeiten:</para>
|
|
|
|
<orderedlist>
|
|
<indexterm>
|
|
<primary><command>cvsup</command></primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary><command>cron</command></primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>-CURRENT</primary>
|
|
<secondary>mit <application>CVSup</application>
|
|
synchronisieren</secondary>
|
|
</indexterm>
|
|
|
|
<listitem>
|
|
<para>Benutzen Sie das Programm
|
|
<link linkend="cvsup">cvsup</link>
|
|
mit der Datei <filename>standard-supfile</filename>
|
|
aus dem Verzeichnis
|
|
<filename>/usr/share/examples/cvsup</filename>.
|
|
Dies ist die empfohlene Methode, da Sie die ganzen
|
|
Quellen nur einmal herunterladen und danach nur noch
|
|
Änderungen beziehen. Viele lassen
|
|
<command>cvsup</command> aus <command>cron</command>
|
|
heraus laufen, um ihre Quellen automatisch auf Stand
|
|
zu bringen. Sie müssen die obige Sup-Datei
|
|
anpassen und <link linkend="cvsup">cvsup</link>
|
|
in Ihrer Umgebung konfigurieren.</para>
|
|
</listitem>
|
|
|
|
<indexterm>
|
|
<primary>-CURRENT</primary>
|
|
<secondary>mit CTM synchronisieren</secondary>
|
|
</indexterm>
|
|
<listitem>
|
|
<para><application><link linkend="ctm">CTM</link></application>
|
|
kommt in Frage, wenn Sie
|
|
über eine schlechte Internet-Anbindung (hoher Preis
|
|
oder nur E-Mail Zugriff) verfügen. Der Umgang mit
|
|
<application>CTM</application> ist allerdings recht
|
|
mühsam und Sie können beschädigte Dateien
|
|
erhalten. Daher wird es selten benutzt, was wiederum
|
|
dazu führt, dass es über längere Zeit
|
|
nicht funktioniert. Wir empfehlen jedem mit einem
|
|
9600 bps oder schnellerem Modem,
|
|
<application><link linkend="cvsup">CVSup</link></application>
|
|
zu benutzen.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wenn Sie die Quellen einsetzen und nicht nur darin
|
|
lesen wollen, besorgen Sie sich bitte die
|
|
<emphasis>kompletten</emphasis> Quellen von &os.current; und
|
|
nicht nur ausgesuchte Teile. Der Grund hierfür ist,
|
|
dass die verschiedenen Teile der Quellen voneinander
|
|
abhängen. Es ist ziemlich sicher, dass Sie in
|
|
Schwierigkeiten geraten, wenn Sie versuchen, nur einen Teil
|
|
der Quellen zu übersetzen.</para>
|
|
|
|
<indexterm>
|
|
<primary>-CURRENT</primary>
|
|
<secondary>übersetzen</secondary>
|
|
</indexterm>
|
|
|
|
<para>Sehen Sie sich das <filename>Makefile</filename> in
|
|
<filename>/usr/src</filename> genau an, bevor Sie
|
|
&os.current; übersetzen. Wenn Sie
|
|
&os; das erste Mal aktualisieren, sollten Sie sowohl
|
|
<link linkend="makeworld">einen Kernel als auch das
|
|
System neu installieren</link>.
|
|
Lesen Sie bitte die Mailingliste &a.current;
|
|
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>
|
|
|
|
<listitem>
|
|
<para>Seien Sie aktiv! Wenn Sie &os.current; laufen lassen,
|
|
wollen wir wissen, was Sie darüber denken, besonders
|
|
wenn Sie Verbesserungsvorschläge oder Fehlerbehebungen
|
|
haben. Verbesserungsvorschläge, die Code enthalten,
|
|
werden übrigens begeistert entgegengenommen.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="stable">
|
|
<title>&os.stable;</title>
|
|
|
|
<sect3>
|
|
<title>Was ist &os.stable;?</title>
|
|
<indexterm><primary>-STABLE</primary></indexterm>
|
|
|
|
<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.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Wer braucht &os.stable;?</title>
|
|
|
|
<para>Wenn Sie den FreeBSD-Entwicklungsprozess, besonders im
|
|
Hinblick auf das nächste Release, verfolgen oder
|
|
dazu beitragen wollen, sollten Sie erwägen, &os.stable; zu
|
|
benutzen.</para>
|
|
|
|
<para>Auch wenn sicherheitsrelevante Fehlerbehebungen in den
|
|
&os.stable; Zweig einfließen, müssen Sie deswegen
|
|
noch lange nicht &os.stable; verfolgen. Jeder der FreeBSD
|
|
Sicherheitshinweise beschreibt für jedes betroffene Release,
|
|
<footnote><para>Das stimmt nicht ganz. Obwohl wir alte FreeBSD
|
|
Releases für einige Jahre unterstützen, können
|
|
wir sie nicht ewig unterstützen. Eine vollständige
|
|
Beschreibung der Sicherheitspolitik für alte FreeBSD
|
|
Releases entnehmen Sie bitte <ulink
|
|
url="&url.main;/security/index.html">http://www.FreeBSD.org/security/</ulink>.</para>
|
|
</footnote>
|
|
wie sie einen sicherheitsrelevanten Fehler beheben.
|
|
Wenn Sie den Entwicklungszweig aus Sicherheitsgründen
|
|
verfolgen wollen, bedenken Sie, dass Sie neben
|
|
Fehlerbehebungen auch eine Vielzahl unerwünschter
|
|
Änderungen erhalten werden.</para>
|
|
|
|
<para>Obwohl wir versuchen sicherzustellen, dass der
|
|
&os.stable; Zweig sich jederzeit übersetzen lässt
|
|
und läuft, können wir dafür keine Garantie
|
|
übernehmen. Auch wenn Neuentwicklungen in &os.current;
|
|
stattfinden, ist es jedoch so, dass mehr Leute
|
|
&os.stable; benutzen als &os.current; und es daher unvermeidlich
|
|
ist, dass Fehler und Grenzfälle erst in &os.stable;
|
|
auffallen.</para>
|
|
|
|
<para>Aus diesen Gründen empfehlen wir Ihnen
|
|
<emphasis>nicht</emphasis>, blindlings &os.stable; zu benutzen.
|
|
Es ist wichtig, dass Sie &os.stable; zuerst sorgfältig
|
|
in einer Testumgebung austesten, bevor Sie Ihre Produktion
|
|
auf &os.stable; migrieren.</para>
|
|
|
|
<para>Wenn Sie dies nicht leisten können, empfehlen wir Ihnen,
|
|
das aktuelle FreeBSD-Release zu verwenden. Benutzen Sie dann den
|
|
binären Update-Mechanismus, um auf neue Releases
|
|
zu migrieren.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Benutzen von &os.stable;</title>
|
|
|
|
<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>In der &a.cvsall.name; Mailingliste sehen Sie zu jeder
|
|
Änderung das Commit-Log, das Informationen zu
|
|
möglichen Seiteneffekten enthält.</para>
|
|
|
|
<para>Um diese Listen oder andere Listen zu abonnieren
|
|
besuchen Sie bitte die Seite &a.mailman.lists.link;.
|
|
Weitere Informationen erhalten Sie, wenn Sie dort
|
|
auf die gewünschte Liste klicken.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wenn Sie ein neues System installieren und so aktuell wie
|
|
möglich sein wollen, holen Sie sich einfach den neusten
|
|
<foreignphrase>Snapshot</foreignphrase> von
|
|
<ulink url="ftp://snapshots.jp.FreeBSD.org/pub/FreeBSD/snapshots/"></ulink>
|
|
und installieren ihn wie ein normales Release. Sie
|
|
können ebenfalls das neuste &os.stable; von
|
|
den <link linkend="mirrors">Spiegeln</link> beziehen
|
|
und Ihr System nach den folgenden Anweisungen
|
|
aktualisieren.</para>
|
|
|
|
<para>Wenn Sie schon ein älteres Release von &os;
|
|
und das System mit dem Quellcode aktualisieren wollen,
|
|
benutzen Sie einen der <link
|
|
linkend="mirrors">&os;-Spiegel</link>. Sie haben
|
|
dazu zwei Möglichkeiten:</para>
|
|
|
|
<orderedlist>
|
|
<indexterm>
|
|
<primary><command>cvsup</command></primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary><command>cron</command></primary>
|
|
</indexterm>
|
|
<indexterm>
|
|
<primary>-STABLE</primary>
|
|
<secondary>mit <application>CVSup</application>
|
|
synchronisieren</secondary>
|
|
</indexterm>
|
|
<listitem>
|
|
<para>Benutzen Sie das Programm
|
|
<link linkend="cvsup">cvsup</link>
|
|
mit der Datei <filename>stable-supfile</filename>
|
|
aus dem Verzeichnis
|
|
<filename>/usr/share/examples/cvsup</filename>.
|
|
Dies ist die empfohlene Methode, da Sie die ganzen
|
|
Quellen nur einmal herunterladen und danach nur noch
|
|
Änderungen beziehen. Viele lassen
|
|
<command>cvsup</command> aus <command>cron</command>
|
|
heraus laufen, um ihre Quellen automatisch auf Stand
|
|
zu bringen. Sie müssen das oben erwähnte
|
|
<filename>supfile</filename> anpassen und <link
|
|
linkend="cvsup">cvsup</link> konfigurieren.</para>
|
|
</listitem>
|
|
|
|
<indexterm>
|
|
<primary>-STABLE</primary>
|
|
<secondary>mit CTM synchronisieren</secondary>
|
|
</indexterm>
|
|
<listitem>
|
|
<para>Benutzen Sie <application><link linkend="ctm">
|
|
CTM</link></application>. Wenn Sie über
|
|
keine schnelle und billige Internet-Anbindung
|
|
verfügen, sollten Sie diese Methode in Betracht
|
|
ziehen.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Benutzen Sie <command>cvsup</command> oder
|
|
<command>ftp</command>, wenn Sie schnellen Zugriff auf die
|
|
Quellen brauchen und die Bandbreite keine Rolle spielt,
|
|
andernfalls benutzen Sie
|
|
<application>CTM</application>.</para>
|
|
</listitem>
|
|
|
|
<indexterm>
|
|
<primary>-STABLE</primary>
|
|
<secondary>übersetzen</secondary>
|
|
</indexterm>
|
|
<listitem>
|
|
<para>Bevor Sie &os.stable; übersetzen, sollten Sie sich
|
|
das <filename>Makefile</filename> in
|
|
<filename>/usr/src</filename> genau anschauen. Wenn Sie
|
|
&os; das erste Mal aktualisieren, sollten Sie sowohl
|
|
<link linkend="makeworld">einen Kernel als auch das
|
|
System neu installieren</link>.
|
|
Lesen Sie bitte 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>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="synching">
|
|
<title>Synchronisation der Quellen</title>
|
|
|
|
<para>Sie können eine Internet-Verbindung (oder E-Mail) dazu
|
|
nutzen, Teile von &os;, wie die Quellen zu einzelnen Projekten, oder
|
|
das Gesamtsystem, aktuell zu halten. Dazu bieten wir die Dienste
|
|
<link linkend="anoncvs">AnonymousCVS</link>,
|
|
<link linkend="cvsup">CVSup</link> und
|
|
<link linkend="ctm">CTM</link> an.</para>
|
|
|
|
<warning>
|
|
<para>Obwohl es möglich ist, nur Teile des Quellbaums zu
|
|
aktualisieren, ist die einzige unterstütze Migrationsprozedur,
|
|
den kompletten Quellbaum zu aktualisieren und alles, das
|
|
heißt das Userland (z.B. alle Programme in
|
|
<filename>/bin</filename> und <filename>/sbin</filename>) und die
|
|
Kernelquellen, neu zu übersetzen. Wenn Sie nur einen Teil der
|
|
Quellen, zum Beispiel nur den Kernel oder nur die Programme aus dem
|
|
Userland, aktualisieren, werden Sie oft Probleme haben, die von
|
|
Übersetzungsfehlern über Kernel-Panics bis hin zu
|
|
Beschädigungen Ihrer Daten reichen können.</para>
|
|
</warning>
|
|
|
|
<indexterm><primary>anonymous CVS</primary></indexterm>
|
|
<para><application>Anonymous CVS</application> und
|
|
<application>CVSup</application> benutzen die
|
|
<foreignphrase>Pull</foreignphrase>-Methode
|
|
<footnote>
|
|
<para>Von engl. <foreignphrase>to pull</foreignphrase> =
|
|
<emphasis>ziehen</emphasis>. Der Client holt sich bei dieser
|
|
Methode die Dateien ab.</para>
|
|
</footnote>, um die Quellen zu aktualisieren. Im Fall von
|
|
<application>CVSup</application> ruft der Benutzer oder ein
|
|
<command>cron</command>-Skript <command>cvsup</command> auf, das
|
|
wiederum mit einem <command>cvsupd</command> Server interagiert, um
|
|
Ihre Quellen zu aktualisieren. Mit beiden Methoden erhalten Sie
|
|
aktuelle Updates zu einem genau von Ihnen bestimmten Zeitpunkt. Sie
|
|
können die Prozedur auf bestimmte Dateien oder Verzeichnisse
|
|
einschränken, so dass Sie nur die Updates bekommen, die
|
|
für Sie von Interesse sind. Die Updates werden zur Laufzeit,
|
|
abhängig von den Sachen, die Sie schon haben und den Sachen, die
|
|
Sie haben wollen, auf dem Server generiert. <application>Anonymous
|
|
CVS</application> ist eine Erweiterung von
|
|
<application>CVS</application>, die es Ihnen erlaubt, Änderungen
|
|
direkt aus einem entfernten CVS-Repository zu ziehen.
|
|
<application>Anonymous CVS</application> ist leichter zu handhaben
|
|
als <application>CVSup</application>, doch ist letzteres sehr viel
|
|
effizienter.</para>
|
|
|
|
<indexterm>
|
|
<primary><application>CTM</application></primary>
|
|
</indexterm>
|
|
<para>Im Gegensatz dazu vergleicht <application>CTM</application> Ihre
|
|
Quellen nicht mit denen auf einem Server. Stattdessen läuft auf
|
|
dem Server ein Skript, das Änderungen an Dateien gegenüber
|
|
seinem vorigen Lauf bemerkt, die Änderungen komprimiert, mit
|
|
einer Sequenznummer versieht und für das Verschicken per E-Mail
|
|
kodiert (es werden nur druckbare ASCII-Zeichen verwendet). Wenn Sie
|
|
diese <quote>CTM-Deltas</quote> erhalten haben, können Sie sie
|
|
mit &man.ctm.rmail.1; benutzen, welches die Deltas dekodiert,
|
|
verifiziert und dann die Änderungen an Ihren Quellen vornimmt.
|
|
Dieses Verfahren ist viel effizienter als
|
|
<application>CVSup</application> und erzeugt auch weniger Last auf
|
|
unseren Servern, da es die
|
|
<foreignphrase>Push</foreignphrase>-Methode
|
|
<footnote>
|
|
<para>Von engl. <foreignphrase>to push</foreignphrase> =
|
|
<emphasis>schieben</emphasis>. Der Server schickt dem Client die
|
|
Dateien.</para>
|
|
</footnote> verwendet.</para>
|
|
|
|
<para>Es gibt natürlich noch weitere Unterschiede, die Sie
|
|
beachten sollten. Wenn Sie unabsichtlich Teile Ihres Archivs
|
|
löschen, wird das von <application>CVSup</application>
|
|
wie <application>Anonymous CVS</application> erkannt
|
|
und repariert. Wenn sich fehlerhafte Dateien in Ihrem Quellbaum
|
|
befinden, löschen Sie diese einfach und synchronisieren erneut.
|
|
<application>CTM</application> leistet das nicht,
|
|
wenn Sie Teile des Quellbaums gelöscht haben und keine Sicherung
|
|
besitzen, müssen Sie von neuem, das heißt vom letzten
|
|
<quote>Basis-Delta</quote>, starten und die Änderungen wieder
|
|
mit <application>CTM</application> nachziehen.
|
|
</sect1>
|
|
|
|
<sect1 id="makeworld">
|
|
<title>Bau mit <command>make world</command></title>
|
|
|
|
<indexterm>
|
|
<primary><command>make world</command></primary>
|
|
</indexterm>
|
|
<para>Wenn Sie Ihren lokalen Quellbaum mit einer bestimmten FreeBSD
|
|
Version (&os.stable;, &os.current;, usw.) synchronisiert haben,
|
|
können Sie diesen benutzen, um das System neu zu
|
|
bauen.</para>
|
|
|
|
<warning>
|
|
<title>Erstellen Sie eine Sicherung!</title>
|
|
|
|
<para>Es kann nicht oft genug betont werden, wie wichtig es ist, Ihr
|
|
System zu sichern, <emphasis>bevor</emphasis> Sie die nachfolgenden
|
|
Schritte ausführen. Obwohl der Neubau des Systems eine
|
|
einfache Aufgabe ist, solange Sie sich an die folgende Anleitung
|
|
halten, ist es unvermeidlich, dass Sie Fehler machen, oder Ihr
|
|
System nicht mehr bootet, weil andere Fehler in den Quellbaum
|
|
eingeführt haben.</para>
|
|
|
|
<para>Stellen Sie sicher, dass Sie eine Sicherung erstellt haben
|
|
und über eine Fixit-Floppy verfügen. Wahrscheinlich
|
|
brauchen Sie sie nicht zu benutzen, aber gehen Sie auf Nummer
|
|
Sicher!</para>
|
|
</warning>
|
|
|
|
<warning>
|
|
<title>Abonnieren Sie die richtige Mailingliste</title>
|
|
|
|
<indexterm><primary>Mailingliste</primary></indexterm>
|
|
<para>Die &os.stable; und &os.current; Zweige befinden sich in
|
|
<emphasis>ständiger Entwicklung</emphasis>. Die Leute, die zu
|
|
&os; beitragen, sind Menschen und ab und zu machen sie
|
|
Fehler.</para>
|
|
|
|
<para>Manchmal sind diese Fehler harmlos und lassen Ihr System eine
|
|
Warnung ausgeben. Die Fehler können allerdings auch
|
|
katastrophal sein und dazu führen, dass Sie Ihr System
|
|
nicht mehr booten können, Dateisysteme beschädigt
|
|
werden oder Schlimmeres passiert.</para>
|
|
|
|
<para>Wenn solche Probleme auftauchen, wird ein
|
|
<quote>heads up</quote> an die passende Mailingliste geschickt, welches
|
|
das Problem erklärt und die betroffenen Systeme benennt. Eine
|
|
<quote>all clear</quote> Meldung wird versendet, wenn das
|
|
Problem gelöst ist.</para>
|
|
|
|
<para>Wenn Sie &os.stable; oder &os.current; benutzen und nicht die
|
|
Mailinglisten &a.stable; beziehungsweise &a.current; lesen, bringen
|
|
Sie sich nur unnötig in Schwierigkeiten.</para>
|
|
</warning>
|
|
|
|
<sect2>
|
|
<title>Richtig aktualisieren</title>
|
|
|
|
<para>Aktualisieren Sie ein System nach der folgenden
|
|
Vorschrift:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make buildworld</userinput>
|
|
&prompt.root; <userinput>make buildkernel</userinput>
|
|
&prompt.root; <userinput>make installkernel</userinput>
|
|
&prompt.root; <userinput>reboot</userinput></screen>
|
|
|
|
<para>Fahren Sie das System in den Einbenutzermodus
|
|
(beispielsweise indem Sie im Loader
|
|
<command>boot -s</command> eingeben) und starten
|
|
Sie dann die nachstehenden Kommandos:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mergemaster -p</userinput>
|
|
&prompt.root; <userinput>make installworld</userinput>
|
|
&prompt.root; <userinput>mergemaster</userinput>
|
|
&prompt.root; <userinput>reboot</userinput></screen>
|
|
|
|
<warning>
|
|
<title>Lesen Sie bitte weiter</title>
|
|
|
|
<para>Die obige Vorschrift ist nur eine
|
|
Gedächtnisstütze. Um die einzelnen
|
|
Schritte zu verstehen, lesen Sie bitte die
|
|
folgenden Abschnitte, insbesondere wenn Sie
|
|
einen angepassten Kernel erstellen.</para>
|
|
</warning>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Lesen Sie <filename>/usr/src/UPDATING</filename></title>
|
|
|
|
<para>Bevor Sie etwas anderes tun, lesen Sie bitte
|
|
<filename>/usr/src/UPDATING</filename> (oder die entsprechende
|
|
Datei, wenn Sie den Quellcode woanders installiert haben). Die
|
|
Datei enthält wichtige Informationen zu Problemen, auf die Sie
|
|
stoßen könnten oder gibt die Reihenfolge vor, in der Sie
|
|
bestimmte Kommandos laufen lassen müssen. 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>
|
|
|
|
<important>
|
|
<para>Das Lesen von <filename>UPDATING</filename> ersetzt nicht das
|
|
Abonnieren der richtigen Mailingliste. Die beiden Voraussetzungen
|
|
ergänzen sich, es reicht nicht aus, nur eine zu
|
|
erfüllen.</para>
|
|
</important>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Überprüfen Sie
|
|
<filename>/etc/make.conf</filename></title>
|
|
<indexterm>
|
|
<primary><filename>make.conf</filename></primary>
|
|
</indexterm>
|
|
|
|
<para>Überprüfen Sie die Dateien
|
|
<filename>/usr/share/examples/etc/make.conf</filename>
|
|
(<filename>/etc/defaults/make.conf</filename> unter &os; 4.X)
|
|
und <filename>/etc/make.conf</filename>. Die erste enthält
|
|
Vorgabewerte, von denen die meisten auskommentiert sind. Um diese
|
|
während des Neubaus des Systems zu nutzen, tragen Sie die
|
|
Werte in <filename>/etc/make.conf</filename> ein. Beachten Sie,
|
|
dass alles, was Sie in <filename>/etc/make.conf</filename>
|
|
eintragen, bei jedem Aufruf von <command>make</command> angezogen
|
|
wird. Es ist also klug, hier etwas Sinnvolles einzutragen.</para>
|
|
|
|
<para>Typischerweise wollen Sie die Zeilen, die
|
|
<makevar>CFLAGS</makevar> und <makevar>NOPROFILE</makevar>
|
|
enthalten, aus
|
|
<filename>/usr/share/examples/etc/make.conf</filename>
|
|
(<filename>/etc/defaults/make.conf</filename> unter &os; 4.X)
|
|
nach <filename>/etc/make.conf</filename> übertragen und dort
|
|
aktivieren.</para>
|
|
|
|
<para>Sehen Sie sich auch die anderen Definitionen, wie
|
|
<makevar>COPTFLAGS</makevar> oder <makevar>NOPORTDOCS</makevar> an
|
|
und entscheiden Sie, ob Sie diese aktivieren wollen.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Aktualisieren Sie die Dateien in <filename>/etc</filename></title>
|
|
|
|
<para>Das Verzeichnis <filename>/etc</filename> enthält den
|
|
Großteil der Konfigurationsdateien des Systems und Skripten,
|
|
die beim Start des Systems ausgeführt werden. Einige dieser
|
|
Skripten ändern sich bei einer Migration auf eine neue
|
|
FreeBSD-Version.</para>
|
|
|
|
<para>Einige der Konfigurationsdateien, besonders
|
|
<filename>/etc/group</filename>, werden für den Normalbetrieb
|
|
des Systems gebraucht.</para>
|
|
|
|
<para>Es gab Fälle, in denen der Installationsteil von
|
|
<command>make world</command> auf das Vorhandensein von bestimmten
|
|
Accounts oder Gruppen angewiesen war, die aber zurzeit des Updates
|
|
noch nicht vorhanden waren. Demzufolge kam es zu Problemen
|
|
bei der Migration.</para>
|
|
|
|
<para>Ein Beispiel dafür ist der vor kurzem hinzugefügte
|
|
Benutzer <username>smmsp</username>. Die Installationsprozedur
|
|
schlug an der Stelle fehl, an der &man.mtree.8;
|
|
versuchte, <filename>/var/spool/clientmqueue</filename>
|
|
anzulegen.</para>
|
|
|
|
<para>Um dieses Problem zu umgehen, vergleichen Sie die Gruppen in
|
|
<filename>/usr/src/etc/group</filename> mit den auf Ihrem System
|
|
vorhandenen Gruppen. Wenn sich in dieser Datei neue Gruppen
|
|
befinden, kopieren Sie diese nach <filename>/etc/group</filename>.
|
|
Gruppen, die in <filename>/etc/group</filename> dieselbe GID wie in
|
|
<filename>/usr/src/etc/group</filename> aber einen
|
|
unterschiedlichen Namen haben, sollten Sie umbenennen.</para>
|
|
|
|
<para>Seit 4.6-RELEASE besitzt &man.mergemaster.8; einen
|
|
prä-buildworld Modus, der mit <option>-p</option> aktiviert
|
|
wird. In diesem Modus werden nur Dateien verglichen, die für
|
|
den Erfolg von <maketarget>buildworld</maketarget> oder
|
|
<maketarget>installworld</maketarget> essentiell sind. Wenn Ihre
|
|
alte Version von <command>mergemaster</command> die Option
|
|
<option>-p</option> noch nicht unterstützt, nehmen Sie beim
|
|
ersten Lauf die neue Version aus dem Quellbaum:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/mergemaster</userinput>
|
|
&prompt.root; <userinput>./mergemaster.sh -p</userinput></screen>
|
|
|
|
<tip>
|
|
<para>Wenn Sie besonders paranoid sind, sollten Sie Ihr System nach
|
|
Dateien absuchen, die der Gruppe, die Sie umbenennen oder
|
|
löschen, gehören:</para>
|
|
|
|
<screen>&prompt.root; <userinput>find / -group <replaceable>GID</replaceable> -print</userinput></screen>
|
|
|
|
<para>Das obige Kommando zeigt alle Dateien an, die der Gruppe
|
|
<replaceable>GID</replaceable> (dies kann entweder ein
|
|
Gruppenname oder eine numerische ID sein) gehören.</para>
|
|
</tip>
|
|
</sect2>
|
|
|
|
<sect2 id="makeworld-singleuser">
|
|
<title>Wechseln Sie in den Single-User Modus</title>
|
|
<indexterm><primary>Single-User Modus</primary></indexterm>
|
|
|
|
<para>Sie können das System im Single-User Modus
|
|
übersetzen. Abgesehen davon, dass dies etwas schneller
|
|
ist, werden bei der Installation des Systems viele wichtige Dateien,
|
|
wie die Standard-Systemprogramme, die Bibliotheken und
|
|
Include-Dateien, verändert. Sie bringen sich in
|
|
Schwierigkeiten, wenn Sie diese Dateien auf einem laufenden System
|
|
verändern, besonders dann, wenn zu dieser Zeit Benutzer auf
|
|
dem System aktiv sind.</para>
|
|
|
|
<indexterm><primary>Mehrbenutzermodus</primary></indexterm>
|
|
<para>Eine andere Methode übersetzt das System im
|
|
Mehrbenutzermodus und wechselt für die Installation den
|
|
Single-User Modus. Wenn Sie diese Methode benutzen wollen, warten
|
|
Sie mit den folgenden Schritten, bis der Bau des Systems fertig
|
|
ist und Sie mit <maketarget>installkernel</maketarget> oder
|
|
<maketarget>installworld</maketarget> installieren wollen.</para>
|
|
|
|
<para>Als Superuser können Sie mit dem folgenden Kommando ein
|
|
laufendes System in den Single-User Modus bringen:</para>
|
|
|
|
<screen>&prompt.root; <userinput/shutdown now/</screen>
|
|
|
|
<para>Alternativ können Sie das System mit der Option
|
|
<option>-s</option> in den Single-User Modus booten. Setzen Sie
|
|
dann die folgenden Kommandos ab:</para>
|
|
|
|
<screen>&prompt.root; <userinput>fsck -p</userinput>
|
|
&prompt.root; <userinput>mount -u /</userinput>
|
|
&prompt.root; <userinput>mount -a -t ufs</userinput>
|
|
&prompt.root; <userinput>swapon -a</userinput></screen>
|
|
|
|
<para>Die Kommandos überprüfen die Dateisysteme,
|
|
hängen <filename>/</filename> wieder beschreibbar ein,
|
|
hängen dann alle anderen UFS Dateisysteme aus
|
|
<filename>/etc/fstab</filename> ein und aktivieren den
|
|
Swap-Bereich.</para>
|
|
|
|
<note>
|
|
<para>Zeigt Ihre CMOS-Uhr die lokale Zeit und nicht GMT an, dies
|
|
erkennen Sie daran, dass &man.date.1; die
|
|
falsche Zeit und eine flasche Zeitzone anzeigt, setzen Sie das
|
|
folgende Kommando ab:</para>
|
|
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
|
|
|
|
<para>Dies stellt sicher, dass Ihre Zeitzone richtig
|
|
eingestellt ist. Ohne dieses Kommando werden Sie
|
|
vielleicht später Probleme bekommen.</para>
|
|
</note>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Entfernen Sie <filename>/usr/obj</filename></title>
|
|
|
|
<para>Die neugebauten Teile des Systems werden in der Voreinstellung
|
|
unter <filename>/usr/obj</filename> gespeichert. Die Verzeichnisse
|
|
dort spiegeln die Struktur unter
|
|
<filename>/usr/src</filename>.</para>
|
|
|
|
<para>Sie können den <command>make world</command> Prozess
|
|
beschleunigen, indem Sie dieses Verzeichnis entfernen. Dies
|
|
erspart Ihnen zudem einigen Ärger aufgrund von
|
|
Abhängigkeiten.</para>
|
|
|
|
<para>Einige Dateien unter <filename>/usr/obj</filename> sind
|
|
vielleicht durch die <option>immutable</option>-Option
|
|
(siehe &man.chflags.1;) schreibgeschützt, die vor dem
|
|
Löschen entfernt werden muss.</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/obj</userinput>
|
|
&prompt.root; <userinput>chflags -R noschg *</userinput>
|
|
&prompt.root; <userinput>rm -rf *</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Übersetzen der Quellen</title>
|
|
|
|
<sect3>
|
|
<title>Sichern der Ausgaben</title>
|
|
|
|
<para>Für den Fall, dass etwas schief geht, sollten Sie
|
|
die Ausgaben von &man.make.1; in einer Datei sichern, damit Sie
|
|
eine Kopie der Fehlermeldung besitzen. Das mag Ihnen nicht
|
|
helfen, den Fehler zu finden, kann aber anderen helfen, wenn Sie
|
|
Ihr Problem in einer der &os;-Mailinglisten schildern.</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 <replaceable>TARGET</replaceable></userinput>
|
|
<emphasis>… Ausgaben des Kommandos …</emphasis>
|
|
&prompt.root; <userinput>exit</userinput>
|
|
Script done, …</screen>
|
|
|
|
<para>Sichern Sie die Ausgaben nicht in <filename>/tmp</filename>,
|
|
da dieses Verzeichnis beim nächsten Boot aufgeräumt
|
|
werden kann. Ein geeigneteres Verzeichnis ist
|
|
<filename>/var/tmp</filename>, wie im vorigen Beispiel gezeigt,
|
|
oder das Heimatverzeichnis von <username>root</username>.</para>
|
|
</sect3>
|
|
|
|
<sect3 id="make-buildworld">
|
|
<title>Übersetzen des Basissystems</title>
|
|
|
|
<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>Zum Neubau der Welt benutzen Sie &man.make.1;. Dieses
|
|
Kommando liest ein <filename>Makefile</filename>, das Anweisungen
|
|
enthält, 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>
|
|
|
|
<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
|
|
Sie an &man.make.1; weitergeben wollen. Eine Liste gültiger
|
|
Optionen finden Sie in der &man.make.1; Manualpage.</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>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 -DNOPROFILE <replaceable>target</replaceable></userinput></screen>
|
|
|
|
<para>Dieser Aufruf entspricht dem folgenden Eintrag in
|
|
<filename>/etc/make.conf</filename>:</para>
|
|
|
|
<programlisting>NOPROFILE= 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> sind nicht
|
|
für den Endanwender gedacht, sondern unterteilen den
|
|
Bauprozess in eine Reihe von Einzelschritten.</para>
|
|
|
|
<para>Im Regelfall müssen Sie &man.make.1; keine Parameter
|
|
mitgeben, so dass Ihre Kommandozeile wie folgt aussehen
|
|
wird:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen>
|
|
|
|
<para>In der &os; Version 2.2.5 wurde das Ziel
|
|
<maketarget>world</maketarget> in zwei Ziele aufgespalten:
|
|
<maketarget>buildworld</maketarget> und
|
|
<maketarget>installworld</maketarget>. Tatsächlich ist das
|
|
zuerst in &os.current; passiert und wurde dann irgendwann
|
|
zwischen den Versionen 2.2.2 und 2.2.5 in &os.stable;
|
|
eingebaut.</para>
|
|
|
|
<para>Mit <maketarget>buildworld</maketarget> wird ein kompletter
|
|
Baum unterhalb von <filename>/usr/obj</filename> gebaut, der mit
|
|
<maketarget>installworld</maketarget> auf dem System installiert
|
|
werden kann.</para>
|
|
|
|
<para>Dies ist aus zwei Gründen nützlich. Erstens
|
|
können Sie das System auf einem laufenden System bauen, da die
|
|
Bauprozedur abgekapselt vom Rest des Systems ist. Das System
|
|
lässt sich im Mehrbenutzermodus ohne negative
|
|
Seiteneffekte bauen. Die Installation mit
|
|
<maketarget>installworld</maketarget> sollte aber immer noch im
|
|
Single-User Modus erfolgen.</para>
|
|
|
|
<para>Zweitens können Sie NFS benutzen, um mehrere Maschinen
|
|
in Ihrem Netzwerk zu aktualisieren. Wenn Sie die Maschinen
|
|
<hostid>A</hostid>, <hostid>B</hostid> und <hostid>C</hostid>
|
|
aktualisieren wollen, lassen sie <command>make
|
|
buildworld</command> und <command>make installworld</command> auf
|
|
<hostid>A</hostid> laufen. Auf den Maschinen <hostid>B</hostid>
|
|
und <hostid>C</hostid> können Sie die
|
|
Verzeichnisse <filename>/usr/src</filename> und
|
|
<filename>/usr/obj</filename> von <hostid>A</hostid> einhängen
|
|
und brauchen dort nur noch <command>make installworld</command>
|
|
auszuführen, um die Bauresultate zu installieren.</para>
|
|
|
|
<para>Obwohl das Ziel <maketarget>world</maketarget> noch
|
|
existiert, sollten Sie es wirklich nicht mehr benutzen.</para>
|
|
|
|
<para>Um das System zu bauen, setzen Sie das folgende Kommando
|
|
ab:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make buildworld</userinput></screen>
|
|
|
|
<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 IO statt
|
|
der CPU bestimmt wird, ist diese Option auch auf
|
|
Einprozessor-Systemen nützlich.</para>
|
|
|
|
<para>Auf einem typischen Einprozessor-System können Sie den
|
|
folgenden Befehl absetzen:</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 in Ihrem
|
|
Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und 10
|
|
aus.</para>
|
|
|
|
<para>Beachten Sie bitte, dass dies noch nicht richtig
|
|
unterstützt wird und dass es bei einigen
|
|
Änderungen am Quellbaum zu Fehlern kommen kann. Wenn Sie
|
|
diesen Parameter benutzt haben und der Bau nicht funktioniert,
|
|
bauen Sie bitte noch einmal ohne den Parameter, bevor Sie ein
|
|
Problem melden.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Laufzeiten</title>
|
|
<indexterm>
|
|
<primary><command>make world</command></primary>
|
|
<secondary>Laufzeiten</secondary>
|
|
</indexterm>
|
|
|
|
<para>Die Laufzeit eines Baus wird von vielen Faktoren
|
|
beeinflusst. Ein 500 MHz &pentium; III braucht
|
|
ungefähr zwei Stunden um &os.stable; zu bauen. Der Bau von
|
|
&os.current; dauert etwas länger.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Übersetzen und Installation des Kernels</title>
|
|
<indexterm>
|
|
<primary>Kernel</primary>
|
|
<secondary>Übersetzen</secondary>
|
|
</indexterm>
|
|
|
|
<para>Um das Beste aus Ihrem System zu holen, sollten Sie einen neuen
|
|
Kernel kompilieren. Praktisch gesehen ist das sogar notwendig, da
|
|
sich einige Datenstrukturen geändert haben und Programme wie
|
|
&man.ps.1; oder &man.top.1; nur mit einem Kernel zusammen arbeiten,
|
|
der auch zu dem entsprechenden Quellcode passt.</para>
|
|
|
|
<para>Am einfachsten und sichersten bauen Sie dazu den
|
|
<filename>GENERIC</filename> Kernel. Obwohl der
|
|
<filename>GENERIC</filename> Kernel vielleicht nicht alle
|
|
Ihre Geräte unterstützt, sollte er alles enthalten,
|
|
um das System in den Single-User Modus zu booten. Dies ist auch
|
|
ein guter Test, um zu sehen, dass das System
|
|
ordnungsgemäß funktioniert. Nachdem Sie mit
|
|
<filename>GENERIC</filename> gebootet und sichergestellt haben,
|
|
dass Ihr System funktioniert, können Sie einen neuen
|
|
Kernel mit Ihrer Konfigurationsdatei bauen.</para>
|
|
|
|
<para>Wenn Sie einen Update nach &os; 4.0 oder höher
|
|
durchführen, sollten Sie den Kernel nicht mit der
|
|
<quote>herkömmlichen</quote> Methode,
|
|
die in <xref linkend="kernelconfig">
|
|
beschrieben ist, bauen. Stattdessen benutzen Sie die nachstehenden
|
|
Kommandos (die <quote>neue</quote> Methode)
|
|
<emphasis>nach</emphasis> dem <link linkend="make-buildworld">
|
|
Bau des Basissystems mit
|
|
<maketarget>buildworld</maketarget></link>.</para>
|
|
|
|
<note>
|
|
<para>Wenn Sie einen angepassten Kernel erstellen wollen und
|
|
bereits über eine Konfigurationsdatei verfügen,
|
|
geben Sie diese, wie im folgenden Beispiel gezeigt, auf der
|
|
Kommandozeile an:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
|
&prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput>
|
|
&prompt.root; <userinput>make installkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen>
|
|
|
|
<para>Wenn Sie FreeBSD 4.2 oder eine ältere Version
|
|
verwenden, ersetzen Sie <literal>KERNCONF=</literal> durch
|
|
<literal>KERNEL=</literal>. Ab der 4.2-STABLE Version vom
|
|
2. Februar 2001 können Sie die Variable
|
|
<makevar>KERNCONF</makevar> verwenden.</para>
|
|
</note>
|
|
|
|
<para>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
|
|
<maketarget>installkernel</maketarget> im Einbenutzermodus
|
|
ausführen. Wenn das nicht der Fall ist, sollten die beiden
|
|
Kommandos problemlos im Mehrbenutzermodus laufen. Weitere
|
|
Informationen über <varname>kern.securelevel</varname> finden
|
|
Sie in &man.init.8; und &man.chflags.1; erläutert Optionen, die
|
|
Sie auf Dateien setzen können.</para>
|
|
|
|
<para>Wenn Sie ein Update auf eine &os; Version vor 4.0
|
|
durchführen, sollten Sie die <quote>herkömmliche</quote>
|
|
Methode benutzen. Es ist allerdings empfohlen, dazu die frisch
|
|
gebaute Version von &man.config.8; zu benutzen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>/usr/obj/usr/src/usr.sbin/config/config <replaceable>KERNELNAME</replaceable></userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Booten Sie in den Single-User Modus</title>
|
|
<indexterm><primary>Single-User Modus</primary></indexterm>
|
|
|
|
<para>Um zu prüfen, ob der neue Kernel funktioniert, sollten Sie
|
|
in den Single-User Modus booten. Folgen Sie dazu der Anleitung aus
|
|
<xref linkend="makeworld-singleuser">.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Installation des Systems</title>
|
|
|
|
<para>Wenn Sie <command>make buildworld</command> benutzt haben, um
|
|
das System zu bauen, sollten Sie jetzt
|
|
<maketarget>installworld</maketarget> benutzen, um es zu
|
|
installieren. Rufen Sie dazu das folgende Kommando auf:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
|
&prompt.root; <userinput>make installworld</userinput></screen>
|
|
|
|
<note>
|
|
<para>Wenn Sie mit dem <command>make buildworld</command> Kommando
|
|
Variablen verwenden haben, müssen Sie dieselben Variablen
|
|
auch bei dem <command>make installworld</command> Kommando
|
|
angeben. Auf die anderen Optionen trifft das nur bedingt zu:
|
|
<option>-j</option> darf mit <maketarget>installworld</maketarget>
|
|
nicht benutzt werden.</para>
|
|
|
|
<para>Sie haben zum Bauen die folgende Kommandozeile
|
|
verwendet:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make -DNOPROFILE buildworld</userinput></screen>
|
|
|
|
<para>Bei der Installation setzen Sie dann das folgende Kommando
|
|
ab:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make -DNOPROFILE installworld</userinput></screen>
|
|
|
|
<para>Würden Sie die Variable bei der Installation weglassen,
|
|
so würde das System versuchen, die <quote>profiled</quote>
|
|
Bibliotheken, die aber gar nicht gebaut wurden, zu
|
|
installieren.</para>
|
|
</note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Aktualisieren der von <command>make installworld</command>
|
|
ausgelassenen Dateien</title>
|
|
|
|
<para>Neue oder geänderte Konfigurationsdateien aus einigen
|
|
Verzeichnissen, besonders <filename>/etc</filename>,
|
|
<filename>/var</filename> und <filename>/usr</filename> werden bei
|
|
der Installationsprozedur nicht berücksichtigt.</para>
|
|
|
|
<para>Sie können diese Dateien mit &man.mergemaster.8;
|
|
aktualisieren. Alternativ können Sie das auch manuell
|
|
durchführen, obwohl wir diesen Weg nicht empfehlen. Egal
|
|
welchen Weg Sie beschreiten, sichern Sie vorher den Inhalt von
|
|
<filename>/etc</filename> für den Fall, dass etwas schief
|
|
geht.</para>
|
|
|
|
<sect3 id="mergemaster">
|
|
<sect3info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Tom</firstname>
|
|
<surname>Rhodes</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect3info>
|
|
<title><command>mergemaster</command></title>
|
|
<indexterm><primary><command>mergemaster</command></primary></indexterm>
|
|
|
|
<para>Das Bourne-Shell Skript &man.mergemaster.8; hilft Ihnen dabei,
|
|
die Unterschiede zwischen den Konfigurationsdateien in
|
|
<filename>/etc</filename> und denen im Quellbaum unter
|
|
<filename>/usr/src/etc</filename> zu finden.
|
|
<command>mergemaster</command> ist der empfohlene Weg, Ihre
|
|
Systemkonfiguration mit dem Quellbaum abzugleichen.</para>
|
|
|
|
<para>Zwischen 3.3-RELEASE und 3.4-RELEASE wurde
|
|
<command>mergemaster</command> in das Basissystem integriert, so
|
|
dass es in allen -STABLE und -CURRENT Systemen seit der
|
|
Version 3.3 vorhanden ist.</para>
|
|
|
|
<para>Rufen Sie <command>mergemaster</command> einfach auf und
|
|
schauen Sie zu. Ausgehend von <filename>/</filename> wird
|
|
<command>mergemaster</command> einen virtuellen Root-Baum
|
|
aufbauen und darin die neuen Konfigurationsdateien ablegen.
|
|
Diese Dateien werden dann mit den auf Ihrem System installierten
|
|
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 einem
|
|
<option>-</option> gekennzeichnet. Das Anzeigeformat wird in
|
|
&man.diff.1; genauer erklärt.</para>
|
|
|
|
<para>&man.mergemaster.8; zeigt Ihnen jede geänderte Datei an
|
|
und Sie haben die Wahl, die neue Datei (in
|
|
<command>mergemaster</command> wird sie 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 &man.diff.1; Ausgabe noch einmal zu
|
|
sehen. Sie können die aktuelle Datei auch
|
|
überspringen, sie wird dann noch einmal angezeigt, nachdem
|
|
alle anderen Dateien abgearbeitet wurden. Sie erhalten Hilfe,
|
|
wenn Sie bei der Eingabeaufforderung von
|
|
<command>mergemaster</command> ein <keycap>?</keycap>
|
|
eingeben.</para>
|
|
|
|
<para>Wenn Sie die temporäre Datei löschen, geht
|
|
<command>mergemaster</command> davon aus, dass Sie Ihre
|
|
aktuelle Datei behalten möchten. Wählen Sie die Option
|
|
bitte nur dann, wenn Sie keinen Grund sehen, die aktuelle Datei
|
|
zu ändern.</para>
|
|
|
|
<para>Wenn Sie die temporäre Datei installieren, wird Ihre
|
|
aktuelle Datei mit der neuen Datei überschrieben. Sie
|
|
sollten alle unveränderten Konfigurationsdateien auf diese
|
|
Weise aktualisieren.</para>
|
|
|
|
<para>Wenn Sie sich entschließen den Inhalt beider Dateien
|
|
abzugleichen, wird ein Texteditor aufgerufen, indem 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>
|
|
|
|
<para>Haben Sie sich entschieden die Differenzen noch einmal
|
|
anzuzeigen, zeigt Ihnen &man.mergemaster.8; dieselbe Ausgabe, die
|
|
Sie gesehen haben, bevor die Eingabeaufforderung ausgegeben
|
|
wurde.</para>
|
|
|
|
<para>Wenn &man.mergemaster.8; alle Systemdateien abgearbeitet hat,
|
|
werden weitere Optionen abgefragt. Sie werden unter
|
|
Umständen gefragt, ob Sie die Passwort-Datei neu bauen
|
|
oder &man.MAKEDEV.8; laufen lassen wollen. Am Ende
|
|
haben Sie die Möglichkeit, den Rest der temporären Dateien
|
|
zu löschen.</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Manueller Abgleich der Konfigurationsdateien</title>
|
|
|
|
<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>. Wenn Sie, wie empfohlen,
|
|
<command>mergemaster</command> benutzen, lesen Sie bitte im
|
|
<link linkend="update-dev"> nächsten Abschnitt</link>
|
|
weiter.</para>
|
|
|
|
<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>
|
|
|
|
<warning>
|
|
<title>Sichern Sie die Inhalte von <filename>/etc</filename></title>
|
|
|
|
<para>Obwohl bei dieser Prozedur keine Dateien in
|
|
<filename>/etc</filename> automatisch verändert werden,
|
|
sollten Sie dessen Inhalt an einen sicheren Ort
|
|
kopieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp -Rp /etc /etc.old</userinput></screen>
|
|
|
|
<para>Mit <option>-R</option> wird rekursiv kopiert und
|
|
<option>-p</option> erhält die Attribute der kopierten
|
|
Dateien, wie Zugriffszeiten und Eigentümer.</para>
|
|
</warning>
|
|
|
|
<para>Sie müssen die neuen Dateien in einem temporären
|
|
Verzeichnis installieren. <filename>/var/tmp/root</filename> ist
|
|
eine gute Wahl für das temporäre Verzeichnis, in dem
|
|
auch noch einige Unterverzeichnisse angelegt werden
|
|
müssen.</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkdir /var/tmp/root</userinput>
|
|
&prompt.root; <userinput>cd /usr/src/etc</userinput>
|
|
&prompt.root; <userinput>make DESTDIR=/var/tmp/root distrib-dirs distribution</userinput></screen>
|
|
|
|
<para>Die obigen Kommandos bauen die nötige
|
|
Verzeichnisstruktur auf und installieren die neuen Dateien in
|
|
diese Struktur. Unterhalb von <filename>/var/tmp/root</filename>
|
|
wurden einige leere Verzeichnisse angelegt, die Sie am besten wie
|
|
folgt entfernen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /var/tmp/root</userinput>
|
|
&prompt.root; <userinput>find -d . -type d | xargs rmdir 2>/dev/null</userinput></screen>
|
|
|
|
<para>Im obigen Beispiel wurde die Fehlerausgabe nach
|
|
<filename>/dev/null</filename> umgeleitet, um die Warnungen
|
|
über nicht leere Verzeichnisse zu unterdrücken.</para>
|
|
|
|
<para><filename>/var/tmp/root</filename> enthält nun alle
|
|
Dateien, die unterhalb von <filename>/</filename> installiert
|
|
werden müssen. Sie müssen nun jede dieser Dateien mit
|
|
den schon existierenden Dateien vergleichen.</para>
|
|
|
|
<para>Einige der installierten Dateien unter
|
|
<filename>/var/tmp/root</filename> beginnen mit einem <quote/./.
|
|
Als dieses Kapitel verfasst wurde, waren das nur die
|
|
Startdateien für die Shells in
|
|
<filename>/var/tmp/root/</filename> und
|
|
<filename>/var/tmp/root/root/</filename>. Abhängig davon,
|
|
wann Sie dieses Handbuch lesen, können mehr Dateien dieser
|
|
Art existieren. Verwenden Sie <command>ls -a</command> um
|
|
sicherzustellen, dass Sie alle derartigen Dateien
|
|
finden.</para>
|
|
|
|
<para>Benutzen Sie &man.diff.1; um Unterschiede zwischen zwei
|
|
Dateien festzustellen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>diff /etc/shells /var/tmp/root/etc/shells</userinput></screen>
|
|
|
|
<para>Das obige Kommando zeigt Ihnen die Unterschiede zwischen der
|
|
installierten Version von <filename>/etc/shells</filename> und
|
|
der neuen Version in <filename>/var/tmp/root/etc/shells</filename>.
|
|
Entscheiden Sie anhand der Unterschiede, ob
|
|
Sie beide Dateien abgleichen oder die neue Version über die
|
|
alte kopieren wollen.</para>
|
|
|
|
<tip>
|
|
<title>Versehen Sie das temporäre Verzeichnis mit einem
|
|
Zeitstempel</title>
|
|
|
|
<para>Wenn Sie das System oft neu bauen, müssen Sie
|
|
<filename>/etc</filename> genauso oft aktualisieren. Dies kann
|
|
mit der Zeit sehr lästig werden.</para>
|
|
|
|
<para>Sie können das Verfahren beschleunigen, wenn Sie sich
|
|
eine Kopie der Dateien behalten, die Sie zuletzt nach
|
|
<filename>/etc</filename> installiert haben. Das folgende
|
|
Verfahren zeigt Ihnen, wie das geht.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Folgen Sie der normalen Prozedur um das System zu
|
|
bauen. Wenn Sie <filename>/etc</filename> und die anderen
|
|
Verzeichnisse aktualisieren wollen, geben Sie dem
|
|
temporären Verzeichnis einen Namen, der das aktuelle
|
|
Datum enthält. Wenn Sie dies zum Beispiel am
|
|
14. Februar 1998 durchführten, hätten Sie die
|
|
folgenden Kommandos abgesetzt:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkdir /var/tmp/root-19980214</userinput>
|
|
&prompt.root; <userinput>cd /usr/src/etc</userinput>
|
|
&prompt.root; <userinput>make DESTDIR=/var/tmp/root-19980214 \
|
|
distrib-dirs distribution</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Gleichen Sie die Änderungen entsprechend der
|
|
Anleitung von oben ab.</para>
|
|
|
|
<para>Wenn Sie fertig sind, entfernen Sie das Verzeichnis
|
|
<filename>/var/tmp/root-19980214</filename>
|
|
<emphasis>nicht</emphasis>.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Wenn Sie nun neue Quellen heruntergeladen und gebaut
|
|
haben, folgen Sie bitte Schritt 1. Wenn Sie zwischen den
|
|
Updates eine Woche gewartet haben, haben Sie nun ein
|
|
Verzeichnis mit dem Namen
|
|
<filename>/var/tmp/root-19980221</filename>.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Sie können nun die Unterschiede, die sich in einer
|
|
Woche ergeben haben, sehen, indem Sie &man.diff.1; rekursiv
|
|
anwenden:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /var/tmp</userinput>
|
|
&prompt.root; <userinput>diff -r root-19980214 root-19980221</userinput></screen>
|
|
|
|
<para>Üblicherweise sind die Differenzen, die Sie jetzt
|
|
sehen, kleiner als die Differenzen zwischen
|
|
<filename>/var/tmp/root-19980221/etc</filename> und
|
|
<filename>/etc</filename>. Da die angezeigten Differenzen
|
|
kleiner sind, ist es jetzt einfacher den Abgleich der
|
|
Dateien durchzuführen.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Sie können nun das älteste der beiden
|
|
<filename>/var/tmp/root-*</filename> Verzeichnisse
|
|
entfernen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>rm -rf /var/tmp/root-19980214</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Wiederholen Sie diesen Prozess jedes Mal wenn Sie
|
|
Dateien in <filename>/etc</filename> abgleichen
|
|
müssen.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Mit &man.date.1; können Sie den Verzeichnisnamen
|
|
automatisch erzeugen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkdir /var/tmp/root-`date "+%Y%m%d"`</userinput></screen>
|
|
</tip>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 id="update-dev">
|
|
<title>Aktualisieren Sie <filename>/dev</filename></title>
|
|
|
|
<note>
|
|
<indexterm><primary>DEVFS</primary></indexterm>
|
|
<para>Überspringen Sie diesen Abschnitt, wenn Sie
|
|
FreeBSD 5.0 oder eine neuere Version benutzen. In diesen
|
|
Versionen werden die Gerätedateien automatisch von
|
|
&man.devfs.5; angelegt.</para>
|
|
</note>
|
|
|
|
<para>In den meisten Fällen bemerkt &man.mergemaster.8; wann es
|
|
notwendig ist, Gerätedateien in <filename>/dev</filename>
|
|
zu erstellen. Die folgenden Anweisungen zeigen Ihnen, wie Sie dies
|
|
manuell durchführen.</para>
|
|
|
|
<para>Um sicher zu gehen, besteht dieser Prozess aus mehreren
|
|
Schritten.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Kopieren Sie <filename>/var/tmp/root/dev/MAKEDEV</filename>
|
|
nach <filename>/dev</filename>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp /var/tmp/root/dev/MAKEDEV /dev</userinput></screen>
|
|
<indexterm>
|
|
<primary><filename>MAKEDEV</filename></primary>
|
|
</indexterm>
|
|
|
|
<para>Wenn Sie &man.mergemaster.8; benutzt haben, sollte
|
|
<filename>MAKEDEV</filename> schon aktualisiert sein, obwohl es
|
|
nicht schadet, das mit <command>diff</command> zu
|
|
überprüfen und die Datei, wenn nötig, manuell zu
|
|
kopieren.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Sichern Sie jetzt die Dateiinformationen aus
|
|
<filename>/dev</filename>. Sie brauchen die Rechte,
|
|
Eigentümer, sowie die Major und Minor Nummern der
|
|
Gerätedateien (die Zeitstempel sind nicht wichtig). Am
|
|
besten erledigen Sie das mit &man.awk.1;:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Erstellen Sie alle Gerätedateien neu:</para>
|
|
|
|
<screen>&prompt.root; <userinput/sh MAKEDEV all/</screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Sammeln Sie erneut die Dateiinformationen aus
|
|
<filename>/dev</filename>, diesmal in der Datei
|
|
<filename>/var/tmp/dev2.out</filename> ein. Vergleichen Sie
|
|
beide Dateien und suchen Sie nach Gerätedateien, die nicht
|
|
erstellt wurden. Sie sollten keine finden, aber es ist besser
|
|
das jetzt wirklich zu kontrollieren:</para>
|
|
|
|
<screen>&prompt.root; <userinput>diff /var/tmp/dev.out /var/tmp/dev2.out</userinput></screen>
|
|
|
|
<para>Wenn es doch fehlende Einträge gibt, sind dies
|
|
wahrscheinlich fehlende Geräte für Slices. Diese
|
|
können Sie mit einem Befehl wie dem folgenden
|
|
wiederherstellen:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sh MAKEDEV sd0s1</userinput></screen>
|
|
|
|
<para>Die genauen Geräte können bei Ihnen
|
|
natürlich andere sein.</para>
|
|
</step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Aktualisieren Sie <filename>/stand</filename></title>
|
|
|
|
<note>
|
|
<para>Dieser Schritt wurde nur der Vollständigkeit wegen
|
|
aufgenommen. Sie können ihn komplett auslassen.
|
|
Ab &os; 5.2 werden beim Lauf von
|
|
<command>make installworld</command> automatisch
|
|
aktuelle statisch übersetzte Programme im Verzeichnis
|
|
<filename>/rescue</filename> installiert. Daher ist
|
|
es überflüssig, <filename>/stand</filename>
|
|
zu aktualisieren.</para>
|
|
</note>
|
|
|
|
<para>Der Vollständigkeit halber wollen Sie vielleicht auch die
|
|
Dateien in <filename>/stand</filename> aktualisieren. Alle Dateien
|
|
in diesem Verzeichnis sind Hardlinks zu
|
|
<filename>/stand/sysinstall</filename>. Dieses Programm ist
|
|
statisch gelinkt, so dass es unabhängig von den Dateien
|
|
in anderen Dateisystemen, insbesondere <filename>/usr</filename>,
|
|
ist.</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/release/sysinstall</userinput>
|
|
&prompt.root; <userinput>make all install</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Booten</title>
|
|
|
|
<para>Sie sind nun am Ende der Prozedur angelangt. Nachdem Sie sich
|
|
davon überzeugt haben, dass Ihr System funktioniert,
|
|
booten Sie das System mit &man.shutdown.8;:</para>
|
|
|
|
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Ende</title>
|
|
|
|
<para>Herzlichen Glückwunsch! Sie haben gerade erfolgreich Ihr
|
|
&os; System aktualisiert.</para>
|
|
|
|
<para>Es ist übrigens leicht einen Teil des Systems
|
|
wiederherzustellen, für den Fall, dass Ihnen ein kleiner
|
|
Fehler unterlaufen ist. Wenn Sie beispielsweise während des
|
|
Updates oder Abgleichs <filename>/etc/magic</filename> aus Versehen
|
|
gelöscht haben, wird &man.file.1; nicht mehr funktionieren.
|
|
In diesem Fall können Sie das Problem mit dem folgenden
|
|
Kommando beheben:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput>
|
|
&prompt.root; <userinput/make all install/</screen>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Fragen</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question>
|
|
<para>Muss ich wirklich immer alles neu bauen, wenn sich
|
|
etwas geändert hat?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Darauf gibt es keine einfache Antwort. Was zu tun ist,
|
|
hängt von den Änderungen ab. Es lohnt
|
|
wahrscheinlich nicht, alles neu zu bauen, wenn sich bei einem
|
|
<application>CVSup</application>-Lauf nur die folgenden
|
|
Dateien geändert haben:</para>
|
|
|
|
<screen><filename>src/games/cribbage/instr.c</filename>
|
|
<filename>src/games/sail/pl_main.c</filename>
|
|
<filename>src/release/sysinstall/config.c</filename>
|
|
<filename>src/release/sysinstall/media.c</filename>
|
|
<filename>src/share/mk/bsd.port.mk</filename></screen>
|
|
|
|
<para>In diesem Fall können Sie in die entsprechenden
|
|
Unterverzeichnisse wechseln und dort <command>make all
|
|
install</command> ausführen. Wenn sich allerdings etwas
|
|
Wichtiges, wie <filename>src/lib/libc/stdlib</filename>,
|
|
geändert hat, sollten Sie die Welt oder
|
|
mindestens die statisch gelinkten Teile des Systems (sowie
|
|
Ihre statisch gelinkten Ergänzungen) neu bauen.</para>
|
|
|
|
<para>Letztendlich ist das Ihre Entscheidung. Sie sind
|
|
vielleicht damit zufrieden, das System alle zwei Wochen neu
|
|
zu bauen und in der Zwischenzeit die anfallenden
|
|
Änderungen zu sammeln. Wenn Sie sich zutrauen, alle
|
|
Abhängigkeiten zu erkennen, bauen Sie vielleicht auch
|
|
nur die geänderten Sachen neu.</para>
|
|
|
|
<para>Das hängt natürlich auch noch davon ab, wie oft
|
|
Sie ein Update durchführen wollen und ob Sie &os.stable;
|
|
oder &os.current; benutzen.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>Der Bau bricht mit vielen
|
|
<errorname>Signal 11</errorname>-Fehlern (oder anderen
|
|
Signalnummern) ab. Was ist da passiert?</para>
|
|
</question>
|
|
<indexterm><primary>Signal 11</primary></indexterm>
|
|
|
|
<answer>
|
|
<para>Normalerweise zeigen diese Meldungen Hardwarefehler an.
|
|
Ein Neubau der Welt ist ein guter Belastungstest für
|
|
Ihre Hardware und zeigt oft Probleme mit dem Speicher auf.
|
|
Dies äußert sich darin, dass der Kompiler
|
|
mit dem Erhalt von seltsamen Signalen abbricht.</para>
|
|
|
|
<para>Es liegt garantiert ein Hardwarefehler vor, wenn ein
|
|
neuer Übersetzungslauf an einer anderen Stelle
|
|
abbricht.</para>
|
|
|
|
<para>In diesem Fall können Sie nur einzelne Komponenten
|
|
Ihres Systems tauschen, um zu bestimmen, welche Komponente den
|
|
Fehler verursacht.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>Kann ich <filename>/usr/obj</filename> löschen, wenn
|
|
ich fertig bin?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Kurze Antwort: Ja.</para>
|
|
|
|
<para>In <filename>/usr/obj</filename> werden alle Dateien
|
|
abgelegt, die während der Übersetzungsphase erstellt
|
|
wurden. Dieses Verzeichnis wird in einem der ersten Schritte
|
|
der Bauprozedur entfernt. Es macht daher
|
|
wenig Sinn, dieses Verzeichnis zu behalten und Sie setzen
|
|
eine Menge Plattenplatz, momentan ungefähr 340 MB,
|
|
frei, wenn Sie es löschen.</para>
|
|
|
|
<para>Wenn Sie allerdings genau wissen, was Sie tun, können
|
|
Sie diesen Schritt bei <command>make world</command>
|
|
auslassen. Nachfolgende Bauprozeduren werden dadurch erheblich
|
|
schneller, da die meisten Quelldateien nicht mehr neu
|
|
übersetzt werden. Dafür können aber subtile
|
|
Abhängigkeitsprobleme entstehen, die dazu führen,
|
|
dass der Bau auf merkwürdige Weise abbrechen kann.
|
|
Dies führt häufig zu unnötigen Diskussionen auf
|
|
den &os; Mailinglisten, wenn sich jemand über einen
|
|
kaputten Bau beschwert, aber nicht sieht, dass er
|
|
Probleme hat, weil er eine Abkürzung genommen hat.<para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>Kann ein abgebrochener Bau weitergeführt
|
|
werden?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Das hängt davon ab, wieweit der Bauprozess
|
|
fortgeschritten ist.</para>
|
|
|
|
<para><emphasis>Üblicherweise</emphasis> werden
|
|
essentielle Werkzeuge, wie &man.gcc.1; und &man.make.1;,
|
|
und die Systembibliotheken während des Bauprozesses
|
|
neu erstellt (dies ist aber keine allgemein gültige
|
|
Regel). Die neu erstellen Werkzeuge und Bibliotheken werden
|
|
dann benutzt, um sich selbst noch einmal zu bauen, und wieder
|
|
installiert. Anschließend wird das Gesamtsystem mit
|
|
den neu erstellten Systemdateien gebaut.</para>
|
|
|
|
<para>Wenn Sie sich im letzten Schritt befinden und Sie wissen,
|
|
dass Sie dort sind, weil Sie durch die Ausgaben, die Sie
|
|
ja sichern, der Bauprozedur gesehen haben, können Sie
|
|
mit ziemlicher Sicherheit den Bau weiterführen:</para>
|
|
|
|
<screen><emphasis>… Fehler beheben …</emphasis>
|
|
&prompt.root; <userinput>cd /usr/src</userinput>
|
|
&prompt.root; <userinput>make -DNOCLEAN all</userinput></screen>
|
|
|
|
<para>Die Variable <makevar>NOCLEAN</makevar> verhindert,
|
|
dass <command>make world</command> die vorher erstellten
|
|
Dateien löscht.</para>
|
|
|
|
<para>Das Sie sich im letzten Schritt der Bauprozedur
|
|
befinden, erkennen Sie daran, dass Sie in der Ausgabe die
|
|
folgenden Zeilen finden:</para>
|
|
|
|
<screen>--------------------------------------------------------------
|
|
Building everything..
|
|
--------------------------------------------------------------</screen>
|
|
|
|
<para>Wenn Sie diese Meldung nicht finden, oder sich nicht sicher
|
|
sind, dann ist es besser, noch einmal ganz von Vorne
|
|
anzufangen.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>Wie kann ich den Bauprozesss beschleunigen?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Bauen Sie im Single-User Modus.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Legen Sie <filename>/usr/src</filename> und
|
|
<filename>/usr/obj</filename> in getrennte Dateisysteme auf
|
|
unterschiedliche Festplatten. Benutzen Sie nach
|
|
Möglichkeit auch getrennte Platten-Controller.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Noch besser ist es, diese Dateisysteme auf mehrere
|
|
Festplatten mit &man.ccd.4; zu verteilen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Bauen Sie die <quote>profiled</quote>-Bibliotheken,
|
|
die Sie wahrscheinlich sowieso nicht brauchen, nicht.
|
|
<filename>/etc/make.conf</filename> sollte dazu
|
|
<literal>NOPROFILE=true</literal> enthalten.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Setzen Sie die <makevar>CFLAGS</makevar> in
|
|
<filename>/etc/make.conf</filename> auf <option>-O
|
|
-pipe</option>. Die Optimierungsstufe
|
|
<option>-O2</option> ist deutlich langsamer und die
|
|
Performance-Unterschiede zwischen <option>-O</option> und
|
|
<option>-O2</option> sind vernachlässigbar klein.
|
|
<option>-pipe</option> veranlasst den Kompiler Pipes
|
|
anstelle von Dateien für die Kommunikation zu
|
|
benutzen. Dies spart einige Plattenzugriffe, geht aber
|
|
auf Kosten des Speichers.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Benutzen Sie
|
|
<option>-j<replaceable>n</replaceable></option>, um
|
|
mehrere Prozesse parallel laufen zu lassen.
|
|
Normalerweise beschleunigt dies den Bauprozess
|
|
unabhängig davon, ob Sie ein Einprozessor oder
|
|
Mehrprozessor System einsetzen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sie können das Dateisystem
|
|
<filename>/usr/src</filename> mit der Option
|
|
<option>noatime</option> einhängen. Dies
|
|
verhindert, dass die Zugriffszeiten der Dateien
|
|
aktualisiert werden (eine Information, die Sie vielleicht
|
|
gar nicht brauchen).</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -u -o noatime /usr/src</userinput></screen>
|
|
|
|
<warning>
|
|
<para>Das Beispiel geht davon aus, dass sich
|
|
<filename>/usr/src</filename> auf einem separaten
|
|
Dateisystem befindet. Wenn das nicht der Fall ist,
|
|
weil das Verzeichnis beispielsweise Teil des
|
|
<filename>/usr</filename> Dateisystems ist,
|
|
müssen Sie anstelle von
|
|
<filename>/usr/src</filename> den Mountpoint des
|
|
Dateisystems angeben.</para>
|
|
</warning>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Das Dateisystem, in dem sich
|
|
<filename>/usr/obj</filename> befindet, kann mit der
|
|
Option <option>async</option> eingehangen werden. Dies
|
|
bewirkt, dass Schreibzugriffe auf die Platte
|
|
asynchron stattfinden, das heißt ein Schreibzugriff
|
|
ist sofort beendet, die Daten werden allerdings erst einige
|
|
Sekunden später geschrieben. Dadurch können
|
|
Schreibzugriffe zusammengefasst werden, was einen
|
|
erheblichen Geschwindigkeitszuwachs mit sich bringen
|
|
kann.</para>
|
|
|
|
<warning>
|
|
<para>Beachten Sie, dass dies Ihr Dateisystem
|
|
anfälliger für Fehler macht. Im Fall eines
|
|
Stromausfalls besteht eine erhöhte
|
|
Wahrscheinlichkeit, dass das Dateisystem beim
|
|
Start der Maschine zerstört ist.</para>
|
|
|
|
<para>Wenn sich <filename>/usr/obj</filename> auf einem
|
|
extra Dateisystem befindet, ist das kein Problem. Wenn
|
|
sich allerdings auf diesem Dateisystem noch andere
|
|
wertvolle Daten befinden, stellen Sie sicher, dass
|
|
Sie aktuelle Sicherungen besitzen.</para>
|
|
</warning>
|
|
|
|
<screen>&prompt.root; <userinput>mount -u -o async /usr/obj</userinput></screen>
|
|
|
|
<warning>
|
|
<para>Ersetzen Sie <filename>/usr/obj</filename> durch
|
|
den Mountpoint des entsprechenden Dateisystems, wenn es
|
|
sich nicht auf einem eigenen Dateisystem
|
|
befindet.</para>
|
|
</warning>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>Was mache ich, wenn etwas nicht funktioniert?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Stellen Sie sicher, dass sich in Ihrer Umgebung
|
|
keine Reste eines vorherigen Baus befinden. Das geht ganz
|
|
einfach:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/usr</userinput>
|
|
&prompt.root; <userinput>rm -rf /usr/obj/usr</userinput>
|
|
&prompt.root; <userinput>cd /usr/src</userinput>
|
|
&prompt.root; <userinput>make cleandir</userinput>
|
|
&prompt.root; <userinput>make cleandir</userinput></screen>
|
|
|
|
<para>Ja, <command>make cleandir</command> muss wirklich
|
|
zweimal aufgerufen werden.</para>
|
|
|
|
<para>Nachdem Sie aufgeräumt haben, starten Sie den
|
|
Bauprozess wieder mit <command>make
|
|
buildworld</command>.</para>
|
|
|
|
<para>Wenn Sie immer noch Probleme haben, schicken Sie die
|
|
Fehlermeldungen und die Ausgabe von <command>uname
|
|
-a</command> an die Mailingliste &a.de.questions;. Bereiten
|
|
Sie sich darauf vor, weitere Fragen zu Ihrer Umgebung zu
|
|
beantworten.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 id="small-lan">
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Mike</firstname>
|
|
<surname>Meyer</surname>
|
|
<contrib>Beigetragen von </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
<title>Installation mehrerer Maschinen</title>
|
|
|
|
<para>Wenn Sie mehrere Maschinen besitzen, die Sie alle auf dem
|
|
gleichen Stand halten wollen, ist es eine Verschwendung von
|
|
Ressourcen, die Quellen auf jeder Maschine vorzuhalten und zu
|
|
übersetzen. Die Lösung dazu ist, eine Maschine den
|
|
Großteil der Arbeit durchführen zu lassen und den anderen
|
|
Maschinen das Ergebnis mit NFS zur Verfügung zu stellen. Dieser
|
|
Abschnitt zeigt Ihnen wie das geht.</para>
|
|
|
|
<sect2 id="small-lan-preliminaries">
|
|
<title>Voraussetzungen</title>
|
|
|
|
<para>Stellen Sie zuerst eine Liste der Maschinen zusammen, die auf
|
|
demselben Stand sein sollen. Wir nennen diese Maschinen die
|
|
<emphasis>Baugruppe</emphasis>. Jede dieser Maschinen kann mit
|
|
einem eigenen Kernel laufen, doch sind die Programme des Userlands
|
|
auf allen Maschinen gleich. Wählen Sie aus der Baugruppe eine
|
|
Maschine aus, auf der der Bau durchgeführt wird, den
|
|
<emphasis>Bau-Master</emphasis>. Dies sollte eine Maschine sein,
|
|
die über die nötigen Ressourcen für <command>make
|
|
world</command> verfügt. Sie brauchen auch eine
|
|
<emphasis>Testmaschine</emphasis>, auf der Sie die Updates testen,
|
|
bevor Sie sie in Produktion installieren. Dies sollte eine
|
|
Maschine, eventuell der Bau-Master, sein, die über einen
|
|
längeren Zeitraum nicht zur Verfügung stehen kann.
|
|
|
|
<para>Alle Maschinen der Baugruppe müssen
|
|
<filename>/usr/obj</filename> und <filename>/usr/src</filename> von
|
|
derselben Maschine an gleichem Ort einhängen. Idealerweise
|
|
befinden sich die beiden Verzeichnisse auf dem Bau-Master auf
|
|
verschiedenen Festplatten, sie können allerdings auch auf dem
|
|
Bau-Master über NFS zur Verfügung gestellt werden. Wenn
|
|
Sie mehrere Baugruppen haben, sollte sich
|
|
<filename>/usr/src</filename> auf einem Bau-Master befinden und
|
|
über NFS für den Rest der Maschinen zur Verfügung
|
|
gestellt werden.</para>
|
|
|
|
<para>Stellen Sie sicher, dass
|
|
<filename>/etc/make.conf</filename> auf allen Maschinen einer
|
|
Baugruppe mit der Datei des Bau-Masters übereinstimmt. Der
|
|
Bau-Master muss jeden Teil des Systems bauen, den irgendeine
|
|
Maschine der Baugruppe benötigt. Auf dem Bau-Master
|
|
müssen in <filename>/etc/make.conf</filename> alle zu bauenden
|
|
Kernel mit der Variablen <makevar>KERNCONF</makevar> bekannt gegeben
|
|
werden. Geben Sie dabei den Kernel des Bau-Masters zuerst an.
|
|
Für jeden zu bauenden Kernel muss auf dem Bau-Master die
|
|
entsprechende Konfigurationsdatei unter
|
|
<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>
|
|
abgelegt werden.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Installation des Basissystems</title>
|
|
|
|
<para>Nach diesen Vorbereitungen können Sie mit dem Bau
|
|
beginnen. Bauen Sie auf dem Bau-Master, wie in <xref
|
|
linkend="make-buildworld"> beschrieben, den Kernel und die Welt,
|
|
installieren Sie aber nichts. Wechseln Sie auf die Testmaschine
|
|
und installieren Sie den gerade gebauten Kernel. Wenn diese
|
|
Maschine <filename>/usr/src</filename> und
|
|
<filename>/usr/obj</filename> über NFS bekommt, müssen
|
|
Sie das Netzwerk im Single-User Modus aktivieren und die beiden
|
|
Dateisysteme einhängen. Am einfachsten ist dies, wenn Sie
|
|
auf der Testmaschine ausgehend vom Mehrbenutzermodus mit
|
|
<command>shutdown now</command> in den Single-User Modus wechseln.
|
|
Sie können dann mit der normalen Prozedur den neuen Kernel
|
|
und das System installieren und anschließend
|
|
<command>mergemaster</command> laufen lassen. Wenn Sie damit
|
|
fertig sind, können Sie die Maschine wieder in den
|
|
Mehrbenutzermodus booten.</para>
|
|
|
|
<para>Nachdem Sie sichergestellt haben, dass die Testmaschine
|
|
einwandfrei funktioniert, wiederholen Sie diese Prozedur für
|
|
jede Maschine in der Baugruppe.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Die Ports-Sammlung</title>
|
|
|
|
<para>Dasselbe Verfahren können Sie auch für die
|
|
Ports-Sammlung anwenden. Zuerst müssen alle Maschinen einer
|
|
Baugruppe <filename>/usr/ports</filename> von derselben Maschine
|
|
über NFS zur Verfügung gestellt bekommen. Setzen Sie
|
|
dann ein Verzeichnis für die Quellen auf, das sich alle
|
|
Maschinen teilen. Dieses Verzeichnis können Sie in
|
|
<filename>/etc/make.conf</filename> mit der Variablen
|
|
<makevar>DISTDIR</makevar> angeben. Das Verzeichnis sollte
|
|
für den Benutzer beschreibbar sein, auf den der Benutzer
|
|
<username>root</username> vom NFS Subsystem abgebildet wird. Jede
|
|
Maschine sollte noch <makevar>WRKDIRPREFIX</makevar> auf ein
|
|
lokales Bauverzeichnis setzen. Wenn Sie vorhaben, Pakete zu bauen
|
|
und zu verteilen, sollten Sie <makevar>PACKAGES</makevar> auf ein
|
|
Verzeichnis mit den gleichen Eigenschaften wie
|
|
<makevar>DISTDIR</makevar> setzen.</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|
|
<!--
|
|
Local Variables:
|
|
mode: sgml
|
|
sgml-declaration: "../chapter.decl"
|
|
sgml-indent-data: t
|
|
sgml-omittag: nil
|
|
sgml-always-quote-attributes: t
|
|
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
|
End:
|
|
-->
|
|
|