Index: head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml +++ head/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.xml @@ -5,7 +5,7 @@ $FreeBSD$ $FreeBSDde$ - basiert auf: r50201 + basiert auf: r50251 --> freebsd-update bricht ab. Im Zweifelsfall sichern Sie /etc und - akzeptieren einfach die Änderungen. Lesen Sie , um Informationen über + akzeptieren einfach die Änderungen. Lesen Sie + &man.mergemaster.8;, um Informationen über mergemaster zu erhalten. # Directory in which to store downloaded updates and temporary @@ -1186,1183 +1186,471 @@ - - - &os.stable; - - &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 - immer noch 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. - Benutzer, die nicht über die notwendigen Ressourcen zum - Testen verfügen, sollten stattdessen eine aktuelle Version - von &os; benutzen. - - Wer daran interessiert ist den &os;-Entwicklungsprozess - zu verfolgen oder dazu beizutragen, insbesondere im Hinblick - auf das nächste Hauptversion, der sollte es in Erwägung - ziehen, &os.stable; zu benutzen. - - Obwohl wir versuchen sicherzustellen, dass der - &os.stable; Zweig sich jederzeit übersetzen lässt und - lauffähig ist, können wir dafür keine Garantie übernehmen. - Auch wenn Neuentwicklungen in &os.current; stattfinden, ist - es jedoch so, dass mehr Leute &os.stable; anstelle von - &os.current; benutzen und es daher unvermeidlich ist, dass - Fehler und Grenzfälle erst in &os.stable; auffallen. Aus - diesen Gründen empfehlen wir Ihnen - nicht blindlings &os.stable; zu - benutzen. Es ist besonders wichtig, dass &os.stable; zuerst - sorgfältig in einer Testumgebung getestet wird, bevor die - Produktion auf &os.stable; migriert. - - Um &os.stable; zu folgen: - - - -STABLE - benutzen - - - - - 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. - - Abonnieren Sie die passende - svn-Liste für den jeweiligen - Branch, den Sie verfolgen. Wenn Sie beispielsweise den - Zweig 9-STABLE verfolgen, lesen Sie die - &a.svn-src-stable-9.name;. Diese Liste enthält zu jeder - Änderung das Commit-Log, das Informationen zu möglichen - Seiteneffekten enthält. - - Um diese Listen zu abonnieren, besuchen Sie die - Seite &a.mailman.lists.link;. Klicken Sie auf die - gewünschte Liste und folgenden Sie den Anweisungen. - Wenn Sie daran interessiert sind, Änderungen am gesamten - Quellbaum zu verfolgen, abonnieren Sie - &a.svn-src-all.name;. - - - - Wenn Sie ein neues System installieren und dazu - einen der monatlich aus &os.stable; erzeugten Snapshots - verwenden wollen, sollten Sie zuerst - www.freebsd.org/snapshots auf aktuelle - Informationen überprüfen. Alternativ können Sie auch - das neueste &os.stable;-Release von den &os; Spiegeln beziehen. - - Um ein bestehendes &os;-System auf &os.stable; zu - aktualisieren, benutzen Sie svn, um den gewünschten - Entwicklungs- oder Release-Zweig auszuchecken. Die - Zweige, wie beispielsweise stable/9, - sind unter - www.freebsd.org/releng aufgeführt. - - - - Lesen Sie /usr/src/Makefile - sehr aufmerksam bevor Sie &os.stable; aktualisieren und - folgen Sie den Anweisungen in . Lesen Sie die - Mailingliste &a.stable; und - /usr/src/UPDATING, um über - Änderungen im Installationsverfahren, die manchmal vor - der Einführung eines neuen Releases notwendig sind, - informiert zu sein. - - - - - Synchronisation der Quellen + + &os; aus den Quellen aktualisieren - Es gibt verschiedene Methoden um die Quellen von &os; - aktuell zu halten. Dieser Abschnitt beschreibt - Subversion, den primären Dienst für - diese Aufgabe. + Das Aktualisieren von &os; aus den Quellen bietet im + Vergleich zu binären Updates mehrere Vorteile. Der Quellcode + kann mit Optionen gebaut werden, um die Vorteile von + spezifischer Hardware zu nutzen. Teile des Basissystems können + mit veränderten Einstellungen gebaut, oder falls nicht + gewünscht, auch ganz ausgelassen werden. + Dieser Prozess dauert zwar länger als die Aktualisierung mit + binären Updates, ermöglicht aber eine vollständige Anpassung, um + eine individuelle Version von &os; zu erstellen. - - Obwohl es möglich ist, nur Teile des Quellbaums zu - aktualisieren, ist die einzige unterstütze Prozedur, - den kompletten Quellbaum zu aktualisieren und alles neu zu - übersetzen. Dazu zählen alle Userland-Programme in - /bin und /sbin, - sowie die Kernelquellen. Wird hingegen nur ein Teil der - Quellen, zum Beispiel nur der Kernel oder nur die Programme - aus dem Userland aktualisiert, treten Probleme auf, die von - Übersetzungsfehlern über Kernel-Panics bis hin zu - Beschädigung von Daten reichen können. - + + Schnellstartanleitung - - Subversion - + Diese kurze Referenz zeigt die typischen Schritte um &os; + aus den Quellen zu aktualisieren. Spätere Abschnitte + beschreiben die Prozedur im Detail. - Subversion benutzt die - Pull-Methode, um die Quellen zu - aktualisieren. Der Benutzer, oder ein - cron-Skript, ruft das Programm - svn auf, das die Quellen aktualisiert. - Subversion ist die empfohlene - Methode, um die lokalen Quellen zu aktualisieren, da - aktuelle Updates zu einem vom Benutzer bestimmten Zeitpunkt - herunterlädt. Zudem ist es einfach, die Prozedur auf bestimmte - Dateien oder Verzeichnisse zu beschränken. Die angeforderten - Updates werden zur Laufzeit auf dem Server generiert. Die - Aktualisierung der Quellen wird in - beschrieben. - - Wenn ein Benutzer unabsichtlich Teile des Archivs löscht, - wird das von Subversion erkannt und - bei der nächsten Aktualisierung repariert. - - - - Das Basissystem neu bauen - - - Bau des Basissystems - - - Sobald der lokalen Quellbaum mit einer bestimmten &os; - Version, z.B. &os.stable; oder &os.current; synchronisiert - wurde, kann dieser dazu benutzt werden das System neu zu - bauen. Dieser Prozess wird auch als - die Welt neu bauen bezeichnet. - - Bevor das System neu gebaut wird, - müssen die folgende Aufgaben erledigt werden: - - - Führen Sie diese Aufgaben aus, <emphasis>bevor</emphasis> - das System neu gebaut wird - - - Sichern Sie alle wichtigen Daten auf ein anderes System - oder auf Wechselmedien und überprüfen Sie die Integrität der - Sicherungskopie. Zudem sollten Sie bootfähige - Installationsmedien zur Hand haben. Es kann nicht oft genug - betont werden, wie wichtig es ist, vor dem Neubau des - Systems eine Sicherung zu machen. Während der Neubau des - Systems eine einfache Aufgabe ist, wird es zwangsläufig - einmal vorkommen, dass Fehler im Quellcode dazu führen, dass - das System nicht mehr bootet. Wahrscheinlich wird die - Sicherungskopie nicht benötigt, aber gehen Sie auf Nummer - sicher! - - - - Mailingliste - Lesen Sie die neuesten Einträge in &a.stable; oder - &a.current;, je nachdem welchen Zweig Sie folgen. - Informieren Sie sich über bekannte Probleme und welche - Systeme davon betroffen sind. Wenn ein Problem für den - von Ihnen synchronisierten Code besteht, warten Sie auf - eine all clear-Nachricht, die besagt, dass - das Problem behoben wurde. Synchronisieren Sie dann die - Quellen neu um sicherzustellen, dass die lokale Version - die benötigten Korrekturen hat. - - - - Lesen Sie /usr/src/UPDATING für - zusätzliche Aufgaben, die für diese Version des Quellcodes - notwendig sind. Diese Datei enthält wichtige Informationen - über potentielle Probleme. Gegebenenfalls müssen einige - Kommandos in einer bestimmten Reihenfolge ausgeführt werden. - Manche Aktualisierungen erfordern bestimmte zusätzliche - Schritte, die ausgeführt werden müssen, bevor das System neu - gebaut wird, wie beispielsweise das umbenennen oder löschen - von bestimmten Dateien. Diese Aufgaben sind am Ende der - Datei aufgeführt. Die Anweisungen in - UPDATING sind aktueller als die in - diesem Handbuch. Im Zweifelsfall folgen Sie bitte den - Anweisungen aus UPDATING. - - - - - Verwenden Sie nicht <command>make world</command> - - Einige ältere Dokumentationen empfehlen - make world für den Neubau. - Das Kommando überspringt jedoch wichtige Schritte und sollte - nur von Experten verwendet werden. In fast allen Fällen ist - make world falsch. Benutzen Sie - stattdessen die nachstehende Anleitung. - - - - Übersicht - - Dieser Prozess geht davon aus, dass ein System von einer - älteren Version von &os; auf eine neuere Version aktualisiert - wird. Der Quellcode für die neue Version wurde nach den - Anweisungen in - synchronisiert. - - Das Basissystem enthält den &os;-Kernel, die - zentralen Binärdateien, Bibliotheken und Entwicklerdateien - sowie einen integrierten Compiler. Die Reihenfolge, in der - diese Komponenten gebaut werden, ist wichtig. - - Beispielsweise könnte der alte Compiler aufgrund von - Fehlern nicht in der Lage sein, den neuen Kernel zu - übersetzen. Da der neue Kernel mit dem neuen Compiler - übersetzt wird, muss der neue Compiler gebaut, aber nicht - notwendigerweise installiert werden, - bevor der neue Kernel gebaut wird. - - Das neue Basissystem ist eventuell auf neue Funktionen des - Kernels angewiesen. Aus diesem Grund muss der neue Kernel - installiert sein, bevor das neue Basissystem installiert - wird. - - Das alte Basissystem wird möglicherweise nicht korrekt mit - dem neuen Kernel funktionieren, weshalb das neue Basissystem - sofort nach der Installation des neuen Kernels installiert - werden muss. - - Manche Änderungen an der Konfiguration müssen erledigt - worden sein, bevor das neue Basissystem installiert wird, - jedoch können andere die Funktionalität des alten Basissystems - beeinträchtigen. Aus diesem Grund sind zwei verschiedene - Schritte notwendig, um eine Aktualisierung der Konfiguration - durchzuführen. Der Aktualisierungsprozess ersetzt zum - Großteil Dateien oder fügt neue hinzu, bestehende Dateien - werden nicht gelöscht. Da dieser Prozess Probleme verursachen - kann, werden in /usr/src/UPDATING - gegebenenfalls Dateien aufgelistet, die manuell entfernt - werden müssen. - - Diese Bedenken haben zu einer empfohlenen - Reihenfolge bei der Aktualisierung geführt, die im folgenden - Prozess beschrieben wird. - - - Es ist ratsam, die Ausgaben von make - in einer Datei zu sichern. Wenn etwas schief geht, kann - eine Kopie der Fehlermeldung zu einer der &os;-Mailinglisten - gesendet werden. - - Dazu können Sie einfach script - benutzen, dem Sie beim Aufruf als Parameter den Dateinamen - für die Ausgaben mitgeben. Sichern Sie die Ausgaben nicht - nach /tmp, da dessen Inhalt beim - nächsten Neustart vielleicht verloren geht. Ein besserer - Platz ist /var/tmp. Setzen Sie dieses - Kommando unmittelbar vor dem Neubau ab und geben Sie - exit ein, wenn der Bau abgeschlossen - ist: - - &prompt.root; script /var/tmp/mw.out -Script started, output file is /var/tmp/mw.out - - - Zusammenfassung des Aktualisierungsprozesses + + Vorbereitungen - Die verwendeten Kommandos sollten in der hier - angegebenen Reihenfolge ausgeführt werden. Die Funktionen - der einzelnen Kommandos werden in diesem Abschnitt - beschrieben. + Wenn der Rechner zum ersten mal aktualisiert wird, + geben Sie folgendes Kommando ein: - - Wenn der Bauprozess bereits einmal auf diesem - System durchgeführt wurde, existiert vielleicht noch eine - Kopie davon in /usr/obj. Um den - neuen Bauprozess zu beschleunigen und Ärger aufgrund von - Abhängigkeiten zu vermeiden, kann dieses Verzeichnis - entfernt werden: + &prompt.root; etcupdate extract - &prompt.root; chflags -R noschg /usr/obj/* -&prompt.root; rm -rf /usr/obj - + Dies erstellt einen Kontrollpunkt zum späteren + Vergleich und Zusammenführen von + Systemeinstellungen. - - Übersetzen Sie zuerst den neuen Compiler und - ein paar damit zusammenhängende Werkzeuge. Verwenden Sie - dann den neuen Compiler, um den Rest des Basissystems zu - erstellen. Das Ergebnis wird in - /usr/obj abgelegt. - - &prompt.root; cd /usr/src -&prompt.root; make buildworld + Dieses Kommando muss auf dem Rechner nur + einmalig ausgeführt werden. + &man.etcupdate.8; benötigt nach dem ersten + extract keine weiteren + Aktualisierungen. - Benutzen Sie den neuen Compiler aus - /usr/obj, um sich vor falschen - Compiler-Kernel-Kombinationen abzusichern. Dies ist - notwendig, da sich einige Datenstrukturen geändert haben - könnten und Programme wie &man.ps.1; und &man.top.1; nur - mit einem Kernel zusammen arbeiten, der auch zu dem - entsprechenden Quellcode passt. + Aktualisierung und Bauprozess - &prompt.root; make buildkernel - + &prompt.root; svn update /usr/src +check /usr/src/UPDATING +&prompt.root; cd /usr/src +&prompt.root; make -j4 buildworld +&prompt.root; make -j4 kernel +&prompt.root; shutdown -r now +&prompt.root; cd /usr/src +&prompt.root; make installworld +&prompt.root; etcupdate +&prompt.root; shutdown -r now - - Installieren Sie den neuen Kernel und die - Kernelmodule, damit Sie den frisch aktualisierten Kernel - starten können. Wenn kern.securelevel - einen Wert größer als 1 besitzt - und der Kernel mit - noschg oder ähnlichen Optionen - geschützt ist, müssen Sie zuerst in den Single-User-Modus - wechseln. Andernfalls läuft dieses Kommando problemlos im - Mehrbenutzermodus. Weitere Informationen über - kern.securelevel finden Sie in - &man.init.8;. Optionen, die auf Dateien gesetzt werden - können, werden in &man.chflags.1; detailliert - erläutert. + + + Holt die neueste Version der Quellen. + enthält + weitere Informationen zum Aktualisieren und Bauen der + Quellen. + - &prompt.root; make installkernel - + + /usr/src/UPDATING enthält + Anweisungen für alle manuellen Schritte, die vor oder + nach dem Bau der Quellen erforderlich sind. + - - Starten Sie das System in den Single-User-Modus, damit - Probleme mit der Aktualisierung von Programmen, die - bereits gestartet sind, minimiert werden. Ebenso - minimiert dieser Modus Probleme, die mit der Verwendung - des alten Basissystems und des neuen Kernels zu tun - haben. + + Wechsel in das Bauverzeichnis. + - &prompt.root; shutdown now + + Bau des Basissystems, mit Ausnahme des + Kernels. + - Führen Sie folgende Befehle im Single-User-Modus aus, - wenn das System mit einem - UFS-Dateisystem formatiert ist: + + Bau und Installation des Kernels. Dieser Schritt + ist gleichbedeutend mit + buildkernel und + installkernel. + - &prompt.root; mount -u / -&prompt.root; mount -a -t ufs -&prompt.root; swapon -a + + Installation des Basissystems. + - Wenn das System mit ZFS formatiert - ist, führen Sie stattdessen folgende Befehle aus. In - diesem Beispiel ist der Name des Pools - zroot: + + Aktualisierung und Zusammenführung der + Konfigurationsdateien in + /etc. + - &prompt.root; zfs set readonly=off zroot -&prompt.root; zfs mount -a + + Neustart des Systems mit dem neu erstellten + Basissystem und Kernel. + + - - - Optional: Wenn eine andere Tastaturbelegung als - US-Englisch gewünscht wird, kann diese mit &man.kbdmap.1; - angepasst werden: - - &prompt.root; kbdmap - - - - Führen Sie folgenden Befehl aus, wenn die - CMOS-Uhr auf die lokale Zeit - eingestellt ist (dies ist der Fall, wenn die Ausgabe von - &man.date.1; nicht die richtige Zeit anzeigt): - - &prompt.root; adjkerntz -i - - - - Bei der Aktualisierung des Basissystems werden - bestimmte Verzeichnisse, wie /etc, - /var und /usr - ausgelassen. Im nächsten Schritt werden ein paar - Konfigurationsdateien zur Vorbereitung für das neue - Basissystem aktualisiert. Der folgende Befehl - aktualisiert lediglich Dateien, die für das Gelingen von - installworld unerlässlich sind. - Beispielsweise können neue Gruppen, Systembenutzerkonten, - oder neue Startskripten erstellt werden, die seit der - letzten Aktualisierung hinzugefügt wurden. Dieser Schritt - ist notwendig, damit - installworld in der Lage ist, - die neuen Konten, Gruppen und Skripten zu verwenden. - Weitere Informationen zu diesem Befehl finden Sie in - : - - &prompt.root; mergemaster -p - - - - Installieren Sie das neue Basissystem und die - Systemdateien aus /usr/obj: - - &prompt.root; cd /usr/src -&prompt.root; make installworld - - - - Aktualisieren Sie die verbleibenden - Konfigurationsdateien: - - &prompt.root; mergemaster -iF - - - - Löschen Sie veraltete Dateien. Dieser Schritt - ist wichtig, da alte Dateien manchmal Probleme bereiten, - falls sie nicht entfernt werden: - - &prompt.root; make delete-old - - - - Nun wird ein Neustart benötigt, um den neuen Kernel - und das neue Basissystem zu laden: - - &prompt.root; reboot - - - - Stellen Sie sicher, dass alle Ports neu gebaut wurden, - bevor die alten Bibliotheken entfernt werden. Folgen - Sie dazu den Anweisungen aus . Entfernen Sie anschließend - alle veralteten Bibliotheken um Konflikte mit den neuen - Bibliotheken zu vermeiden. Weitere Informationen zu - diesem Schritt finden Sie - in . - - &prompt.root; make delete-old-libs - - - Single-User Modus - - Wenn Sie eine Ausfallzeit des Systems in Kauf nehmen - können, sollten sie das System im Single-User Modus - bauen. Die Neuinstallation des Systems verändert viele - wichtige Systemdateien, Systemwerkzeuge, Bibliotheken und - Include-Dateien. Ändern Sie diese Dateien auf einem laufenden - System, insbesondere mit aktiven Nutzern, kann dies große - Probleme verursachen. - - Konfigurationsdateien + + Vorbereitungen zum Aktualisieren aus den Quellen - - make.conf - + Wenn der Rechner zum ersten Mal aus den Quellen + aktualisiert wird, lassen Sie + etcupdate extract laufen, um einen + Kontrollpunkt zum späteren Vergleich zu erstellen. Dieser + Schritt wird einmalig auf dem Rechner ausgeführt. - Der Bauprozess verwendet verschiedene - Konfigurationsdateien. - - Das Makefile in - /usr/src legt fest, wie die Programme, - aus denen &os; besteht, zu bauen sind und in welcher - Reihenfolge diese zu bauen sind. - - Die verfügbaren Optionen für make - werden in &man.make.conf.5; und - /usr/share/examples/etc/make.conf - beschrieben. Jede Option in - /etc/make.conf beeinflusst das Verhalten - von make beim Bau von Programmen. Die in - /etc/make.conf gesetzten Optionen wirken - sich bei jedem Aufruf von make aus, - einschließlich beim Bau von Programmen aus der Ports-Sammlung, - vom Benutzer geschriebene C-Programme oder beim Bau des - &os;-Betriebssystems. Änderungen an einigen Einstellungen - können weitreichende und unerwartete Auswirkungen nach sich - ziehen. Lesen Sie die Kommentare in diesen beiden Ressourcen - und beachten Sie, dass die Standardwerte aus einer Kombination - von Leistung und Sicherheit gewählt wurden. - - - /etc/src.conf - - - Der Bau des Betriebssystems aus dem Quellcode wird von - /etc/src.conf kontrolliert. Im Gegensatz - zu /etc/make.conf greifen die Optionen in - /etc/src.conf nur dann, wenn das - &os; Betriebssystem selbst gebaut wird. Die vielen Optionen - für diese Datei werden in &man.src.conf.5; beschrieben. - Seien Sie vorsichtig mit dem Entfernen von scheinbar nicht - mehr benötigten Kernelmodulen und Optionen. Manchmal gibt es - unerwartete oder subtile Wechselwirkungen. + Lesen Sie /usr/src/UPDATING. Jeder + manuelle Schritt, welcher vor oder nach der Aktualisierung + erforderlich ist, wird in dieser Datei beschrieben. - - Variablen und Ziele + + Den Quellcode aktualisieren - Ein typischer Aufruf von make sieht - wie folgt aus: + Der Quellcode von &os; befindet sich in + /usr/src/. Die bevorzugte Methode zur + Aktualisierung dieser Quellen ist über das + Versionskontrollsystem Subversion. + Sie sollten sicherstellen, dass der Quellcode unter + Versionskontrolle steht: - &prompt.root; make -x -DVARIABLE target + &prompt.root; svn info /usr/src +Path: /usr/src +Working Copy Root Path: /usr/src +... - In diesem Beispiel ist - eine Option, - die an make übergeben wird. Eine Liste - gültiger Optionen finden Sie in &man.make.1;. + Dies ist ein Hinweis darauf, dass + /usr/src/ unter Versionskontrolle steht + und mit &man.svn.1; aktualisiert werden kann. - Mit - - setzen Sie eine Variable. Das Verhalten der - Makefile wird von Variablen bestimmt. - Diese sind etweder in /etc/make.conf - eingetragen, oder können an make übergeben - werden. Das folgende Beispiel setzt eine Variable, die - verhindert, dass die profiled Bibliotheken - gebaut werden: + &prompt.root; svn update /usr/src - &prompt.root; make -DNO_PROFILE target + Dieser Vorgang kann einige Zeit in Anspruch nehmen, falls + das Verzeichnis nicht zuletzt aktualisiert wurde. Nach + Beendigung ist der Quellcode aktuell und der im nächsten + Abschnitt beschriebene Bauprozess kann beginnen. - Dieser Aufruf entspricht dem folgenden Eintrag in - /etc/make.conf: + + Beschaffung des Quellcodes - NO_PROFILE= true # Avoid compiling profiled libraries + Meldet die Ausgabe + '/usr/src' is not a working copy, dann + fehlen entweder Dateien, oder das Verzeichnis wurde mit + einer anderen Methode aktualisiert. Ein erneuter Checkout + der Quellen ist jetzt erforderlich. - Das Ziel sagt make - was zu tun ist und das Makefile - definiert die verfügbaren Ziele. Einige Ziele werden - verwendet, um den Bauprozess in eine Reihe von - Einzelschritten zu unterteilen. + + &os; Versionen und Repository-Pfade - Über separate Optionen zu verfügen, ist aus mehreren - Gründen nützlich. Erstens erlaubt dies einen Bauprozess, - der die Komponenten des laufenden Systems nicht - beeinträchtigt. Deswegen können Sie - buildworld gefahrlos im Mehrbenutzermodus - laufen lassen. Die Installation mit - installworld sollte aber immer - noch im Single-User-Modus erfolgen. + + + + Ausgabe von uname -r + Repository-Pfad + Beschreibung + + - Zweitens kann, wie in - beschrieeben, NFS benutzt werden, um - mehrere Maschinen in einem Netzwerk zu aktualisieren. + + + X.Y-RELEASE + base/releng/X + Die Release-Version inklusive kritischer + Sicherheits- und Bugfix-Patches. Dieser Zweig wird + für die meisten Benutzer empfohlen. + - Mit können Sie - make anweisen, mehrere Prozesse zu - starten. Da der Übersetzungsprozess - hauptsächlich von I/O statt der - CPU bestimmt wird, ist diese Option für - Einprozessor- und Mehrprozessor-Systeme nützlich. + + X.Y-STABLE + base/stable/X + + Die Release-Version und alle weitere Versionen + auf diesem Zweig. + STABLE bezieht sich darauf, + dass die Binärschnittstelle + (ABI) sich nicht ändert, sodass + Anwendungen welche auf älteren Versionen erstellt + wurden weiterhin lauffähig sind. Eine Anwendung, + welche für &os; 10.1 übersetzt wurde, läuft + auch auf &os; 10-STABLE. - Auf einem typischen Einprozessor-System können Sie den - 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: + STABLE-Zweige haben gelegentlich Fehler und + Inkompatibilitäten, welche den Benutzer + beeinträchtigen könnten. In der Regel werden + diese Fehler aber zügig behoben. + + - &prompt.root; make -j4 buildworld + + X-CURRENT + base/head/ + Die neueste unveröffentlichte Version von + &os;. Der CURRENT-Zweig kann viele Fehler und + Inkompatibilitäten enthalten und wird daher nur für + fortgeschrittene Benutzer empfohlen. + + + +
- Wenn Sie ein Mehrprozessor-System besitzen, probieren - Sie Werte zwischen 6 und - 10 aus. + Ermitteln Sie mit &man.uname.1; die verwendete + &os;-Version: - - Bau des Basissystems - Laufzeiten - + &prompt.root; uname -r +10.3-RELEASE - - Wenn mit make buildworld Variablen - verwendet werden, müssen dieselben Variablen auch bei - make installworld angegeben werden. - Allerdings darf zusammen mit - installworld - nicht benutzt werden. + Basierend auf ist + base/releng/10 der Repository-Pfad zur + Aktualisierung von 10.3-RELEASE. Dieser + Pfad wird beim Auschecken der Quellen benutzt: - Haben Sie zum Bauen die folgende Kommandozeile - verwendet: + &prompt.root; mv /usr/src /usr/src.bak +&prompt.root; svn checkout https://svn.freebsd.org/base/releng/10.3 /usr/src - &prompt.root; make -DNO_PROFILE buildworld + + + Verschiebt das alte Verzeichnis. Wenn es keine + lokalen Änderungen in diesem Verzeichnis gibt, kann es + gelöscht werden. + - dann installieren Sie das Ergebnis mit: - - &prompt.root; make -DNO_PROFILE installworld - - Andernfalls würde das System bei der Installation - versuchen, die profiled Bibliotheken, die - aber gar nicht gebaut wurden, zu installieren. + + Der Pfad aus wird + der Repository-URL hinzugefügt. Der dritte Parameter + ist das lokale Zielverzeichnis für den Quellcode. + +
- - - Abgleich der Konfigurationsdateien + + Den Quellcode bauen - - - - Tom - Rhodes - - Beigetragen von - - - + Die Welt, also das gesamte + Basissystem mit Ausnahme des Kernels, wird zuerst + übersetzt, um aktuelle Werkzeuge zum Erstellen des + Kernels bereitzustellen. Anschließend wird der + Kernel gebaut: - mergemaster + &prompt.root; cd /usr/src +&prompt.root; make buildworld +&prompt.root; make buildkernel - &os; enthält das &man.mergemaster.8; Bourne-Shell - Skript, welches dabei behilflich ist die Unterschiede zwischen - den Konfigurationsdateien in /etc und - denen unter /usr/src/etc zu finden. - Dies ist der empfohlene Weg, die Systemkonfiguration mit dem - Quellbaum abzugleichen. + Das Ergebnis wird in /usr/obj + abgelegt. - Es ist ratsam, zuerst das bestehende - /etc an einen sicheren Ort zu - kopieren. Mit wird rekursiv kopiert und - erhält die Zugriffszeiten und Eigentümer - der Dateien: + Dies sind die grundlegenden Schritte. Weitere Optionen + zur Kontrolle des Bauprozesses sind nachfolgend + beschrieben. - &prompt.root; cp -Rp /etc /etc.old + + Umgebung für den Bauprozess säubern - Beim Aufruf wird mergemaster - ausgehend von / einen virtuellen - Root-Baum aufbauen und darin die neuen Konfigurationsdateien - ablegen. - Diese Dateien werden dann mit den auf dem System - installierten Dateien verglichen. Unterschiede zwischen den - Dateien werden im &man.diff.1;-Format dargestellt. Neue - oder geänderte Zeilen werden mit - gekennzeichnet. Zeilen die gelöscht oder ersetzt werden, - sind mit gekennzeichnet. Das - Anzeigeformat wird in &man.diff.1; genauer erklärt. + Einige Versionen von &os; hinterlassen bereits + übersetzten Code im temporären Objektverzeichnis + /usr/obj. Dies kann nachfolgende + Bauprozesse beschleunigen, da Code, der nicht verändert + wurde, nicht neu übersetzt werden muss. Um eine saubere + Umgebung für den Bauprozess zu schaffen, entfernen Sie + /usr/obj bevor Sie mit dem Bau + beginnen. Dies ist dasselbe wie + make clean, nur sehr viel + schneller: - Als nächstes zeigt mergemaster jede - geänderte Datei an und Sie haben die Wahl, die neue Datei - (auch 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 Ausgabe noch einmal - zu sehen. + &prompt.root; rm -rf /usr/obj/* + - Wenn Sie die temporäre Datei löschen, geht - mergemaster davon aus, dass Sie die - aktuelle Datei unverändert behalten möchten. Die Auswahl - dieser Option wird nicht empfohlen. Durch die Eingabe von - ? können Sie jederzeit die Hilfe am Prompt - von mergemaster aufrufen. Wenn Sie eine - Datei überspringen, wird mergemaster - diese am Ende erneut präsentieren. + + Anzahl der Prozesse einstellen - Wenn Sie die temporäre Datei installieren, wird die - aktuelle Datei mit der neuen Datei überschrieben. Sie - sollten alle unveränderten Konfigurationsdateien auf diese - Weise aktualisieren. + Eine höhere Anzahl an Prozessen kann die + Geschwindigkeit auf Mehrprozessor-Systemen verbessern. + Die Anzahl der Kerne lässt sich mit + sysctl hw.cpu bestimmen. Prozessoren + variieren ebenso, wie die verschiedenen Build-Systeme von + &os;. Sie müssen daher mehrere Versuche starten um zu + sehen, wie die Anzahl der Prozesse die Geschwindigkeit + beeinflusst. Als Ausgangspunkt können Sie die halbe bis + doppelte Anzahl der Kerne als Wert probieren. Die Anzahl + der Prozesse wird mit angegeben. - Wenn Sie sich entschließen den Inhalt beider Dateien - abzugleichen, wird ein Texteditor aufgerufen, in dem Sie - beide Dateien nebeneinander betrachten können. Mit der - Taste l übernehmen Sie die aktuelle Zeile - der links dargestellten Datei, mit der Taste - r ü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. + + Die Anzahl der Prozesse erhöhen - Haben Sie sich entschieden die Differenzen noch einmal - anzuzeigen, werden nochmals die Unterschiede in beiden - Dateien angezeigt. + Das Basissystem und den Kernel mit vier Prozessen + bauen: - Wenn mergemaster alle Systemdateien - abgearbeitet hat, werden weitere Optionen abgefragt. Sie - werden unter Umständen gefragt, ob die Passwort-Datei neu - gebaut werden soll. Am Ende haben Sie die Möglichkeit, die - restlichen temporären Dateien zu löschen. + &prompt.root; make -j4 buildworld buildkernel + + - + &prompt.root; make buildkernel KERNCONF=STORAGESERVER + - - - Veraltete Dateien und Bibliotheken löschen + + Installation des Codes - - - - Anton - Shterenlikht - - Basiert auf Notizen von - - - + Nachdem die Schritte buildworld + und buildkernel abgeschlossen + sind, wird der neue Kernel und die Welt installiert: - - Veraltete Dateien und Verzeichnisse löschen - - - Aufgrund der ständigen Weiterentwicklung von &os; kann es - dazu kommen, dass Dateien und deren Inhalte obsolet werden, - weil deren Funktionalität entweder in anderen Dateien - implementiert wurde, sich die Versionsnummer der Bibliothek - geändert hat oder die Funktion aus dem System entfernt wurde. - Dies kann sowohl Dateien und Verzeichnisse, aber auch - Bibliotheken betreffen. Diese veralteten Dateien, - Verzeichnisse und Bibliotheken sollten - daher entfernt werden, wenn das System aktualisiert wird. Die - stellt sicher, dass das System von nicht mehr - benötigten Dateien befreit wird. Falls die obsolete - Bibliothek Sicherheits- oder Stabilitätsprobleme aufweist, - sollte das System ebenfalls aktualisiert werden, um das System - sicher zu halten und/oder durch die fehlerhafte Bibliothek - verursachte Systemabstürze zu vermeiden. Veraltete Dateien, - Verzeichnisse und Bibliotheken sind in - /usr/src/ObsoleteFiles.inc aufgelistet. - Verwenden Sie die folgenden Anweisungen, um diese Dateien - während der Systemaktualisierung zu entfernen. - - Nachdem Sie make installworld sowie - mergemaster erfolgreich ausgeführt haben, - überprüfen Sie das System auf veraltete Dateien und - Bibliotheken: - &prompt.root; cd /usr/src -&prompt.root; make check-old +&prompt.root; make installkernel +&prompt.root; shutdown -r now +&prompt.root; cd /usr/src +&prompt.root; make installworld +&prompt.root; shutdown -r now - Werden dabei veraltete Dateien gefunden, können diese - mit dem folgenden Kommando entfernt werden: + Wenn ein angepasster Kernel erstellt wurde, muss + zusätzlich die Variable KERNCONF gesetzt + werden: - &prompt.root; make delete-old - - Bei jeder Datei wird nachgefragt, ob diese wirklich - gelöscht werden soll. Es ist aber auch möglich, alle - Dateien automatisch löschen zu lassen. Dies erreichen Sie, - indem Sie die Umgebungsvariable - BATCH_DELETE_OLD_FILES setzen: - - &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old - - Alternativ können Sie auch yes - einsetzen und somit die Antwort yes - an die einzelnen Abfragen weiterreichen: - - &prompt.root; yes | make delete-old - - - Warnung - - Das Löschen veralteter Dateien kann dazu führen, dass - Programme, die auf diese Dateien angewiesen sind, nicht mehr - funktionieren. Dies gilt insbesondere für veraltete - Bibliotheken. In den meisten Fällen ist es dann notwendig, - Programme, Ports und Bibliotheken, welche die veraltete - Bibliothek verwenden, neu zu bauen, bevor Sie den Befehl - make delete-old-libs ausführen. - - - Die Bibliothek-Abhängigkeiten können mit - sysutils/libchk und - sysutils/bsdadminscripts geprüft - werden. - - Veraltete Bibliotheken können zu Konflikten mit neueren - Bibliotheken führen und beispielsweise folgende - Meldungen verursachen: - - /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 -/usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 - - Um diese Probleme zu lösen, müssen Sie zuerst - herausfinden, welcher Port die Bibliothek installiert - hat: - - &prompt.root; pkg which /usr/local/lib/libtiff.so -/usr/local/lib/libtiff.so was installed by package tiff-3.9.4 -&prompt.root; pkg which /usr/local/lib/libXext.so -/usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 - - Danach deinstallieren Sie den Port und bauen ihn neu, um - ihn danach erneut zu installieren. Dieser Vorgang kann durch - den Einsatz von ports-mgmt/portmaster - automatisiert werden. Nachdem alle Ports neu gebaut wurden - und keine alten Bibliotheken mehr verwenden werden, - können Sie die alten Bibliotheken endgültig entfernen: - - &prompt.root; make delete-old-libs - - Falls etwas schief geht, ist es leicht einen Teil des - Systems wiederherzustellen. Wenn beispielsweise während des - Updates oder Abgleichs /etc/magic aus - Versehen gelöscht wurde, wird file nicht - mehr funktionieren. In diesem Fall kann das Problem mit dem - folgenden Kommando behoben werden: - - &prompt.root; cd /usr/src/usr.bin/file -&prompt.root; make all install + &prompt.root; cd /usr/src +&prompt.root; make installkernel KERNCONF=STORAGESERVER +&prompt.root; shutdown -r now +&prompt.root; cd /usr/src +&prompt.root; make installworld +&prompt.root; shutdown -r now - - Häufige Fragen + + Die Aktualisierung abschließen - - - Muss ich wirklich immer alles neu bauen, wenn sich - etwas geändert hat? + Ein paar abschließende Aufgaben beenden die + Aktualisierung. Alle Konfigurationsdateien werden mit den + neuen Versionen zusammengeführt, veraltete Bibliotheken werden + entfernt, dann wird das System neu gestartet. - - Das hängt von den Änderungen ab. Es lohnt - wahrscheinlich nicht, alles neu zu bauen, wenn sich bei - einem svn-Lauf nur die - folgenden Dateien geändert haben: + + Konfigurationsdateien mit + <application>etcupdate</application> zusammenführen - src/games/factor/factor.c -src/games/fortune/fortune/fortune.c -src/usr.sbin/bsdinstall/distextract/distextract.c -src/usr.sbin/bsdinstall/partedit/diskeditor.c -src/share/man/man7/intro.7 + etcupdate bietet einen + einfachen Weg, um die veränderten Konfigurationsdateien des + Systems mit den neuen Versionen zusammenzuführen. - In diesem Fall können Sie in die entsprechenden - Unterverzeichnisse wechseln und dort - make all install ausführen. Wenn - sich allerdings etwas Wichtiges, wie - src/lib/libc/stdlib geändert hat, - sollten Sie unbedingt die Welt neu bauen. + etcupdate + - Einige Benutzer 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. - Das hängt auch noch davon ab, wie oft Sie ein Update - durchführen wollen und ob Sie &os.stable; oder - &os.current; benutzen. - - + + Konfigurationsdateien mit + <application>mergemaster</application> + zusammenführen - - Warum bricht der Bau mit vielen Signal - 11signal 11 - Fehlern (oder anderen Signalnummern) ab? + mergemaster -Ui + - - Für gewöhnlich zeigen diese Meldungen Hardwarefehler - an. Ein Neubau der Welt ist ein guter Belastungstest - für die Hardware und zeigt oft Probleme mit dem Speicher - auf. Es liegt garantiert ein Hardwarefehler vor, wenn - make neu gestartet wird und an einer - anderen Stelle abbricht. + + Veraltete Dateien und Bibliotheken entfernen - In diesem Fall können nur einzelne Komponenten des - Systems, angefangen mit dem RAM, - getauscht werden, um zu bestimmen, welche Komponente den - Fehler verursacht. - - + Nach einer Aktualisierung können sich immer noch + veraltete Dateien und Verzeichnisse im System befinden. + Diese lassen sich mit folgendem Kommando auflisten: - - Kann /usr/obj entfernt werden, - wenn ich fertig bin? + &prompt.root; make check-old - - In diesem Verzeichnis werden alle Dateien - abgelegt, die während der Übersetzungsphase erstellt - wurden. Dieses Verzeichnis wird in einem der ersten - Schritte von make buildworld - entfernt. Es macht daher wenig Sinn, dieses Verzeichnis - zu behalten. Zudem wird ungefähr 2 GB - Plattenspeicher freigegeben, wenn dieses Verzeichnis - gelöscht wird. - - + und löschen: - - Kann ein abgebrochener Bau weitergeführt - werden? + &prompt.root; make delete-old - - Das hängt davon ab, wieweit der Bauprozess - fortgeschritten ist. Üblicherweise werden durch - make buildworld essentielle - Werkzeuge und die Systembibliotheken neu erstellt. Die - neu erstellten 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. + Einige veraltete Bibliotheken können ebenfalls noch + vorhanden sein. Diese werden mit folgenden Kommando + aufgelistet: - Während der letzten Phase können Sie relativ - gefahrlos folgende Kommandos ausführen, ohne dabei - die von make buildworld erzeugten - Dateien zu löschen: + &prompt.root; make check-old-libs - &prompt.root; cd /usr/src -&prompt.root; make -DNO_CLEAN all + und wie folgt gelöscht: - Wenn diese Meldung in der Ausgabe von - make buildworld erscheint: + &prompt.root; make delete-old-libs - -------------------------------------------------------------- -Building everything.. --------------------------------------------------------------- + Programme, die diese alten Bibliotheken noch verwenden, + werden nicht mehr funktionieren, wenn die Bibliothek + gelöscht wurde. Diese Programme müssen nach dem Löschen der + alten Bibliotheken neu gebaut oder ersetzt werden. - dann können Sie den Befehl bedenkenlos - ausführen. + + Wenn Sie sich sicher sind, dass alle Dateien und + Verzeichnisse gelöscht werden können, dann setzen Sie + BATCH_DELETE_OLD_FILES, um nicht jede + einzelne Datei mit y und + Enter bestätigen zu müssen. + Zum Beispiel: - Wenn diese Meldung nicht angezeigt wird, dann ist es - besser, noch einmal ganz von Vorne anzufangen. - - + &prompt.root; make BATCH_DELETE_OLD_FILES=yes delete-old-libs + + - - Ist es möglich, den Bauprozess zu - beschleunigen? + + Neustart des Systems - - Es gibt mehrere Maßnahmen um den Bauprozess zu - beschleunigen. Zum Beispiel kann der gesamte Prozess im - Single-User-Modus ausgeführt werden. Dies verhindert - jedoch, dass Benutzer Zugriff auf das System haben, bis - der Prozess abgeschlossen ist. + Zum Abschluss der Aktualisierung muss das System neu + gestartet werden, damit alle Änderungen wirksam + werden: - Die sorgfältige Planung von Dateisystemen oder die - Verwendung von ZFS können auch einen - Unterschied machen. Sie können erwägen, - /usr/src und - /usr/obj auf separate Dateisysteme - zu legen. Wenn möglich, platzieren Sie die Dateisysteme - auf separaten Festplatten mit getrennten - Platten-Controllern. Verwenden Sie beim einhängen von - /usr/src die Option - , um die Aktualisierung der - Dateizugriffe zu deaktivieren. Falls - /usr/src nicht auf einem eigenen - Dateisystem liegt, können Sie /usr - abhängen und mit neu - einhängen. - - Das Dateisystem, in dem sich - /usr/obj befindet, kann mit - eingehangen werden, so 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. - - - Beachten Sie, dass dies das 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. - - Wenn /usr/obj das einzige - Verzeichnis auf diesem Dateisystem ist, stellt das - kein Problem dar. Wenn sich allerdings auf diesem - Dateisystem noch andere wertvolle Daten befinden, - stellen Sie sicher, dass Sie über aktuelle Sicherungen - verfügen. - - - Deaktivieren Sie den Bau der - profiled-Bibliotheken, indem Sie - NO_PROFILE=true in - /etc/make.conf eintragen. - - Benutzen Sie make zusammen mit - , um - mehrere Prozesse parallel laufen zu lassen. - Für gewöhnlich beschleunigt dies den Bauprozess auf - Einprozessor- und Mehrprozessorsystemen. - - - - - Was mache ich, wenn etwas nicht funktioniert? - - - Stellen Sie zuerst sicher, dass sich in der Umgebung - keine Reste eines vorherigen Baus befinden: - - &prompt.root; chflags -R noschg /usr/obj/usr -&prompt.root; rm -rf /usr/obj/usr -&prompt.root; cd /usr/src -&prompt.root; make cleandir -&prompt.root; make cleandir - - Ja, make cleandir muss wirklich - zweimal aufgerufen werden. - - Danach starten Sie den Bauprozess wieder mit - make buildworld. - - Wenn Sie immer noch Probleme haben, schicken Sie die - Fehlermeldungen und die Ausgabe von - uname -a an die Mailingliste - &a.de.questions;. Bereiten Sie sich darauf vor, weitere - Fragen zu der Umgebung zu beantworten. - - - + &prompt.root; shutdown -r now +