Haftungsausschluss:
Dieses Handbuch wurde durch eine neuere Version ersetzt und wird nicht länger gepflegt.
|
Gentoo Linux 2007.0 AMD64 netzwerkloses Handbuch
Inhalt:
-
Gentoo installieren
In diesem Abschnitt lernen Sie, wie Sie Gentoo Linux auf Ihrem System
installieren können.
-
Über die Gentoo Linux Installation
Wenn Sie mit Gentoo nicht sonderlich vertraut sind, kennen Sie vielleicht nicht
alle Möglichkeiten, die Ihnen Gentoo bietet.
-
Booten der Installer LiveCD
Mit unserer Installer LiveCD können Sie Ihren Rechner in eine laufende
Umgebung booten, die es Ihnen erlaubt Gentoo zu installieren.
-
Verwenden des GTK+ basierenden Gentoo Linux Installers
Sie haben nun die Möglichkeit einen grafischen Installer zu verwenden um
Gentoo zu installieren. Konfigurieren Sie die Optionen, die Sie benötigen,
mit einem leicht zu bedienenden GUI und Sie sind startfertig.
-
Verwenden des Dialog basierenden Gentoo Linux Installers
Sie haben außerdm die Möglichkeit einen textbasierenden Installer zu verwenden
um Gentoo zu installieren. Konfigurieren Sie die Optionen, die Sie benötigen,
mit einem einfach zu bedienenden Satz von Menüs und Sie sind startfertig.
-
Wie geht es weiter?
Sie haben nun ihr Gentoo System, aber was nun?
-
Arbeiten mit Gentoo
Lernen Sie mit Gentoo zu arbeiten, wie Sie Software installieren, Variablen
anpassen, das Verhalten von Portage ändern, etc.
-
Eine Portage Einführung
Dieses Kapitel erklärt die "einfachen" Schritte, die ein Benutzer defnitiv
benötigt, um Software auf seinem System zu betreuen.
-
USE-Flags
USE-Flags sind ein sehr wichtiger Aspekt von Gentoo. In diesem Kapitel lernen
Sie mit den USE-Flags zu arbeiten und wie USE-Flags mit dem System interagieren.
-
Portage Features
Gentoos Portage erlaubt verschiedene Features, die Portage bezogene Aspekte
verbessern. Dieses Kapitel erläutert die existierenden Features.
-
Initskripte
Gentoo benutzt ein spezielles Initskript Format, welches neben weiteren Features
abhängigkeitsbezogene Entscheidungen und virtuelle Initskripte mitbringt. Dieses
Kapitel erklärt diese Aspekte und erklärt, wie Sie mit diesen Skripten umgehen.
-
Umgebungsvariablen
Mit Gentoo können Sie die Umgebungsvariablen Ihres Systems ganz einfach
bearbeiten. Dieses Kapitel erklärt häufig gebrauchte Umgebungsvariablen und wie
Sie mit diesen umgehen.
-
Arbeiten mit Portage
"Arbeiten mit Portage" bietet eine tiefergehende Behandlung von Portage, Gentoos
Software Management Tool.
-
Dateien und Verzeichnisse
Wenn Sie Portage ein wenig näher kennenlernen wollen sollten Sie wissen, wo
welche Daten und Dateien abgelegt werden.
files and data.
-
Konfiguration durch Variablen
Portage ist vollständig durch verscheidene Variablen in der Konfigurationsdatei
oder Umgebungsvariablen konfigurierbar.
-
Mischen von Software Zweigen
Gentoo bietet Software in separierten Zweigen an, abhängig von der Architektur
und Stabilität. "Mischen von Software Zweigen" informiert Sie über diese Zweige
und wie Sie diese Zweige konfigurieren können.
-
Zusätzliche Portage Tools
Portage kommt einen zusätzlichen Tools, die Ihnen das Gentoo Erlebnis etwas
vereinfachen sollen. Lesen Sie, wie sie disptach-conf und andere Tools nutzen.
-
Abweichen vom Offiziellen Tree
"Abweichen vom Offiziellen Tree" gibt Ihnen einige Tipps und Tricks, wie Sie
Ihren eigenen Portage Tree nutzen können, wie Sie nur Kategorien aktualisierne,
die Sie möchten, "inject" von Paketen und mehr ...
-
Gentoo Netzwerk Konfiguration
Eine verständliche Anleitung zur Netzwerknutzung in Gentoo.
-
Der Beginn
Eine Anleitung zur Einrichtung der Netzwerkschnittstellen in den gebräuchlichen
Umgebungen.
-
Fortgeschrittene Konfiguration
Hier lernen Sie, wie die Konfiguration funktioniert - Sie benötigen dieses
Wissen bevor wir über modulare Netzwerknutzung sprechen können.
-
Modulare Vernetzung
Gentoo bietet Ihnen eine flexible Vernetzung - Hier erfahren Sie wichtiges über
verschiedene DHCP Clients sowie due Nutzung von Bonding, Bridging und VLANs.
-
Drahtlose Netzwerkfunktionalität
Die Nutzung drahtloser Netzwerke ist nicht grade selbsterklärend. Hoffentlich
bekommen wir es zum Laufen!
-
Funktionalität hinzufügen
Wenn Sie auf ein Abenteuer aus sind, können Sie hier Ihre eigenen Funktionen
hinzufügen.
-
Netzwerkmanagement
Für Benutzer von Notebooks und Personen, die sich mit Ihrem PC in verschiedenen
Netzwerken bewegen.
A. Gentoo installieren
1. Über die Gentoo Linux Installation
1.a. Einleitung
Willkommen
Zuerst, Willkommen bei Gentoo. Sie sind dabei in die Welt der
Anpassbarkeit und Performance einzusteigen. Bei der Installation von Gentoo,
das wird Ihnen mehrfach klargemacht, können Sie auswählen, wie viel Sie selbst
kompilieren möchten, wie Sie Gentoo installieren möchten, welche Systemlogger
Sie benutzen möchten, usw.
Gentoo ist eine schnelle, moderne Metadistribution mit einem klaren und
flexiblen Design. Gentoo ist rund um Freie Software gebaut und versteckt vor
den Benutzern nicht, was unter der Haube steckt. Portage, das von Gentoo
benutzte Paketmanagementsystem, ist in Python geschrieben, was bedeutet, dass
Sie sich den Quellcode einfach anschauen und nach belieben verändern können.
Gentoos Paketsystem benutzt Quellcode (auch wenn Unterstützung für
vorkompilierte Pakete vorhanden ist) und die Konfiguration von Gentoo findet in
normalen Textdateien statt. Mit anderen Worten: Offenheit überall.
Es ist sehr wichtig, das Sie verstehen, dass Erweiterung Ihres
Handlungsspielraums das ist, was Gentoo ausmacht. Wir versuchen Sie nicht
dazu zu zwingen irgendetwas bestimmtes zu tun, das Ihnen nicht gefällt. Wenn
Sie der Meinung sind, dass wir das tun, dann füllen Sie bitte einen Bugreport darüber aus.
Wie ist die Installation strukturiert?
Gentoo Linux wird mit zwei verschiedenen Versionen eines leicht zu bedienenden
Installers geliefert. Ein GTK+ basierender Installer (für eine X-basierte
Umgebung) und einen Dialog basierenden Installer für die Konsole. Kapitel 3 des
Handbuchs behandelt den GTK+ basierenden Installer, während Kapitel 4 den Dialog
basierenden behandelt.
Was sind meine Optionen?
Sie können Gentoo auf viele verschiedene Arten installieren. Sie können eine
Installations-CD herunterladen und von dieser CD aus eine Installation
durchführen, Sie können eine existierende Distribution nutzen, eine bootbare CD
(wie Knoppix), eine aus dem Netz gestartete Umgebung, etc.
Dieses Dokument beschreibt die Installation mit einer Gentoo Linux
Installations-CD, einer bootbaren CD, die alles beinhaltet um Gentoo Linux zu
installieren. Es gibt zwei Arten von Installations-CD, die InstallCD und die
Installer LiveCD. Die InstallCD ist eine minimale Umgebung, welche nur die
Pakete enthält um Gentoo Linux zu installieren. Die LiveCD ist eine komplette
Gentoo Linux Umgebung und kann für zahlreiche Aufgaben verwendet werden, einer
davon ist die Installation von Gentoo Linux. Die LiveCD ist zu diesem Zeitpunkt
nicht für alle Architekturen verfügbar. Wenn Ihre Architektur keine LiveCD hat,
wird diese Dokument für Sie auf die Universal InstallCD verweisen.
Dieser Installationsansatz benutzt nicht zwangsläufig die aktuellsten
Versionen aller Pakete. Wenn Sie dies tun möchten, sollten Sie die
Installationsanweisungen in unseren Gentoo Linux Handbüchern befolgen.
Für Hilfe zu anderen Installationsmöglichkeiten lesen Sie bitte
unseren Alternative
Installationsmöglichkeiten Leitfaden. Wir bieten ebenfalls ein Gentoo Installation Tipps &
Tricks Dokument, das weitere nützliche Informationen enthält.
Wenn Sie das Gefühl haben, dass diese Installationsanleitung zu ausführlich ist
nutzen Sie unsere Schnellinstallationsanleitung, verfügbar in unserer Dokumentationsübersicht. Nicht jede Architektur
verfügt zurzeit über eine Schnellinstallationsanleitung.
Probleme?
Wenn Sie ein Problem in der Installation (oder in der Dokumentation) entdecken,
besuchen sie bitte die Errata des Gentoo
Release Engineering Projekts und schauen Sie in unserer Fehlerdatenbank nach, ob der Fehler bekannt
ist. Wenn nicht erstellen Sie bitte einen Fehlerbericht, damit wir uns der
Sache annehmen können. Haben Sie keine Angst vor den Entwicklern, denen Ihr
Fehlerbericht zugeteilt wird -- für gewöhnlich essen sie keine Menschen.
Beachten Sie aber, dass obwohl das Dokument welches Sie gerade lesen
Architektur-spezifisch ist wird es auch Referenzen zu anderen Architekturen
beinhalten. Dies liegt daran, dass große Teile des Gentoo Handbuchs Quellcode
verwenden, welcher identisch ist für alle Architekturen (um doppelten
Arbeitsaufwand und die Verschwendung von Entwicklungsressourcen zu
verhindern). Wir werden versuchen dies auf ein Minimum zu beschränken um
Missverständnisse zu vermeiden.
Wenn Sie sich nicht sicher sind, ob ein Problem ein Benutzerproblem ist (ein
Fehler den Sie trotz sorgfältiger Lektüre dieser Dokumentation machen) oder ein
Softwareproblem (ein Fehler, den wir trotz sorgfältigen Tests der
Installation/Dokumentation begangen haben) sollten Sie #gentoo.de im
irc.freenode.net Netz besuchen, ansonsten sind Sie natürlich auch so willkommen
:)
Wenn Sie eine Frage betreffend Gentoo haben, werfen Sie zunächst einen Blick in
die Häufig gestellten Fragen (FAQ), die Teil
der Gentoo Dokumentation sind. Sie können auch die
FAQs in unserem
Forum lesen. Wenn Sie dort keine
Antwort finden können, fragen Sie in #gentoo.de, unserem IRC Channel auf
irc.freenode.net. Ja, viele von uns sind Freaks, die im IRC sitzen.
1.b. Schnelle Installation mit der Gentoo Referenzplattform
Was ist die Gentoo Referenzplattform?
Die Gentoo Referenzplattform, von jetzt an als GRP abgekürzt, ist ein
Schnappschuss von vorkompilierten Paketen, die Benutzer (also Sie!) während der
Installation benutzen können, um den Installationsverlauf zu beschleunigen. Die
GRP besteht aus allen Paketen, die für eine vollständige Gentoo Installation
notwendig sind. Sie werden nicht nur benötigt, um ein Basissystem in kürzester
Zeit zu installieren; auch verbreitete Ebuilds (wie xorg-x11, GNOME,
OpenOffice, Mozilla, ...) sind als GRP-Pakete verfügbar.
Jedoch werden diese vorkompilierten Pakete während der Lebensdauer einer Gentoo
Distribution nicht betreut. Sie sind Schnappschüsse, die zusammen mit jedem
Gentoo Release veröffentlicht werden und es ermöglichen in kürzester Zeit eine
funktionsfähige Umgebung zu haben. Sie können dann das System im Hintergrund
aktualisieren, während sie daran arbeiten.
Wie handhabt Portage GRP-Pakete?
Ihr Portagebaum - die Sammlung von ebuilds (Dateien die alle
Informationen zu einem Paket enthalten, wie Beschreibung, Homepage, URL zum
Quellcode, Kompilierungsinstruktionen, Abhängigkeiten, etc.) - müssen synchron
zum GRP-Satz sein: Die Versionen der verfügbaren Ebuilds und begleitenden
GRP-Pakete müssen stimmen.
Aus diesem Grund können Sie nur einen Nutzen aus GRP-Paketen, die Gentoo
liefert, ziehen, solange Sie die momentane Installationsmethode verwenden. GRP
ist nicht erhältlich für jene, die daran interessiert sind eine Installation
mit den aktuellesten Versionen aller verfügbaren Pakete durchzuführen.
Sind GRP-Pakete verfügbar?
Nicht alle Architekturen bieten GRP-Pakete an. Das bedeuted nicht, dass GRP auf
den anderen Architekturen nicht verfügbar ist, wir haben nur nicht die
Ressourcen die GRP-Pakete für diese Architekturen zu bauen und zu testen.
Aktuell bieten wir GRP-Pakete für die folgenden Architekturen an:
-
Die amd64 Architektur (amd64) Anmerkung: Die Pakete sind nun auf
der Installer LiveCD verfügbar.
-
Die sparc Architektur (sparc64)
-
Die ppc Architektur (ppc32)
-
Die x86 Architektur (athlon, athlon-xp, athlon-mp, pentium-pro,
pentium2, pentium3, pentium4 and pentium-m). Notiz: Die Pakete sind für
i686 und sind über die Installer LiveCD verfügbar.
Wenn Ihre Architektur (oder Subarchitektur) nicht in dieser Liste enthalten ist
besteht für diese keine optionale Möglichkeit der GRP-Installation.
Nach dieser kurzen Einleitung fahren wir nun mit dem Booten der Universal Installations-CD/Installer
LiveCD fort.
2. Booten der Installer LiveCD
2.a. Hardwareanforderungen
Einleitung
Bevor wir loslegen, listen wir zuerst auf welche Hardwareanforderungen Sie
erfüllen müssen, um Gentoo erfolgreich auf Ihrem System mit der Installer
LiveCD installieren zu können.
Hardwareanforderungen
| CPU |
Jegliche AMD64- oder EM64T-CPU |
| Arbeitsspeicher |
256 MB |
| Festplattenspeicher |
1.5 GB (Swap Speicher exklusive) |
| Swap Speicher |
Mindestens 256 MB |
2.b. Die Gentoo Installer LiveCD
Einleitung
Eine LiveCD ist ein bootfähiges Medium, dass eine eigenständige Gentoo-Umgebung
enthält. Es erlaubt Ihnen, Linux von der CD zu booten. Während des Bootvorgangs
wird Ihre Hardware erkannt und die entsprechenden Treiber werden geladen. Die
Gentoo Installations-CDs werden von Gentoo Entwicklern betreut.
Zurzeit sind zwei Installations-CDs verfügbar:
-
Die Installer LiveCD beinhaltet alles was Sie brauchen um Gentoo
zu installieren. Sie liefert eine graphische Umgebung, einen graphischen
wie auch einen konsolen-basierenden Installer, der die Installation
automatisch für Sie durchführt und natürlich die Installationsanweisungen
für Ihre Architektur.
-
Die Minimal Installations-CD beinhaltet nur eine minimale Umgebung die es
Ihnen erlaubt Ihr System zu starten und das Netzwerk einzurichten damit Sie
ins Internet kommen können. Es sind keine weiteren Dateien enthalten und Sie
kann auch nicht für diesen Installationsansatz benutzt werden.
2.c. Downloaden, Brennen und Booten der Installer LiveCD
Downloaden und Brennen der Installer LiveCD
Sie können die Installer LiveCDs von einem unserer Spiegel herunterladen.
Sie befinden sich im releases/amd64/2007.0/livecd/
Verzeichnis.
In diesen Verzeichnissen finden Sie ISO-Dateien. Dies sind komplette
CD-Images, die Sie auf CD-R schreiben können.
Nach dem Download der Datei, können Sie ihre Integrität überprüfen um
festzustellen, ob sie beschädigt ist oder nicht:
-
Sie können die MD5 Prüfsumme mit der von uns bereitgestellten MD5 Prüfsumme
vergleichen (z.B. unter Linux/Unix mit dem md5sum Tool oder md5sum für Windows.
-
Sie können die von uns bereitgestellte kryptografische Signatur
verifizieren. Dafür müssen Sie sich allerdings unseren Public Key (17072058)
besorgen:
Um den Public Key mittels GnuPG abzurufen, benutzen Sie folgenden Befehl:
Befehlsauflistung 3.1: Beziehen des Public Key |
$ gpg --keyserver subkeys.pgp.net --recv-keys 17072058
|
Verifizieren Sie nun die Signatur:
Befehlsauflistung 3.2: Verifizieren der kryptografischen Signatur |
$ gpg --verify <Signatur Datei> <heruntergeladenes ISO>
|
Um die heruntergeladenen ISO(s) zu brennen müssen Sie den RAW-Modus wählen. Wie
das im einzelnen funktioniert hängt sehr stark vom verwendeten Programm ab. Wir
werden hier cdrecord und K3B behandeln; weitere Informationen
finden Sie in unserer Gentoo FAQ.
-
Mit cdrecord schreiben sie einfach cdrecord dev=/dev/hdc
<heruntergeladenes ISO Image> (ersetzen Sie /dev/hdc
mit dem Device Pfad Ihres CD-RW Laufwerk).
-
Mit K3B wählen Sie Tools > Burn CD Image. Danach können Sie
das ISO-Image mit dem 'Image to Burn' Feld auswählen. Schließlich klicken
Sie Start.
Booten der Install LiveCD
Wichtig:
Lesen Sie diesen gesamten Abschnitt bevor Sie fortfahren, da Sie vermutlich
nicht mehr die Möglichkeit zum Lesen bekommen, wenn später eine Aktion von
Ihnen erwartet wird.
|
Wenn Sie Ihre LiveCD gebrannt haben, ist es Zeit diese zu booten. Entfernen Sie
alle CDs aus den CD-Laufwerken, starten Sie Ihr System neu und gehen Sie ins
BIOS. Im Normalfall gelangen Sie durch Drücken der ENTF, F1 oder ESC Taste
dorthin. Im BIOS ändern Sie die Bootreihenfolge, so dass zuerst von der CD-ROM
gebootet wird. Die Einstellung finden Sie normalerweise unter "CMOS Setup". Tun
Sie dies nicht, bootet das System nach dem Reboot wieder von der Festplatte und
ignoriert das CD-ROM.
Jetzt legen Sie die LiveCD in das CD-ROM Laufwerk und starten neu. Sie sollten
einen Bootscreen zu sehen bekommen. In diesem Screen können Sie Enter drücken,
um Gentoo mit den standardmäßigen Bootoptionen zu starten. Sie können auch
einen anderen Kernel und angepasste Bootoptionen auswählen und erst dann Enter
drücken.
Einen Kernel angeben? Ja, wir bieten verschiedene Kernel auf unserer LiveCD an.
Der Standardkernel ist gentoo. Andere Kernel sind für spezifische
Hardwareanforderungen und die -nofb Variante, die den Framebuffer
deaktiviert.
Nachfolgend finden Sie einen kurzen Überblick über die verfügbaren Kernel:
| Kernel |
Beschreibung |
| gentoo |
Standardkernel mit Unterstützung für K8-CPUs (inklusive NUMA-Unterstützung)
und EM64T-CPUs.
|
| memtest86 |
Testet Ihren lokalen RAM auf Fehler |
Sie können auch Kernel Optionen mitgeben. Diese repräsentieren zusätzliche
optionale Einstellungen, die Sie nach Belieben (de)aktivieren können. Die
folgende Liste ist die gleiche, die Sie erhalten wenn sie im Bootscreen F2 bis
F7 drücken.
Befehlsauflistung 3.3: Verfügbare Kerneloptionen, die Sie auswählen können |
acpi=on Dies lädt Unterstützung für ACPI und führt auch dazu, dass der
acpid Dämon von der CD beim Boot gestartet wird. Dies wird nur
benötigt, wenn Ihr System ACPI benötigt um korrekt zu
funktionieren. Dies wird nicht für Hyperthreading-Unterstützung
benötigt.
acpi=off Deaktiviert ACPI komplett. Dies ist auf einigen älteren
Systemen hilfreich und außerdem eine Anforderung für die
Verwendung von APM. Dies wird jegliche
Hyperthreading-Unterstützung für Ihren Prozessor deaktivieren.
console=X Dies richtet den seriellen Konsolenzugriff für die CD ein. Die
erste Option ist das Gerät, normalerweise ttyS0 auf x86,
gefolgt von jeglichen Verbindungsoptionen, welche durch Komma
getrennt sind. Die Standardoptionen sind 9600,8,n,1.
dmraid=X Dies erlaubt die Übergabe von Optionen an das device-mapper
RAID-Subsystem. Optionen sollten von Anführungsstrichen
umgeben sein.
doapm Dies lädt APM-Treiberunterstützung. Dies verlangt auch, dass
Sie außerdem acpi=off verwenden.
doslowusb Dies fügt einige zusätzliche Pausen zum Bootvorgang hinzu für
das langsame USB-CDROM des IBM-BladeCenter.
dopcmcia Dies lädt Unterstützung für PCMCIA und Cardbus-Hardware und
sorgt außerdem dafür, dass der PCMCIA cardmgr von der CD beim
Booten gestartet wird. Dies ist nur nötig, wenn von einem
PCMCIA/Cardbus Gerät gebootet wird.
doscsi Dies lädt Unterstützung für die meisten SCSI-Controller. Dies
wird auch benötigt um die meisten USB-Geräte zu booten, da Sie
das SCSI-Subsystem des Kernels verwenden.
hda=stroke Dies erlaubt es Ihnen die gesamte Festplatte zu partitionieren
selbst wenn das BIOS nicht in der Lage ist große Festplatten zu
verwalten. Diese Option wird nur auf Rechnern mit einem älteren
BIOS verwendet. Ersetzten Sie hda durch das Gerät, welches
Option benötigt.
ide=nodma Dies erzwingt die Deaktivierung von DMA im Kernel und wird von
einigen IDE-Chipsätzen und auch einigen CDROM-Laufwerken
benötigt. Wenn Ihr System Probleme hat mit den Lesen von Ihrem
IDE-CDROM sollten Sie diese Option ausprobieren. Dies
deaktiviert außerdem das Ausführen der Standardeinstellungen
von hdparm.
noapic Dies deaktiviert den Advanced Programmable Interrupt Controller
der sich auf neueren Motherboards findet. Er ist bekannt dafür
einige Probleme mit älterer Hardware zu verursachen.
nodetect Dies deaktiviert jegliche Autoerkennung der CD, inklusive der
Geräteautoerkennung und der DHCP-Suche. Dies kann hilfreich
beim debuggen eines CD- oder Treiberfehlers sein.
nodhcp Dies deaktiviert die DHCP-Suche auf den erkannten
Netzwerkkarten. Dies ist hilfreich in Netzwerken mit nur
statischen Adressen.
nodmraid Deaktiviert Unterstützung für device-mapper RAID, wie das
welches für on-board IDE/SATA RAID-Controller verwendet wird.
nofirewire Dies deaktiviert das Laden der Firewire-Module. Dies sollte nur
notwendig sein, wenn Ihre Firewire-Hardware Probleme beim
booten der CD verursacht.
nogpm Dies deaktiviert die gmp Konsolenmaus-Unterstützung.
nohotplug Dies deaktiviert das Laden der hotplug und coldplug Initskripte
beim Boot. Dies kann hilfreich beim debuggen eines CD- oder
Treiberfehlers sein.
nokeymap Dies deaktiviert die Keymap-Auswahl, welche verwendet wird zur
Auswahl von nicht-US Keyboardlayouts.
nolapic Dies deaktiviert den lokalen APIC auf Uniprocessor-Kerneln.
nosata Dies deaktiviert das Laden der Serial-ATA-Module. Dies ist
hilfreich, wenn Ihr System Probleme mit dem SATA-Subsystem hat.
nosmp Dies deaktiviert SMP, oder Symmetric Multiprocessing, auf
SMP-aktiven Kerneln. Dies ist hilfreich beim debuggen von
SMP-bezogenen Problemen mit bestimmten Treibern und
Motherboards.
nosound Dies deaktiviert Soundunterstützung und
Lautstärkeeinstellungen. Dies ist hilfreich bei Systemen, auf
denen die Soundunterstützung Probleme verursacht.
nousb Dies deaktiviert das automatische Laden von USB-Modulen. Dies
ist hilfreich beim debuggen von USB-Problemen.
dodevfs Dies aktiviert das veraltete device filesystem auf 2.6
Systemen. Sie werden außerdem noudev verwenden müssen, damit
dies Wirkung zeigt. Seit devfs die einzige Wahl bei einem 2.4
Kernel ist hat diese Option keine Wirkung, wenn ein 2.4 Kernel
gebootet wird.
doevms2 Dies aktiviert Unterstützung für IBMs pluggable-EVMS, oder
Enterprise Volume Management System. Die Verwendung mit lvm2
zusammen ist gefährlich.
dolvm2 Dies aktiviert Unterstützung für das Logical Volume Management
von Linux. Die Verwendung mit evms2 zusammen ist gefährlich.
noudev Dies deaktiviert udev-Unterstützung bei 2.6 Kerneln. Diese
Option benötigt die Verwendung von dodevfs. Da udev unter 2.4
Kerneln keine Wahlmöglichkeit ist, hat diese Option keine
Auswirkung beim Booten eines 2.4 Kernels.
unionfs Aktiviert Unterstützung für Unionfs auf unterstützten
CD-Images. Dies wird ein schreibbares Unionfs-Overlay in einem
tmpfs erzeugen, was es Ihnen erlaubt jegliche Dateien auf der
CD zu verändern.
unionfs=X Aktiviert Unterstützung für Unionfs auf unterstützten
CD-Images. Dies wird ein schreibbares Unionfs-Overlay auf dem
Gerät erstellen, das Sie angeben. Dieses Gerät muss mit einem
Dateisystem formatiert sein, dass vom Kernel erkannt wird und
schreibbar ist.
debug Aktivieren des Debugging-Codes. Dies kann etwas unübersichtlich
werden, da eine Menge Daten auf dem Bildschirm ausgegeben wird.
docache Dies lädt den gesamten Runtime-Bereich der CD in RAM. Das
ermöglicht Ihnen umount /mnt/cdrom zu verwenden und eine andere
CDROM zu mounten. Diese Optionen benötigt, dass Sie mindestens
doppelt soviel RAM verfügbar haben, wie die Größe der CD.
doload=X Dies zwingt die initiale Ramdisk dazu jegliche aufgelisteten
Module zu laden, wie auch deren Abhängigkeiten. Ersetzen Sie X
durch den Modulnamen. Mehere Module können mit einer durch
Kommas separierten Liste spezifiziert werden.
noload=X Dies zwingt die initiale Ramdisk dazu den Ladevorgang eines
bestimmten Moduls zu überspringen, welches Probleme verursachen
könnte. Der Syntax ist derselbe wie für doload.
nox Dies zwingt die X-aktivierte LiveCD dazu X nicht automatisch zu
starten sondern stattdessen auf die Kommandozeile
zurückzufallen.
scandelay Dies zwing die CD dazu für 10 Sekunden während bestimmter
Abschnitte des Bootvorgangs zu warten um bestimmten Geräten,
die langsamer sind, Zeit zu geben sich zu initiliasieren um
verwendet zu werden.
scandelay=X Dies erlaubt es Ihnen eine beliebige Verzögerung, in Sekunden,
zu bestimmten Abschnitten des Bootvorgangs hinzuzufügen um
langsameren Geräten die Möglichkeit zu geben sich zu
initilasieren, damit sie verwendet werden können. Ersetzen Sie
X durch die Anzahl von Sekunden die pausiert werden soll.
|
Nun booten Sie Ihre CD, wählen einen Kernel (wenn Sie mit dem gentoo
Standardkernel nicht zufrieden sind) und die Bootoptionen. Wir zeigen
Ihnen als Beispiel, wie Sie den gentoo Kernel mit dopcmcia als
Kernelparameter booten:
Befehlsauflistung 3.4: Booten einer Installations-CD |
boot: gentoo dopcmcia
|
Sie werden dann von einem Boot Screen und einem Fortschrittsbalken begrüßt.
Wenn Sie Gentoo nicht an einem System mit einer US Tastatur installieren drücken
Sie sofort ALT-F1 um in den Verbose Mode zu wechseln und folgen Sie den
Anweisungen. Wenn binnen 10 Sekunden keine Auswahl getroffen wurde, wird das
Standard Tastaturlayout (US) geladen und der Bootvorgang fortgesetzt. Nachdem
der Bootprozess abgeschlossen ist, werden Sie automatisch als Superuser
"root" in das "Live" Gentoo Linux eingeloggt. Sie sollten einen root-Prompt
("#") auf der aktuellen Konsole sehen und durch das Drücken von Alt-F2, Alt-F3
und Alt-F4 auf andere Konsolen wechseln können. Um wieder zu Ausgangskonsole
zu wechseln drücken Sie Alt-F1.
Befehlsauflistung 3.5: Using sudo to run applications |
# sudo vi /etc/group
# sudo su -
|
Konfiguration zusätzlicher Hardware
Wenn die LiveCD startet, versucht diese alle Ihre Hardware Geräte zu erkennen
und die entsprechenden Kernelmodule zu laden um die Ihre Hardware unterstützen.
In den allermeisten Fällen funktioniert dies wunderbar. Dennoch kann es in
einzelnen Fällen passieren, dass nicht alle benötigten Module automatisch
geladen werden. Wenn die PCI-Autoerkennung einen Teil Ihres Systems nicht
erkennt, müssen Sie die entsprechenden Kernelmodule manuell laden. Diese
Vorgänge benötigen root-Zugriff.
Im nächsten Beispiel versuchen wir das 8139too Modul (Unterstützung für
verschiedene Netzwerkkarten) zu laden:
Befehlsauflistung 3.6: Laden von Kernelmodulen |
# modprobe 8139too
|
Optional: Optimieren der Festplattenleistung
Wenn Sie ein fortgeschrittener Benutzer sind, möchten Sie die IDE
Festplattenleistung möglicherweise mit hdparm optimieren. Sie benötigen
root-Zugriff um hdparm zu verwenden. Mit den -tT Optionen können
Sie die Leistung Ihrer Festplatte testen (führen Sie dieses Kommando mehrfach
aus, um präzisere Werte zu erhalten).
Befehlsauflistung 3.7: Testen der Festplattenleistung |
# hdparm -tT /dev/hda
|
Für die Optimierung können Sie eines der folgenden Beispiele verwenden (oder
selber experimentieren) welches /dev/hda als Festplatte nutzt
(ersetzen Sie dies mit Ihrer Festplatte).
Befehlsauflistung 3.8: Optimieren der Festplattenleistung |
# hdparm -d 1 /dev/hda
# hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda
|
Optional: Benutzeraccounts
Wenn Sie planen, anderen Leuten Zugriff auf Ihre Installationsunmgebung zu
geben oder mit irssi ohne root-Rechte chatten möchten (aus
Sicherheitsgründen), müssen Sie die notwendigen Benutzeraccounts anlegen und
das root-Passwort ändern. Sie benötigen root-Zugriff um das root-Passwort zu
ändern und neue Benutzer hinzuzufügen.
Um das root-Passwort zu ändern benutzen Sie das passwd Programm:
Befehlsauflistung 3.9: Ändern des root-Passwort |
$ sudo su -
# passwd
New password:
Re-enter password:
|
Um einen Benutzeraccount zu erstellen geben wir zunächst den Namen des
Accounts ein, gefolgt von einem Passwort. Wir benutzen useradd und
passwd für diese Aufgaben. Im nächsten Beispiel erstellen wir den
Benutzer "john".
Befehlsauflistung 3.10: Erstellen eines Benutzer Accounts |
# useradd -m -G users john
# passwd john
New password:
Re-enter password:
|
Sie können die Benutzerkennung von root zum neu erstellen Benutzer mit su
wechseln:
Befehlsauflistung 3.11: Wechseln der Benutzerkennung |
# su - john
|
Sie können außerdem das Passwort für den "gentoo" Benutzer in der grafischen
Umgebung ändern. Dieser Account ist bereits geeignet für die Benutzung des
Internets.
Befehlsauflistung 3.12: Ändern des gentoo-Passworts |
$ passwd
New password:
Re-enter password:
|
Optional: Lesen der Dokumentation während der Installation
Wenn Sie das Gentoo Handbuch (entweder von der CD oder Online) während der
Installation lesen möchten, können Sie es mit Mozilla Firefox (in der
grafischen Umgebung) oder mit links (von einer Terminal-Umgebung).
Befehlsauflistung 3.13: Betrachten der Dokumentation auf der CD mit Firefox |
# firefox /mnt/cdrom/docs/handbook/html/index.html
|
Wenn Sie es vorziehen würden links zu verwenden um eine nur-Text-Version
des Handbuchs zu sehen, sollten Sie sicherstellen, dass Sie ein Benutzerkonto
erstellt haben (siehe Optional:
Benutzerkonten). Drücken Sie dann Alt-F2 um zu einem neuen
Terminal zu wechseln und sich anzumelden.
Befehlsauflistung 3.14: Betrachten der Dokumentation auf der CD mit links |
# links /mnt/cdrom/docs/html/index.html
|
Sie können zurück zu Ihrem ersten Fenster wechseln, indem Sie Alt-F7
drücken.
Die Online-Version des Gentoo Handbuch ist jedoch vorzuziehen, da
diese aktueller sein wird als die auf der CD enthaltene. Sie können diese auch
mit Firefox oder links durchblättern, allerdings erst, nachdem Sie das
Kapitel Konfiguration des Netzwerk durchgearbeitet haben (andernfalls
haben Sie keine Verbindung ins Internet um das Dokument anzuschauen):
Befehlsauflistung 3.15: Betrachten der Online-Dokumentation mit Firefox |
# firefox http://www.gentoo.org/doc/en/handbook/2007.0/handbook-amd64.xml
|
Befehlsauflistung 3.16: Betrachten der Online-Dokumentation mit links |
# links http://www.gentoo.org/doc/en/handbook/2007.0/handbook-amd64.xml
|
Sie können nun entscheiden ob sie mit dem GTK+
basierenden Installer (welcher X benötigt) oder dem Dialog-basierenden Installer, der auf einer
Konsole ausgeführt werden kann, fortfahren.
3. Verwenden des GTK+ basierenden Gentoo Linux Installers
3.a. Willkommen
Bevor Sie anfangen
Sobald der Gentoo Linux Installer (GLI) fertig geladen wurde, werden Sie vom
Willkommensbildschirm begrüßt. Er bietet eine angenehme Einleitung zum Ablauf
der Installation von Gentoo auf Ihrem Computer. Denken Sie daran jede Option
aufmerksam zu lesen. Es ist eine detaillierte Hilfe für jeden einzelnen Schritt
der Installation verfügbar. Schauen Sie einfach nach links bei jedem Bildschirm.
Wir empfehlen, dass Sie immer die Hilfeseiten lesen, bevor Sie Ihre
Entscheidungen treffen. Beachten Sie, dass Sie jederzeit während des
Installationsvorgangs den Konfigurationsprozess speichern können, falls Sie Ihre
Installation zu einem späteren Zeitpunkt fortsetzen müssen.
Es sind drei Arten von Installationsmethoden verfügbar. Wählen Sie
Networkless aus um mit der Installation von Gentoo Linux zu beginnen.
Notiz:
Das Auswählen von Networkless wird dazu führen, dass einige
Konfigurationsoptionen später nicht verfügbar sein werden.
|
3.b. Partitionierung
Vorbereiten der Festplatten
Um Gentoo auf Ihrem Computer zu installieren, müssen Sie Ihre Festplatten
vorbereiten. Der Partitioning Bildschirm wird Ihnen eine Liste der
erkannten Festplatten anzeigen und Ihnen erlauben die Dateisysteme zu
bestimmen, die Sie auf Ihren Partitionen haben wollen. Die Auswahl
Clear partitions wird alle vorhandenen Partitionen auf Ihrer Festplatte
entfernen, also seien Sie vorsichtig mit dieser Option! Es ist außerdem möglich
die Größe bestimmter Partitionstypen zu verändern.
Wenn Sie sich dafür entscheiden mit dem Recommended layout
weiterzumachen wird der Installer jede existierende Partition löschen und drei
Partitionen erstellen: 100MB für /boot, eine bis zu 512MB große
Partition /swap und der restlichen verfügbare Platz auf der
Festplatte wird für die Rootpartition / verwendet.
Warnung:
Wie bei jedem Partitionierungsprogramm sollten Sie ein Backup Ihres Systems
erstellen bevor Sie irgendeine Änderung an Ihrer Partitionstabelle vornehmen,
da mögliche Bugs zu Datenverlust führen konnten. Jegliche Änderungen, die Sie an
Ihrer Partitonstabelle vornehmen, werden sofort vom Installer durchgeführt.
|
3.c. Netzwerkmounts
Optional: Netzwerkmounts festlegen
Dieser Bildschirm lässt Sie jedes bestehende Netzwerkmount während und nach
der Installation einrichten und benutzen. Wählen Sie New um die
Konfiguration zu starten. Momentan wird nur NFS unterstützt.
3.d. make.conf
USE-Flags
Da Sie eine GRP/netzwerklose Installation durchführen, dürfen Sie vor der
Installation keine USE-Flags auswählen. Es steht Ihnen jedoch frei Ihre eigenen
USE-Flags in /etc/make.conf zu setzen, nachdem Sie in Ihr fertiges
System gebootet haben.
CFLAGS
Sie sollten dennoch Ihren Prozessortyp in den CFLAGS Abschnitt
eintragen, zusammen mit allen angepassten Optimierungen die Sie vielleicht
wünschen, wie -O2 und -pipe.
Anderes
Jegliche weiteren Optionen, die Sie für den zukünftigen Gebrauch setzen wollen,
sollten Sie jetzt auswählen. Build binary packages erzeugt zur
Installation fertige Tarbälle aller Pakete die Sie auf Ihrem System kompilieren.
DistCC erlaubt Ihnen die Last des Kompilierens mit anderen Computern
über Ihre Netzwerkverbindung aufzuteilen.
Ihnen wird nicht ermöglicht Ihren CHOST zu ändern, weil dass Ihre
Installation ernsthaft beschädigen kann. Mit MAKEOPTS definieren Sie,
wie viele Kompilierungen parallel laufen wenn Sie ein Paket installieren. Eine
gute Wahl ist die Anzahl der im System vorhandenen CPUs plus eins aber dieser
Richtwert ist nicht immer perfekt. Auf einem Einprozessorsystem könnte
-j2 benutzt werden.
3.e. Zeitzone
Wählen Sie Ihre Zeitzone aus
Schauen Sie sich die Karte an und wählen Sie die Region aus, die Ihrem
tatsächlichen Standort am nächsten ist. Später werden Sie gefragt ob Sie Ihre
Uhr auf UTC oder lokale Zeit stellen wollen.
3.f. Kernelquellen
Den LiveCD-Kernel benutzen
Für die GRP/netzwerklose Installation müssen Sie den auf der LiveCD
verfügbaren Kernel benutzen. Dies ist lediglich ein gentoo-sources
Kernel kompliliert von genkernel, Gentoos automatischen
Kompilationswerkzeug, der beim Systemstart Ihre Hardware automatisch erkennt
und konfiguriert.
3.g. Netzwerk
Geräteinformationen
In diesem Bildschirm haben Sie die Möglichkeit die verschiedenen, in Ihrem PC
erkannten Netzwerkschnittstellen zu konfigurieren. Lesen Sie die verfügbaren
Optionen sorgfältig.
Im Hostname/Proxy Information/Other Reiter werden Sie einen Hostname für
Ihren Rechner angeben müssen. Sie können auch, wenn benötigt, Proxy-Server und
DNS-Einstellungen angeben.
3.h. Daemons
Cron-Daemons
Cron-Daemons sind hilfreiche Programme, die Aufgaben zu geplanten Zeiten
ausführen. Auch wenn Sie keinen installieren müssen, können sie trotzdem
recht hilfreich sein. Da dies eine netzwerklose Installation ist, ist Ihre
Auswahl auf vixie-cron oder kein Cron-Daemon beschränkt.
System-Protokollierdienst
Ein System-Protokollierdienst ist eine Notwendigkeit für jedes Linux
Betriebssystem. Da dies eine netzwerklose Installation ist, sind Ihre
Wahlmöglichkeiten auf syslog-ng oder kein Protokollierdienst beschränkt.
3.i. Bootloader
Dieser Bildschirm erlaubt es Ihnen Ihren Bootloader auszusuchen und optional
zusätzliche Kernelparameter festzulegen, die beim Booten benutzt werden. Da dies
eine netzwerklose Installation ist, sind Ihre Wahlmöglichkeiten auf grub
oder kein Bootloader beschränkt.
Sie können festlegen von welcher Festplatte gebootet wird, indem Sie die
entsprechende Option für Boot Drive auswählen. Unter Linux wird die
erste IDE-Festplatte in Ihrem System hda genannt, die zweite
IDE-Festplatte ist hdb und so weiter. Falls Sie SATA- oder
SCSI-Festplatten haben würden diese sda, sdb, etc. heißen. Bitte
treffen Sie die passende Wahl für Ihr System.
Wenn Sie dem Kernel zusätzliche Optionen übergeben müssen, wie Angaben zu Video
oder VGA, fügen Sie diese einfach zum Abschnitt "Extra kernel parameters"
hinzu.
Wenn Sie Ihre Festplatte gejumpert haben weil Ihr BIOS nicht mit großen
Festplatten umgehen kann, müssen Sie hdx=stroke anhängen. Falls Sie
SCSI-Geräte haben, sollten Sie doscsi als Kerneloption hinzufügen.
3.j. Benutzer
Benutzer und Gruppen hinzufügen
Setzen Sie zuerst das root-Passwort für den Systemadministrator (der
root Benutzer).
Wir empfehlen nachdrücklich dass Sie einen normalen Benutzer für den
täglichen Gebrauch anlegen. Die ganze Zeit als root zu arbeiten ist
gefährlich und soll vermieden werden! Legen Sie Ihre Benutzer an, setzen
Sie deren Passwörter und fügen Sie sie zu den entsprechenden Gruppen hinzu. Sie
können wahlweise die home-Verzeichnisse verändern, die Loginshell aussuchen und
hilfreiche Kommentare eintragen.
3.k. Extrapakete
Optional: Installation von Extrapaketen
Die LiveCD beinhaltet eine Reihe verfügbarer vorkompilierter Pakete. Wenn Sie
einige davon installieren wollen, markieren Sie das passende Kästchen.
3.l. Startupdienste
Dieser Bildschirm erlaubt es Ihnen verschiedene Dienste zu wählen die beim
Systemstart geladen werden sollen. Gehen Sie die verfügbaren Optionen und deren
Abhängigkeiten genau durch und wählen dann die gewünschten Dienste aus. Wenn
Sie z.B. xorg-x11 zur Installation ausgewählt haben und direkt in eine
grafische Oberfläche booten wollen, dann würden Sie "xdm" von der Liste wählen.
3.m. Andere Einstellungen
Verschiedene Optionen
Jetzt haben Sie die Möglichkeit unterschiedliche Einstellungen zu ändern,
einschließlich Tastaturbelegung, grafischer Anzeigemanager, der Standardeditor
und ob Sie Ihre Hardwareuhr auf UTC oder lokale Zeit stellen wollen.
3.n. Abschließen
Zu diesem Zeitpunkt sind Sie fertig. Sie können zu jedem Zeitpunkt nun in Ihr
neues Gentoo-System neustarten.
Gratulation, Ihr System ist nun vollständig ausgerüstet! Faren Sie mit Wie geht es von hier aus weiter? fort, um mehr
über Gentoo zu erfahren.
4. Verwenden des Dialog basierenden Gentoo Linux Installers
4.a. Willkommen
Bevor Sie anfangen
Nachdem Sie die Gentoo Linux Installer LiveCD gebootet haben, wird versucht
eine grafische Oberfäche zu starten. Falls dies nicht möglich ist, wird
stattdessen ein Kommandozeilen-Prompt angezeigt. Um den Installer zu starten
geben Sie einfach folgendes ein:
Befehlsauflistung 1.1: Starten des Installers |
# installer-dialog
|
Sobald der Installer vollständig geladen wurde, werden Sie mit einem
Willkommensbildschirm begrüßt. Er bietet eine angenehme Einleitung zum Ablauf
der Installation von Gentoo auf Ihrem Computer. Denken Sie daran jede Option
aufmerksam zu lesen. Am oberen Bildschirmrand ist eine detaillierte Hilfe für
jeden einzelnen Schritt verfügbar. Wir empfehlen, dass Sie immer die angebotene
Hilfe lesen bevor Sie Ihre Entscheidungen treffen. Beachten Sie, dass Sie
jederzeit während der Installation den Konfigurationsfortgang speichern können,
falls Sie Ihre Installation zu einem späteren Zeitpunkt fortsetzen müssen.
Benutzen Sie die Tab Taste (auf Ihrer Tastatur) um sich in den Menüs zu
bewegen und die Enter Taste um eine Aktion zu bestätigen.
Es sind zwei Arten von Installationsmethoden verfügbar, Standard und
Advanced. Der erste Modus wird eine Reihe von Einstellungen setzen, ohne
dass Sie eingreifen müssen, während der zweite Modus von Ihnen verlangen wird,
dass Sie eine Reihe von weiteren Entscheidungen bezüglich weiterer
Wahlmöglichkeiten treffen müssen.
Wenn Sie Standard wählen, fahren Sie bitte mit der Partitionierung fort. Falls nicht, lesen Sie bitte
weiter.
4.b. Advanced: Konfiguration vor der Installation
Manuelle Netzwerkkonfiguration
Obwohl Sie ohne eine Internetverbindung installieren werden, können Sie manuell
Verbindungen zu Ihrem lokalen Netzwerk (LAN) einrichten, für den Fall, dass Sie
Gentoo von einem anderen Rechner in Ihrem LAN aus installieren wollen.
Wenn Sie SSH-Zugriff für Ihren Rechner aktivieren möchten (für
Remote-Installation), können Sie sshd starten und ein root-Passwort
spezifizieren.
Laden zusätzlicher Kernelmodule
Wenn Sie weitere Kernelmodule zur Unterstützung Ihrer Hardware benötigen, geben
Sie deren Namen ein, getrennt durch Leerzeichen.
4.c. Partitionierung
Vorbereiten der Festplatten
Um Gentoo auf Ihrem Computer zu installieren müssen Sie Ihre Festplatten
vorbereiten. Der Partitioning Bildschirm wird Ihnen eine Liste der
erkannten Festplatten anzeigen und Ihnen erlauben die Dateisysteme zu
bestimmen, die Sie auf Ihren Partitionen haben wollen. Die Auswahl
Clear Partitions wird alle vorhandenen Partitionen auf Ihrer Festplatte
entfernen, also seien Sie vorsichtig mit dieser Option!
Wenn Sie sich dafür entscheiden mit dem Recommended layout
weiterzumachen, wird der Installer drei Partitionen erstellen: 100MB für
/boot, eine bis zu 512MB große /swap Partition und
den restlichen verfügbaren Platz auf der Festplatte wird für /,
die Rootpartition, verwendet.
Warnung:
Wie bei jedem Partitionierungsprogramm sollten Sie ein Backup Ihres Systems
erstellen bevor Sie irgendeine Änderung an Ihrer Partitionstabelle vornehmen,
da mögliche Bugs zu Datenverlust führen konnten.
|
4.d. Systemkonfiguration
Installationstyp
Da Sie eine GRP/netzwerklose Installation durchführen, müssen Sie
Networkless auswählend und dann mit der Installation fortfahren.
Zeitzone
Studieren Sie die Liste und wählen Sie die Region aus, die Ihrem wirklichen
Standort am nächsten ist.
Netzwerk
In diesem Bildschirm haben Sie die Möglichkeit die verschiedenen, in Ihrem PC
erkannten Netzwerkschnittstellen zu konfigurieren. Lesen Sie die verfügbaren
Optionen sorgfältig.
Der nächste Bildschirm lässt Ihnen die Wahl zwischen DHCP und manueller
IP-Adressenkonfiguration. Sobald die Netzwerkschnittstelle richtig eingerichtet
ist müssen Sie einen Hostnamen für Ihr System vergeben. Wahlweise können Sie
einen Domainnamen und alle benötigten DNS-Server Informationen festlegen.
Bootloader
Dieser Bildschirm erlaubt es Ihnen Ihren Bootloader auszuwählen (grub
oder kein Bootloader). Wählen Sie als nächstes Ihr Bootgerät aus und geben Sie
(optional) jegliche weiteren Bootoptionen an.
Benutzer und Gruppen
Setzen Sie zuerst das root-Passwort für den Systemadministrator (der
root Benutzer).
Wir empfehlen nachdrücklich, dass Sie einen normalen Benutzer für den
täglichen Gebrauch anlegen. Die ganze Zeit als root zu arbeiten ist
gefährlich und sollte vermieden werden! Legen Sie Ihre Benutzer an,
setzen Sie deren Passwörter und fügen Sie sie zu den entsprechenden Gruppen
hinzu. Sie können wahlweise die home-Verzeichnisse verändern, die Loginshell
aussuchen und hilfreiche Kommentare eintragen.
Extrapakete
Die LiveCD beinhaltet eine Reihe verfügbarer vorkompilierter Pakete. Wenn Sie
einige davon installieren wollen, makieren Sie das passende Kästchen.
Bootdienste
Dieser Bildschirm erlaubt es Ihnen zahlreiche Dienste auszuwählen, die beim
Systemstart geladen werden sollen. Betrachen Sie die verfügbaren Optionen und
Ihre Beschreibungen genau und wählen Sie dann die gewünschten Dienste aus.
Wenn Sie zum Beispiel xorg-x11 installiert haben, und direkt in einen
grafischen Desktop booten wollen, würden sie "xdm" in der Liste selektieren.
Andere Einstellungen
Wenn Sie sich entschieden haben eine Advanced Installation durchzuführen,
werden Sie jetzt in der Lage sein verschiedene Einstellungen zu ändern,
inklusive Tastaturlayout, grafischer Displaymanager, den Standardeditor und ob
Ihre Hardwareuhr auf UTC oder lokale Zeit gesetzt werden soll.
4.e. Abschließen
Der Installer wird Sie fragen ob Sie Ihr installation profile für spätere
Verwendung speichern wollen. Der Installer wird Sie benachrichtigen sobald er
fertig ist. Dann wird er Sie wieder zum Kommandozeilen-Prompt zurückkehren
lassen. Um neu zu starten, müssen Sie nur folgendes eingeben:
Befehlsauflistung 5.1: Neustart |
# shutdown -r now
|
Gratulation, Ihr System ist nun vollständig ausgerüstet! Faren Sie mit
Wie geht es von hier aus weiter? fort um
mehr über Gentoo zu erfahren.
5. Wie geht es weiter?
5.a. Dokumentation
Gratulation! Sie haben jetzt ein funktionierendes Gentoo System. Aber wie
geht es nun weiter? Welche Möglichkeiten bieten sich? Gentoo bietet
seinen Nutzern viele Optionen und daher auch viele dokumentierte
(und weniger gut dokumentierte) Eigenschaften.
Sie sollten definitiv einen Blick in den nächsten Teil des Gentoo Handbuch
(Arbeiten mit Gentoo) werfen. Dieser erklärt, wie Sie
Ihre Software aktuell halten und weitere Software installieren können, was USE
Flags sind, wie das Gentoo Init System funktioniert, etc.
Zur Optimierung Ihres Systems für einen Endbenutzer oder wenn Sie wissen wollen,
wie ein vollständiges Desktop-System eingerichtet wird, sollte die sehr
ausführliche Übersicht zur
Desktop-Konfiguration weiterhelfen. Weiterhin möchten Sie vielleicht
unsere Anleitung zur
Lokalisierung betrachten um sich Ihr System angenehmer einzurichten.
Wir haben auch ein Gentoo Sicherheitshandbuch, welches es sich lohnt
zu lesen.
Für eine komplette Liste aller für Gentoo Linux verfügbaren Dokumentationen
verweisen wir auf die Dokumentationsübersicht.
5.b. Gentoo Online
Sie sind natürlich in unseren
Gentoo Foren oder in einem unserer vielen
Gentoo IRC-Kanälen
jederzeit willkommen.
Auch haben wir verschiedene
Mailinglisten,
die allen Benutzern offen stehen. Weitere Informationen hierzu befinden
sich auf der Seite.
Wir halten jetzt unseren Mund und lassen Sie die Gentoo Linux Installation
genießen :)
5.c. Veränderungen in Gentoo seit 2007.0
Veränderungen?
Gentoo ist ein schnelllebiges Projekt. Die folgenden Abschnitte
beschreiben wichtige Veränderungen, welche die Gentoo Installation
beeinflussen. Wir führen nur solche auf die etwas gemeinsam haben mit der
Installation, nicht mit Veränderungen von Paketen, die nicht während der
Installation vorkommen.
Bis jetzt gab es keinen nennenswerten Änderungen.
B. Arbeiten mit Gentoo
1. Eine Portage Einführung
1.a. Willkommen zu Portage
Portage ist vermutlich Gentoos bemerkenswerteste Innovation in Sachen Software
Management. Mit seiner großen Flexibilität und enormen Menge an Optionen wird
es vielfach als bestes Software Management Tool für Linux gesehen.
Portage ist vollständig in Python
und Bash geschrieben und
somit für seine Benutzer vollständig sichtbar, da dieses beides Skriptsprachen
sind.
Die meisten Benutzer werden Portage durch das emerge Programm benutzen.
Dieses Kapitel soll nicht die Informationen aus der emerge Manpage duplizieren,
für eine vollständige Auflistung aller emerge Optionen konsultieren Sie die
Manpage:
Befehlsauflistung 1.1: Lesen der emerge Manpage |
$ man emerge
|
1.b. Der Portage-Tree
Ebuilds
Wenn wir über Pakete reden, meinen wir oft Programme, die für Gentoo-Benutzer
durch den Portage-Tree verfügbar sind. Der Portage-Tree ist eine Sammlung von
Ebuilds -- Dateien, die alle Informationen enthalten, die Portage
benötigt, um Anwendungen zu betreuen (installieren, suchen, abfragen, ...).
Diese Ebuilds liegen standardmäßig in /usr/portage.
Wann immer Sie Portage bitten, eine Aktion betreffend irgendwelcher Anwendungen
durchzuführen, wird es die Ebuilds auf Ihrem System als Basis benutzen. Es ist
daher sehr wichtig, dass Sie die Ebuilds auf Ihrem System regelmäßig
aktualisieren, so dass Portage über neue Anwendungen,
Sicherheitsaktualisierungen usw. informiert ist.
Aktualisieren des Portage-Tree
Der Portage-Tree wird für gewöhnlich mit rsync aktualisiert, ein schnelles und
inkrementelles Dateiübertragungsprogramm. Das Aktualisieren ist ziemlich
einfach, da das emerge Kommando ein Frontend für rsync beinhaltet:
Befehlsauflistung 2.1: Aktualisieren des Portage-Tree |
# emerge --sync
|
Wenn Sie aufgrund von Restriktionen einer Firewall das rsync-Protokoll nicht
benutzen können, können Sie immer noch unsere täglich aktualisierten
Portage-Snapshots benutzen. Das emerge-webrsync Tool lädt diesen
automatisch und installiert den aktuellsten Snapshot in Ihrem System:
Befehlsauflistung 2.2: Running emerge-webrsync |
# emerge-webrsync
|
Ein weiterer Vorteil von emerge-webrsync ist, dass es erlaubt, nur
Portage-Tree-Schnappschüsse herunterzuladen, die mit dem
Gentoo-Release-Engineering-GPG-Schlüssel signiert sind. Weitere Informationen
dazu finden Sie im Abschnitt Portage
Features unter Laden
validierter Portage-Tree-Schnappschüsse.
1.c. Software installieren und aktuell halten
Nach Software suchen
Um den Portage-Tree nach Anwendungen zu durchsuchen können Sie die in
emerge eingebauten Suchfunktionen nutzen. Standardmäßig liefert
emerge --search Paketnamen, die mit dem Suchbegriff teilweise oder
vollständig übereinstimmen.
Um zum Beispiel nach allen Paketen zu suchen, in deren Name "pdf" vorkommt:
Befehlsauflistung 3.1: Suche nach Paketen mit pdf im Namen |
$ emerge --search pdf
|
Wenn Sie ebenfalls durch die Beschreibungen suchen möchten, können Sie die
--searchdesc (oder -S) Option nutzen:
Befehlsauflistung 3.2: Suche nach Paketen im Zusammenhang mit pdf |
$ emerge --searchdesc pdf
|
Wenn Sie einen Blick auf die Ausgabe werfen werden Sie feststellen, dass Ihnen
diese zahlreiche Informationen gibt. Die Felder sind klar beschriftet, so dass
wir dies nicht näher erläutern wollen.
Befehlsauflistung 3.3: Beispiel Ausgabe von 'emerge --search' |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Software installieren
Nachdem Sie eine Anwendung gefunden haben, die Sie installieren möchten, können
Sie dies mit emerge ganz einfach durchführen, zum Beispiel für
gnumeric:
Befehlsauflistung 3.4: Installation von gnumeric |
# emerge gnumeric
|
Da viele Anwendungen untereinander Abhängigkeiten haben, kann jeder Versuch ein
bestimmtes Paket zu installieren in der Installation von verschiedenen
Abhängigkeiten resultieren. Aber keine Angst, Portage kümmert sich ebenfalls um
diese Abhängigkeiten. Wenn Sie herausfinden wollen, welche Pakete Portage als
Abhängigkeiten mitinstallieren würde benutzen Sie die --pretend
Option. Zum Beispiel:
Befehlsauflistung 3.5: Installation von gnumeric simulieren |
# emerge --pretend gnumeric
|
Wenn Sie Portage anweisen ein Paket zu installieren werden alle notwendigen
Quellen (sofern notwendig) aus dem Internet heruntergeladen und standardmäßig
in /usr/portage/distfiles abgelegt. Anschließend werden die
Quellen entpackt, kompiliert und das Paket installiert. Wenn Sie
Portage anweisen möchten zwar die Quellen herunterzuladen, das Paket aber nicht
zu kompilieren und installieren hängen Sie die --fetchonly Option an das
emerge Kommando an:
Befehlsauflistung 3.6: Herunterladen der Quellen für gnumeric |
# emerge --fetchonly gnumeric
|
Auffinden von Dokumentationen zu installierten Pakete
Viele Pakete liefern Ihre eigene Dokumentation. Manchmal bestimmt das
doc USE-Flag ob die Dokumentation des Paketes installiert werden soll
oder nicht. Sie können die Existenz eines doc USE-Flag mit dem
emerge -vp <Paketname> Befehl überprüfen
Befehlsauflistung 3.7: Die Existenz eines doc USE-Flag überprüfen |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
|
Die beste Art das USE-Flag doc zu aktivieren ist für jedes Paket einzeln
mit der Hilfe von /etc/portage/package.use. So werden Sie nur
Dokumentation für Pakete erhalten bei denen Sie daran interessiert sind. Global
diese Variable zu aktivieren ist bekannt dafür Probleme durch zirkuläre
Abhängigkeiten zu verursachen. Das Kapitel USE-Flags bespricht diese Aspekte in größerem
Detail.
Sowie das Paket installiert ist findet sich die Dokumentation generell in einem
Unterverzeichnis mit dem Paketnamen unter dem Verzeichnis
/usr/share/doc. Mit equery Tool können Sie auch alle
installierten Dateien auflisten, es ist Teil des app-portage/gentoolkit
Pakets.
Befehlsauflistung 3.8: Auffinden einer Paketdokumentation |
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
|
Software deinstallieren
Um Anwendungen aus Ihrem System zu entfernen benutzen Sie emerge
--unmerge. Dies weist Portage an, alle Dateien die zu diesem Paket gehören
(mit der Ausnahme von Konfigurationsdateien, die Sie nach der
Installation geändert haben) zu entfernen. Das Beibehalten der
Konfigurationsdateien ermöglicht Ihnen die eventuelle Weiterarbeit mit diesem
Paket zu einem späteren Zeitpunkt.
Jedoch, eine ausdrückliche Warnung: Portage wird nicht
kontrollieren, ob ein Paket, welches Sie deinstallieren möchten, noch
Abhängigkeit eines anderen ist. Sie werden jedoch beim Versuch ein wichtiges
Paket zu entfernen gewarnt, wenn es dazu führen würde, dass Ihr System danach
nicht länger funktionieren würde.
Befehlsauflistung 3.9: Entfernung von gnumeric aus dem System |
# emerge --unmerge gnumeric
|
Wenn Sie ein Paket deinstalliert haben, so sind die Abhängigkeiten dieses
speziellen Paketes weiterhin installiert. Um Portage anzuweisen nach Paketen zu
suchen, die keinerlei Abhängigkeit sind und nun entfernt werden können, nutzen
Sie von emerge die --depclean Funktionalität. Wir werden dies
später ausführlicher behandeln.
Aktualisieren Ihres Systems
Um Ihr System auf dem Laufenden zu halten (von Sicherheitsaktualisierungen gar
nicht gesprochen) müssen Sie Ihr System regelmäßig aktualisieren. Da Portage
nur die Ebuilds in Ihrem lokalen Portage-Tree kennt, müssen Sie zunächst den
Portage-Tree aktualisieren. Wenn Sie dies getan haben, können Sie das System
mittels emerge --update world aktualisieren. Im folgenden Beispiel
verwenden wir auch die --ask Option, wodurch Portage eine Liste der
Pakete, die es aktualisieren will aufzeigt und fragt ob Sie fortfahren wollen:
Befehlsauflistung 3.10: Aktualisierung des Systems |
# emerge --update --ask world
|
Portage wird nun nach neueren Versionen von Anwendungen suchen, die Sie
installiert haben. Es werden jedoch nur Versionen von Anwendungen überprüft, die
Sie explizit installiert haben (die Anwendungen aufgelistet in
/var/lib/portage/world); Abhängigkeiten werden nicht ausführlich
geprüft. Wenn Sie die Abhängigkeiten dieser Pakete ebenfalls aktualisieren
möchten, fügen sie das --deep Argument hinzu:
Befehlsauflistung 3.11: Aktualisierung Ihres Systems inkl. Abhängigkeiten |
# emerge --update --deep world
|
Dies betrifft jedoch nicht alle Pakete: Einige Pakete auf Ihrem System
werden während des Kompilierungsprozesses von Paketen benötigt, aber sobald
diese Pakete installiert sind, werden diese Abhängigkeiten nicht mehr benötigt.
Portage nennt diese Build-Abhängigkeiten. Um auch diese in einem
Aktualisierungs-Zyklus einzuschließen, fügen Sie --with-bdeps=y hinzu:
Befehlsauflistung 3.12: Aktualisierung Ihres gesamten Systems |
# emerge --update --deep --with-bdeps=y world
|
Da auch Sicherheitsupdates in Paketen vorkommen, die Sie nicht explizit
installiert haben (die aber als Abhängigkeiten anderer Programme auch
mitinstalliert wurden), empfiehlt es sich diesen Befehl ab und zu auszuführen.
Wenn Sie zuvor ein USE-Flag geändert haben
möchten Sie vermutlich --newuse hinzufügen. Portage wird nun feststellen,
ob die Änderung eine Installation von weiteren Paketen erfordert oder eine
Neuinstallation der existierenden hinreichend ist:
Befehlsauflistung 3.13: Durchführen einer vollen Aktualisierung |
# emerge --update --deep --with-bdeps=y --newuse world
|
Metapakete
Einige Pakete im Portage-Tree haben keinen realen Inhalt, sondern dienen als
Sammlung von Paketen. Zum Beispiel wird das Paket kde-meta eine komplette
KDE-Umgebung auf Ihrem System installieren, indem es sämtliche Komponenten eines
KDE-Desktops als Abhängigkeiten einbezieht.
Wenn Sie jemals ein solches Paket entfernen wollen, wird Ihnen emerge
--unmerge nicht viel weiterhelfen, da dies keinerlei Einfluss auf die
installierten Abhängigkeiten hat.
Portage hat die Funktionalität um verwaiste Abhängigkeiten zu entfernen, da die
Verfügbarkeit von Anwendungen und Abhängigkeiten dynamisch aufgelöst wird müssen
Sie zunächst Ihr System vollständig aktualisieren, inklusive der Änderungen die
Sie durch Änderungen an USE-Flags herbeigeführt haben. Im Anschluss daran können
Sie emerge --depclean ausführen, um die verwaisten Abhängigkeiten zu
entfernen. Wenn dies geschehen ist müssen Sie die Anwendungen die dynamisch auf
die nun deinstallierten Anwendungen gelinkt sind neu kompilieren.
All dies wird durch die folgenden 3 Kommandos erledigt:
Befehlsauflistung 3.14: Entfernen von verwaisten Paketen |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
revdep-rebuild ist im gentoolkit Paket enthalten, vergessen Sie
nicht, es zuvor zu installieren:
Befehlsauflistung 3.15: Installieren des gentoolkit Paket |
# emerge gentoolkit
|
1.d. Lizenzen
Seit Portage-Version 2.1.7 können Sie eine Softwareinstallation basierend auf
der Lizenz akzeptieren oder ablehnen. Alle Pakete im Baum enthalten einen
Eintrag LICENSE in ihren Ebuilds. emerge --search paketname verrät
Ihnen die Lizenz eines Pakets.
Standardmäßig erlaubt Portage alle Lizenzen außer
Endbenutzer-Lizenzvereinbarungen (EULAs), die das Lesen und Akzeptieren einer
Akzeptanzerklärung erfordern.
Die Variable, die die erlaubten Lizenzen kontrolliert, heißt
ACCEPT_LICENSE und kann in /etc/portage/make.conf gesetzt
werden:
Befehlsauflistung 4.1: Standardmäßige ACCEPT_LICENSE in /etc/portage/make.conf |
ACCEPT_LICENSE="* -@EULA"
|
Mit dieser Konfiguration werden keine Pakete installiert, die während der
Installation eine Interaktion, der EULA zuzustimmen, erfordern. Pakete ohne eine
EULA werden installiert.
Sie können ACCEPT_LICENSE global in /etc/portage/make.conf
oder pro Paket in /etc/portage/package.license setzen.
Wenn Sie beispielsweise die Lizenz truecrypt-2.7 für
app-crypt/truecrypt erlauben wollen, fügen Sie Folgendes zur
/etc/portage/package.license hinzu:
Befehlsauflistung 4.2: Angeben einer Truecrypt-Lizenz in package.license |
app-crypt/truecrypt truecrypt-2.7
|
Dies erlaubt die Installation von Truecrypt-Versionen, die die
truecrypt-2.7 Lizenz haben, hingegen aber keine Versionen, die
truecrypt-2.8 haben.
Wichtig:
Lizenzen werden in /usr/portage/licenses gespeichert und
Lizenzgruppen finden sich in /usr/portage/profiles/license_groups.
Der erste Eintrag jeder Zeile in Großbuchstaben ist der Name der Lizenzgruppe
und jeder folgende Eintrag ist eine einzelne Lizenz.
|
Lizenzgruppen, die in ACCEPT_LICENSE definiert werden, haben ein
vorangestelltes @ Zeichen. Es folgt ein Beispiel eines Systems, das
global die GPL-kompatible Lizenzgruppe erlaut, sowie einige weitere Gruppen und
einzelne Lizenzen:
Befehlsauflistung 4.3: ACCEPT_LICENSE in /etc/portage/make.conf |
ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"
|
Wenn Sie nur freie Software und Dokumentation auf Ihrem System haben wollen,
können Sie die folgende Einstellung verwenden:
Befehlsauflistung 4.4: Nur freie Lizenzen verwenden |
ACCEPT_LICENSE="-* @FREE"
|
Unter "frei" ist in diesem Zusammenhang die Definition der FSF und der OSI zu verstehen. Jegliche
Pakete, die diesen Anforderungen nicht gerecht werden, werden nicht auf Ihrem
System installiert.
1.e. Wenn Portage sich beschwert ...
Über SLOTs, Virtuals, Zweige, Architekturen und Profile
Wie bereits zuvor erwähnt bietet Portage extrem viele Möglichkeiten und
unterstützt zahlreiche Features, die in anderen Softwaremanagement-Tools
fehlen. Um dies zu verstehen erläutern wir einige Aspekte von Portage, ohne
jedoch ganz ins Detail zu gehen.
Mit Portage können mehrere Versionen eines Pakets auf dem System koexistieren.
Während andere Distributionen in diesen Fällen dazu tendieren Teile der
Versionsnummer mit in den Paketnamen aufzunehmen, (wie freetype und
freetype2) beherrscht Portage eine Technik namens SLOTs. Eine
Ebuildversion deklariert dabei ein bestimmtes SLOT. Ebuilds eines
Pakets mit unterschiedlichen SLOTs können gleichzeitig auf einem System
installiert sein. Zum Beispiel hat das freetype Paket Ebuilds mit
SLOT="1" und SLOT="2".
Es gibt weiterhin einige Pakete, welche die gleiche Funktionalität anbieten,
aber anders implementiert sind. Zum Beispiel sind metalogd,
sysklogd und syslog-ng alle System-Protokollierdienste.
Anwendungen die einen System-Protokollierdienst benötigen, können zum Beispiel
nicht auf metalogd bestehen, da die anderen System-Protokollierdienste
auch eine gute Wahl sind. Portage erlaubt daher virtuals: Jeder
System-Logger ist als "exklusive" Abhängigkeit des Logging-Dienstes im
virtuellen Paket logger der Kategorie virtual aufgelistet, so
dass Applikationen einfach vom Paket virtual/logger abhängen können.
Wenn dieses installiert wird, zieht das Paket einfach das erste Logging-Paket,
das im Paket erwähnt wird, hinein, sofern vorher nicht schon ein
Logging-Paket installiert war (in welchem Falle die virtuelle Abhängigkeit
schon erfüllt ist).
Anwendungen im Portage-Tree können sich in verschiedenen Zweigen befinden.
Standardmäßig akzeptiert Ihr System nur Pakete, die Gentoo als stabil
betrachtet. Die meisten neuen Anwendungen werden nach der Veröffentlichung
zum Test-Zweig hinzugefügt, da Tests erforderlich sind um festzustellen, ob
die spezifische Anwendung als stabil gekennzeichnet werden kann. Obwohl Sie
diese Ebuilds auch im Portage-Tree sehen, wird Portage sie erst aktualisieren
wenn diese in den stabilen Zweig verschoben werden.
Einige Anwendungen sind nur für bestimmte Architekturen verfügbar. Andere
Anwendungen funktionieren nicht auf allen Architekturen oder es sind
intensivere Test für diese Anwendung erforderlich. Manchmal ist es dem
Entwickler der die Anwendung in den Portage-Tree eingebracht hat nicht
möglich, zu prüfen ob die Anwendung auf den unterschiedlichen Architekturen
korrekt funktioniert.
Jede Gentoo Installation gehört zu einem bestimmtes Profil, welches
neben anderen Informationen auch alle Pakete auflistet, die für ein
funktionierendes System erforderlich sind.
Blockierte Pakete
Befehlsauflistung 5.1: Portage warnt vor blockierten Paketen (mit --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Befehlsauflistung 5.2: Portage warnt vor blockierten Paketen (ohne --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
Ebuilds enthalten spezifische Felder, die Portage über die Abhängigkeiten
informieren. Es gibt zwei mögliche Formen von Abhängigkeiten: Build
Abhängigkeiten, deklariert in DEPEND und Abhängigkeiten zur Laufzeit,
deklariert in RDEPEND. Wenn eine dieser Abhängigkeiten ein Paket oder
eine Virtual als explizit nicht kompatibel kennzeichnet, wird ein Blocker
ausgelöst.
Auch wenn neuere Portage-Versionen schlau genug sind, kleinere Blocker ohne
Benutzereingriffe zu umgehen, müssen Sie ab und zu selbst Hand anlegen, wie
folgt beschrieben.
Um einen solchen Blocker zu umgehen können Sie entweder auf das Installieren des
Pakets verzichten, oder das den Blocker auslösende Paket zuerst deinstallieren.
Im gerade angebrachten Beispiel sind Ihre Optionen der Verzicht auf die
Installation von postfix oder die vorherige Deinstallation von
ssmtp.
Sie werden unter Umständen auch blockierende Pakete mit spezifischen Atoms wie
<media-video/mplayer-1.0_rc1-r2 sehen. In diesem Fall wird das
Aktualisieren auf eine neuere Version des blockierenden Paketes die
Blockierung aufheben.
Es ist auch möglich, dass sich zwei zu installierende Pakete gegenseitig
blockieren. In diesem seltenen Fall sollten Sie herausfinden, warum Sie beide
installieren müssen. In den meisten Fällen ist eines der Pakete ausreichend.
Wenn nicht, erstellen Sie bitte einen Bug in
Gentoos Bugtracking System.
Maskierte Pakete
Befehlsauflistung 5.3: Portage Warnung zu maskierten Paketen |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Befehlsauflistung 5.4: Portage Warnung zu maskierten Paketen - Gründe |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))
|
Wenn Sie ein Paket installieren wollen, welches für Ihr System nicht verfügbar
ist, erhalten Sie eine solche Fehlermeldung. Sie sollten versuchen eine andere
Anwendung, welche für Ihr System verfügbar ist, zu installieren oder warten bis
das gewünschte Paket verfügbar ist. Es gibt immer einen Grund warum ein Paket
maskiert ist:
-
~arch Keyword bedeutet, dass diese Anwendung noch nicht hinreichend
getestet ist, um diese in den stabilen Zweig zu schieben. Warten Sie ein
paar Tage oder Wochen und versuchen Sie es erneut.
-
-arch Keyword oder -* Keyword bedeutet, dass diese Anwendung
auf Ihrer Architektur nicht funktioniert. Wenn Sie glauben, dass das Paket
funktioniert erstellen Sie einen Bugreport über unsere
Bugzilla Webseite.
-
Fehlendes Keyword bedeutet, dass diese Anwendung auf Ihrer
Architektur noch nicht getestet wurde. Bitten Sie das Portierungs Team
Ihrer Architektur dieses Paket zu testen, oder testen Sie es selbst
und melden Sie Ihre Ergebnisse über unsere
Bugzilla Webseite.
-
package.mask bedeutet, dass dieses Paket korrupt, instabil oder
schlecht ist und als "nicht-benutzen" gekennzeichnet wurde.
-
profile bedeutet, dass dieses Paket als nicht zutreffend für Ihr
Profil gekennzeichnet ist. Die Applikation kann Ihr System in einen
korrupten Zustand versetzen wenn Sie diese Anwendung installieren.
Oder die Anwendung ist mit dem Profil dass Sie verwenden nicht kompatibel.
-
license bedeutet, dass die Lizenz des Paketes nicht mit Ihrer
ACCEPT_LICENSE Einstellung kompatibel ist. Sie müssen die
entsprechende Lizenz oder Lizenzgruppe explizit erlauben, indem Sie sie in
/etc/portage/make.conf oder in
/etc/portage/package.license angeben. Sehen Sie sich Lizenzen genauer an, um herauszufinden, wie jegliche
funktionieren.
Erforderliche USE-Flag-Änderungen
Befehlsauflistung 5.5: Portage-Warnung über erforderliche USE-Flag-Änderung |
The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test
|
Diese Fehlermeldung kann auch wie folgt angezeigt werden, sofern
--autounmask nicht gesetzt ist:
Befehlsauflistung 5.6: Portage-Fehler über erforderliche USE-Flag-Änderung |
emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])
|
Solche Warnungen oder Fehler treten auf, wenn Sie ein Paket installieren wollen,
das nicht nur von einem anderen Paket abhängig ist, sondern es auch erforderlich
ist, dass dieses Paket mit einem bestimmten USE-Flag (oder einer Menge von
USE-Flags) gebaut wurde. In dem gegebenen Beispiel muss das Paket
app-text/feelings mit USE="test" gebaut worden sein, aber dieses
USE-Flag ist auf dem System nicht gesetzt.
Um dieses Problem zu lösen, fügen Sie entweder das erforderliche USE-Flag zu
Ihren globalen USE-Flags in der /etc/portage/make.conf hinzu, oder
setzen Sie es für das spezifische Paket in der
/etc/portage/package.use.
Fehlende Abhängigkeiten
Befehlsauflistung 5.7: Portage Warnung zu fehlenden Abhängigkeiten |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
Die Anwendung welche Sie installieren möchten benötigt ein anderes Paket,
welches für Ihr System nicht verfügbar ist. Schauen Sie im
Bugzilla nach, ob das Problem bekannt
ist und wenn nicht, erstellen Sie zu diesem Problem einen neuen Bugreport.
Solange Sie nicht verschiedene Zweige mischen sollte eine solche Fehlermeldung
eigentlich nicht auftauchen und ist somit ein Bug.
Doppeldeutige Ebuild-Namen
Befehlsauflistung 5.8: Portage Warnung über doppeldeutige Ebuild-Namen |
[ Results for search key : listen ]
[ Applications found : 2 ]
* dev-tinyos/listen [ Masked ]
Latest version available: 1.1.15
Latest version installed: [ Not Installed ]
Size of files: 10,032 kB
Homepage: http://www.tinyos.net/
Description: Raw listen for TinyOS
License: BSD
* media-sound/listen [ Masked ]
Latest version available: 0.6.3
Latest version installed: [ Not Installed ]
Size of files: 859 kB
Homepage: http://www.listen-project.org
Description: A Music player and management for GNOME
License: GPL-2
!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.
|
Die Anwendung, die Sie installieren möchten, hat einen Namen, der auf mehr als
ein Paket zutrifft. Sie müssen ebenfalls die Kategorie des Paketes angeben.
Portage informiert Sie über mögliche Treffer, aus denen Sie auswählen können.
Zyklische Abhängigkeiten
Befehlsauflistung 5.9: Warnung von Portage zu zyklischen Abhängigkeiten |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Zwei (oder mehr) Pakete, die Sie installieren möchten hängen gegenseitig
voneinander ab und können daher nicht installiert werden. Dies ist in den
meisten Fällen ein Bug im Portage-Tree. Bitte warten Sie eine Weile,
aktualisieren den Portage-Tree und versuchen Sie es erneut. Schauen Sie
ebenfalls im Bugzilla, ob dies ein
bekanntes Problem ist und erstellen einen Bugreport sofern noch keiner
existiert.
Herunterladen der Quellen schlägt fehl
Befehlsauflistung 5.10: Portage Warnung zu Fehlern beim herunterladen der Quellen |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
Portage konnte die Quellen für eine bestimmte Anwendung nicht herunterladen und
wird mit dem Installieren der anderen Anwendungen (sofern zutreffend)
fortfahren. Dieser Fehler kann durch einen noch nicht aktualisierten Mirror
oder einen falsche Angabe im Ebuild hervorgerufen werden. Zudem kann es sein,
dass der Server von dem Sie die Quellen herunterladen möchten aus einem
unbekannten Grund nicht erreichbar ist.
Versuchen Sie es eine Stunde später nochmals um zu prüfen, ob das Problem noch
besteht.
Schutz des Systemprofils
Befehlsauflistung 5.11: Portage Warnung über durch das Profil geschützte Pakete |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Sie wollen ein Paket deinstallieren, welches zu den Kernbestandteilen
Ihres Systems zählt. Es ist in Ihrem Profil als notwendig aufgeführt
und sollte daher nicht deinstalliert werden.
Fehler in der Überprüfung des Digests
Manchmal kann das installieren eines Pakets mittels emerge mit folgender
Nachricht abbrechen:
Befehlsauflistung 5.12: Fehler in der Überprüfung des Digest |
>>> checking ebuild checksums
!!! Digest verification failed:
|
Dies ist ein Zeichen dafür dass etwas mit dem Portage-Tree nicht in Ordnung
ist. Oft liegt es daran, dass ein Entwickler beim einbringen eines Pakets
in den Tree einen Fehler gemacht hat.
Wenn die Überprüfung des Digest fehlschlägt versuchen Sie nicht das
Paket selber neu zu indizieren. Das Ausführen von ebuild foo manifest
wird das Problem nicht beheben. Es wird das Problem mit ziemlicher Sicherheit
nur noch verschärfen!
Warten Sie stattdessen ein bis zwei Stunden, bevor der Tree sich etwas
normalisiert hat. Es ist wahrscheinlich ein Fehler, der direkt danach bemerkt
wurde, aber es kann eine Weile dauern bis die Korrektur im Portage-Tree
verbreitet wurde. Während Sie warten können Sie im Bugzilla nachsehen ob jemand das Problem
bereits gemeldet hat. Wenn nicht, melden Sie einfach einen Bug für das kaputte
Paket.
Sobald Sie sehen, dass der Fehler behoben wurde, können Sie erneut
synchronisieren um das korrigierte Digest zu erhalten.
Wichtig:
Dies bedeutet nicht, dass Sie Ihren Tree mehrere Male synchronisieren
sollten! Wie in der Rsync-Richtlinie aufgeführt (wenn Sie emerge --sync
ausführen) werden Benutzer, die zu oft synchronisieren gesperrt! Es ist besser
bis zu Ihrem nächsten geplanten Sync zu warten, damit die Rsync-Server nicht
überlastet werden.
|
2. USE-Flags
2.a. Was sind USE-Flags?
Die Idee welche hinter USE-Flags steckt
Wenn Sie Gentoo installieren (oder irgendeine andere Distribution, oder sogar
ein anderes Betriebssystem) treffen Sie Entscheidungen abhängig von der Umgebung
in der Sie arbeiten. Die Einrichtung eines Server unterscheidet sich von der
Einrichtung einer Workstation. Eine Spiele-Workstation unterscheidet sich von
einer Workstation für 3D-Rendering.
Dies trifft nicht nur bei der Auswahl der Pakete die Sie installieren wollen zu,
sondern auch welche Funktionen ein Paket unterstützen soll. Wenn Sie OpenGL
nicht benötigen, warum sollten Sie sich die Mühe machen OpenGL zu installieren
und OpenGL-Unterstützung in die meisten Ihrer Pakete einzubauen? Wenn Sie KDE
nicht benutzen wollen, warum sollten Sie sich die Mühe machen Pakete mit
KDE-Unterstützung zu kompilieren, wenn diese Pakete auch ohne einwandfrei
funktionieren?
Um den Benutzern bei der Entscheidung zu helfen, was installiert/aktiviert
werden soll und was nicht, wollen wir, dass der Benutzer seine Umgebung auf
eine einfache Weise spezifiziert. Dies zwingt den Benutzer dazu zu entscheiden,
was er wirklich will und vereinfachtt den Prozess für Portage, unser
Paketmanagementsystem, sinnvolle Entscheidungen zu treffen.
Definition eines USE-Flag
Geben Sie die USE-Flags ein. Solch ein Flag ist ein Schlüsselwort das
Unterstützungs- und Abhängigkeitsinformationen für ein bestimmtes Konzept
beinhaltet. Wenn Sie ein bestimmtes USE-Flag definieren wird Portage wissen,
dass Sie Unterstützung für das gewählte Schlüsselwort wollen. Natürlich
verändert dies auch die Abhängigkeitsinformationen für ein Paket.
Schauen wir uns ein spezifisches Beispiel an: das kde Schlüsselwort.
Wenn Sie dieses Schlüsselwort nicht in Ihrer USE Variable haben, werden
alle Pakte die optionale KDE Unterstützung haben ohne KDE
Unterstützung kompiliert. Alle Pakete die eine optionale KDE Abhängigkeit
haben werden installiert, ohne dass die KDE Bibliotheken (als
Abhängigkeit) installiert werden. Wenn Sie das kde Schlüsselwort
verwendet haben, dann werden diese Pakete mit KDE Unterstützung
kompiliert und die KDE Bibliotheken werden als Abhängigkeit installiert.
Dadurch, dass Sie das Schlüsselwort korrekt definieren, erhalten Sie ein System
spezifisch an Ihre Bedürfnisse angepasst.
Welche USE-Flags gibt es?
Es gibt zwei Arten von USE-Flags: globale und lokale USE-Flags.
-
Ein globales USE-Flag wird von vielen Paketen systemweit benutzt.
Dies ist was die meisten Menschen als ein USE-Flag ansehen.
-
Ein lokales USE-Flag wird von einem einzelnen Paket verwendet um
Entscheidungen spezifisch für ein Paket zu treffen.
Eine Liste von allen verfügbaren globalen USE-Flags findet man Online oder lokal in
/usr/portage/profiles/use.desc.
Eine Liste verfügbarer lokaler USE-Flags finden Sie lokal in
/usr/portage/profiles/use.local.desc.
2.b. Benutzung von USE-Flags
Deklarieren von ständigen USE-Flags
In der Hoffnung, dass Sie überzeugt sind von der Wichtigkeit von USE-Flags,
werden wir Sie nun informieren wie man USE-Flags deklariert.
Wie vorher erwähnt, werden alle USE-Flags innerhalb der USE Variable
deklariert. Um es für die Benutzer einfach zu machen USE-Flags zu suchen und
auszuwählen, geben wir schon eine Standardeinstellung für USE vor. Diese
Einstellung ist eine Sammlung von USE-Flags, von denen wir glauben, dass sie
häufig von Gentoo Benutzern verwendet werden. Diese Standardeinstellung ist
deklariert in der make.defaults Dateien die Teil Ihres Profils
sind.
Das Profil, auf das Ihr System hört, wird ausgewiesen vom
/etc/portage/make.profile Symlink. Jedes Profil funktioniert
aufbauend auf einem anderen, größeren Profil. Das Endergebnis ist daher die
Summe aller Profile. Das Hauptprofil ist das base Profil
(/usr/portage/profiles/base).
Lassen Sie uns einen Blick auf die Standardeinstellung für das 13.0 Profil
werfen:
Befehlsauflistung 2.1: Kulmulative make.defaults USE-Variable für das 13.0 Profil |
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"
|
Wie Sie sehen können, enthält diese Variable schon eine ziemlich große Anzahl
von Schlüsselwörtern. Verändern Sie jegliche make.defaults Dateien
nicht um die USE Variable an Ihre Bedürfnisse anzupassen:
Veränderungen in dieser Datei werden überschrieben wenn Sie ein Update von
Portage durchführen!
Sie ändern diese Standardeinstellung durch Hinzufügen oder Entfernen von
Schlüsselwörtern zur USE-Variable. Dies geschieht global durch die Definierung
der USE Variable in /etc/portage/make.conf. In dieser
Variable fügen Sie die zusätzlichen USE-Flags hinzu, die Sie benötigen oder
entfernen die USE-Flags, die Sie nicht wollen. Das Letztere geschieht durch das
Vorsetzen eines Minuszeichens ("-") vor das Schlüsselwort.
Zum Beispiel wenn Unterstützung für KDE und QT entfernt werden soll aber
Unterstützung für ldap hinzugefügt werden soll, kann USE wie folgt in
/etc/portage/make.conf definiert werden:
Befehlsauflistung 2.2: Eine Beispielseinstellung für USE in /etc/portage/make.conf |
USE="-kde -qt4 ldap"
|
Deklarieren von USE-Flags für einzelne Pakete
Machmal möchten Sie ein bestimmtes USE-Flag für ein (oder einige) Anwendungen
deklarieren, aber nicht systemweit. Um dies zu ermöglichen müssen Sie zunächst
das /etc/portage Verzeichnis erstellen (sofern es noch nicht
existiert) und die Datei /etc/portage/package.use editieren. Dies
ist normalerweise nur eine Datei, kann aber auch ein Verzeichnis sein. Weitere
Informationen finden Sie in man portage. Das folgende Beispiel setzt
voraus dass package.use nur eine Datei ist.
Wenn Sie zum Beispiel berkdb Unterstützung nicht global, aber für
mysql möchten fügen Sie folgendes ein:
Befehlsauflistung 2.3: /etc/portage/package.use Beispiel 1 |
dev-db/mysql berkdb
|
Sie können natürlich ein USE-Flag für ein Ebuild explizit deaktivieren.
Wenn Sie zum Beispiel keine java Unterstützung in PHP benötigen:
Befehlsauflistung 2.4: /etc/portage/package.use Beispiel 2 |
dev-php/php -java
|
Deklarieren von temporären USE-Flags
Manchmal wollen Sie eine bestimmte USE-Einstellung nur einmal benutzen. Anstatt
das /etc/portage/make.conf zweimal editiert wird (um die
Veränderungen in USE anzuwenden und wieder zu entfernen) können Sie einfach die
USE-Variable als Umgebungsvariable definieren. Behalten Sie im Gedächtnis, dass
wenn Sie die jeweilige Anwendung re-kompilieren oder aktualisieren (entweder
explizit oder als Teil eines Systemupdate) diese Änderung verloren geht.
Als ein Beispiel werden wir, während der Installation von Seamonkey, temporär
Java von den USE-Einstellungen entfernen.
Befehlsauflistung 2.5: USE als Umgebungsvariable verwenden |
# USE="-java" emerge seamonkey
|
Reihenfolge
Natürlich gibt es eine gewisse Präzedenz darüber welche Einstellung Priorität
hat über die USE-Einstellungen. Sie wollen schließlich nicht
USE="-java" deklarieren nur um zu sehen, dass java weiterhin
verwendet wird wegen einer Einstellung, die eine höhere Priorität hat.
Präferenz für die USE-Einstellung ist nach Priorität geordnet (die Erste hat
die niedrigste Priorität):
-
Standardeinstellung für USE deklariert in den make.defaults
Dateien, die Teil Ihres Profils sind.
-
Benutzerdefinierte USE-Einstellungen in /etc/portage/make.conf
-
Benutzerdefinierte USE-Einstellungen in
/etc/portage/package.use
-
Benutzerdefinierte USE-Einstellungen definiert als Umgebungsvariable
Um die endgültige USE Einstellungen zu sehen, so wie sie von Portage
gesehen wird, führen Sie emerge --info aus. Dies listet alle relevanten
Variablen (inklusive der USE Variable) mit dem von Portage verwendeten
Inhalt auf.
Befehlsauflistung 2.6: Ausführen von emerge --info |
# emerge --info
|
Das gesamte System an neue USE-Flags anpassen
Wenn Sie Ihre USE-Flags geändert haben und nun Ihr gesamtes System dazu bringen
möchten die neuen USE-Flags zu nutzen, benutzen Sie die --newuse Option
von emerge:
Befehlsauflistung 2.7: Neuerstellung Ihres gesamten System |
# emerge --update --newuse world
|
Führen Sie nun Portages depclean aus, um Abhängigkeiten aus Ihrem alten System,
die nun durch andere USE-Flags ersetzt wurden, zu löschen.
Warnung:
Das Ausführen von emerge depclean ist eine gefährliche Operation und
sollte mit dementsprechender Vorsicht vorgenommen werden. Kontrollieren Sie die
angezeigte Liste mit zu löschenden Paketen lieber zweimal um so sicherzustellen,
dass keine notwendigen Pakete gelöscht werden. Im folgenden Beispiel fügen wir
den -p Switch hinzu, um nur eine Liste unbenötigter Pakete angezeigt zu
bekommen, ohne diese jedoch gleichzeitig auch zu entfernen.
|
Befehlsauflistung 2.8: Entfernen unbenötigter Pakete |
# emerge -p --depclean
|
Wenn depclean beendet ist, führen Sie revdep-rebuild aus, um die
Anwendungen, die dynamisch gegen "Shared Objects" der deinstallierten
Pakete gelinkt sind, neu zu kompilieren. revdev-rebuild ist Teil des
Pakets gentoolkit; vergessen Sie nicht dieses zuvor zu installieren.
Befehlsauflistung 2.9: Ausführen von revdep-rebuild |
# revdep-rebuild
|
Nachdem Sie dies alles ausgeführt haben, benutzt Ihr System die neuen USE-Flag
Einstellungen.
2.c. Paket spezifische USE-Flags
Betrachten vorhandener USE-Flags
Nehmen wir als Beispiel seamonkey: Auf welche USE-Flags hört es? Um dies
herauszufinden benutzen wir emerge mit der --pretend und der
--verbose Option:
Befehlsauflistung 3.1: Betrachten der benutzten USE-Flags |
# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB
|
emerge ist nicht das einzige Hifsmittel für diesen Job. In der Tat haben
wir ein Werkzeug, ausgelegt auf Paketinformationen, genannt equery,
welches im gentoolkit Paket enthalten ist. Installieren Sie zunächst
gentoolkit:
Befehlsauflistung 3.2: Installieren von gentoolkit |
# emerge gentoolkit
|
Führen Sie nun equery mit dem uses Argument aus um die USE-Flags
eines bestimmten Paketes zu betrachten. Zum Beispiel für das gnumeric
Paket:
Befehlsauflistung 3.3: Benutzung von equery zur Betrachtung verwendeter USE-Flags |
# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output.
If you want to get meaningful backtraces see
http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + gnome : Adds GNOME support
+ + python : Adds support/bindings for the Python language
- - static : !!do not set this during bootstrap!! Causes binaries to be
statically linked instead of dynamically
|
3. Portage Features
3.a. Portage Features
Portage hat einige zusätzliche Features, die das Gentoo Erlebnis noch ein wenig
besser machen. Viele dieser Features beruhen auf Software Tools um die
Performance, Funktionssicherheit, Sicherheit, etc. zu verbessern.
Um diese Portage Features zu aktivieren oder deaktivieren müssen Sie die
FEATURES Variable in /etc/portage/make.conf anpassen. Diese
Variable enthält verschiedene Feature Keywords, welche durch Leerzeichen
getrennt werden.In vielen Fällen müssen Sie ebenfalls zusätzliche Software
installieren.
Nicht alle Features, die Portage anbietet werden hier aufgelistet. Für einen
vollständigen Überblick schauen Sie in die make.conf Manpage:
Befehlsauflistung 1.1: Lesen der make.conf Manpage |
$ man make.conf
|
Um herauszufinden, welche FEATURES per default aktiviert sind führen Sie
emerge --info aus und suchen Sie nach der FEATURES Variable, oder filtern
diese aus:
Befehlsauflistung 1.2: Herausfinden welche FEATURES bereits aktiv sind |
$ emerge --info | grep FEATURES
|
3.b. Distributed Compiling
Benutzung von distcc
distcc ist ein Programm das "Kompilierungen" über mehrere, nicht
notwendigerweise identische Computer, über ein Netzwerk verteilt. Der
distcc - Client sendet alle notwendigen Informationen zu den
erreichbaren distcc - Servern (die den distccd laufen haben), so
dass diese Teile des Quellcodes vom Client kompilieren können. Als Resultat
wird Zeit beim Kompilieren eingespart.
Sie finden tiefer gehende Informationen über distcc (und wie Sie es bei
Gentoo zum Laufen bringen) in unserer Gentoo
distcc Dokumentation.
distcc installieren
Distcc bringt einen grafischen Monitor mit, der Sie über alle Aufgaben
informiert, die der Computer zum Kompilieren wegsendet. Falls Sie
Gnome benutzen, setzen Sie 'gnome' in Ihrer USE-Variable.
Wenn Sie nicht Gnome nutzen, den Monitor aber trotzdem haben
wollen, sollten Sie 'gtk' in Ihrer USE-Variable setzen.
Befehlsauflistung 2.1: distcc installieren |
# emerge distcc
|
Unterstützung für Portage aktivieren
Fügen Sie distcc der FEATURES Variable in
/etc/portage/make.conf hinzu. Anschließen editieren Sie die
MAKEOPTS Variable entsprechend Ihren Wünschen. In den meisten Fällen ist es
hinreichend "-jX" anzugeben, wobei X der Nummer der CPUs die den distccd
ausführen entsprechen (inklusive dem aktuellen Host) plus eins, möglicherweise
haben Sie mit anderen Werten bessere Ergebnisse.
Nun rufen Sie distcc-config auf und tragen eine Liste der verfügbaren
Server ein. Als einfaches Beispiel nehmen wir einmal an, dass die verfügbaren
distcc Server 192.168.1.102 (der momentane Host),
192.168.1.103 und 192.168.1.104 (zwei "entfernte" Hosts) sind:
Befehlsauflistung 2.2: distcc für die Nutzung dreier verfügbarer distcc Server konfigurieren |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Vergessen Sie bitte nicht, auch den distccd - Dämonen zu starten:
Befehlsauflistung 2.3: distcc Dämonen starten |
# rc-update add distccd default
# /etc/init.d/distccd start
|
3.c. Caching Compilation
Über ccache
ccache ist ein schneller Compiler - Cache. Wenn Sie ein Programm
kompilieren, werden Zwischenresultate gecacht, so dass bei einer Rekompilierung
des Programms die Zeit zum Kompilieren viel kürzer ist. Wenn Sie ccache zum
ersten Mal verwenden, wird es viel langsamer sein als eine normale Kompilierung.
Darauffolgende Rekompilierungen sollten schneller sein. ccache ist nur
hilfreich, wenn Sie die gleiche Applikation sehr oft rekompilieren müssen; es
ist daher hauptsächlich nur für Softwareentwickler nützlich.
Falls Sie an den Vor- und Nachteilen von ccache interessiert sind,
besuchen Sie bitte die ccache
Homepage.
Warnung:
ccache ist bekannt dafür, zahlreiche Kompilierungsfehler zu verursachen.
Ab und zu behält ccache veraltete Codeobjekte oder korrupte Dateien bei, was
dazu führt, dass Pakete sich nicht emergen lassen. Falls das passiert (wenn Sie
Fehler wie z.B. "File not recognized: File truncated" erhalten), versuchen Sie
die Applikation mit deaktiviertem ccache (FEATURES="-ccache" in der
/etc/portage/make.conf) zu rekompilieren bevor Sie einen Bug
eröffnen. Falls Sie keine Softwareentwicklung betreiben, aktivieren Sie
ccache nicht.
|
ccache installieren
Zur Installation von ccache führen Sie emerge ccache aus:
Befehlsauflistung 3.1: ccache installieren |
# emerge ccache
|
Unterstützung für Portage aktivieren
Öffnen Sie /etc/portage/make.conf und fügen Sie ccache zu
FEATURES hinzu. Anschließend erstellen Sie eine neue Variable namens
CCACHE_SIZE und setzen diese auf "2G":
Befehlsauflistung 3.2: CCACHE_SIZE in /etc/portage/make.conf editieren |
CCACHE_SIZE="2G"
|
Um zu schauen ob ccache funktioniert, fragen Sie ccache nach seinen
Statistiken. Weil Portage ein anderes Home-Verzeichnis verwendet, müssen Sie
auch die CCACHE_DIR Variable setzen:
Befehlsauflistung 3.3: Ccache - Statistiken anschauen |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
Der /var/tmp/ccache Pfad ist das Standard ccache Home-Verzeichnis
von Portage. Wenn Sie diese Einstellungen ändern möchten, können Sie die
CCACHE_DIR Variable in /etc/portage/make.conf setzen.
Wenn Sie aber ccache ausführen würden, würde es den Standardpfad
${HOME}/.ccache verwenden. Deswegen mussten Sie auch die
CCACHE_DIR Variable setzen, als Sie nach den (Portage)
ccache-Statistiken fragten.
Nutzung von ccache außerhalb von Portage
Wenn Sie ccache für Kompilierungen außerhalb von Portage nutzen möchten fügen
Sie /usr/lib/ccache/bin dem Beginn der PATH Variable hinzu (vor
/usr/bin). Dies kann durch Editieren von
.bash_profile in Ihrem Home-Verzeichnis erreicht werden. Die
Verwendung von .bash_profile ist eine Möglichkeit Ihre
PATH-Variable zu definieren.
Befehlsauflistung 3.4: Editieren von .bash_profile |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
3.d. Binäre Pakete
Binärpakete erstellen
Portage unterstützt die Installation von vorkompilierten Paketen. Obwohl Gentoo
keine vorkompilierten Pakete anbietet (mit Ausnahme der GRP Schnappschüsse) ist
die Funktion vollständig implementiert.
Um ein vorkompiliertes Paket zu erstellen können Sie quickpg benutzen,
sofern das Programm bereits in Ihrem System installiert ist oder Sie benutzen
die --buildpkg oder --buildpkgonly Optionen.
Falls Sie wollen, dass Portage dies standardmäßig macht, sollten Sie das
Schlüsselword buildpkg in der FEATURES Variablen setzen.
Erweiterte Unterstützung zum Erstellen von vorkompilierten Paketen finden Sie in
catalyst. Für weitere Informationen zu catalyst lesen Sie bitte
die Catalyst
FAQ.
Vorkompilierte Pakete Installieren
Auch wenn Gentoo keine anbietet, Sie können ein zentrales Repository anlegen, in
dem Sie vorkompilierte Pakete ablegen. Wenn Sie dieses Repository nutzen möchten
müssen Sie Portage mit der PORTAGE_BINHOST Variable den Ort des Repository
bekannt machen. Wenn sich die Pakete zum Beispiel auf ftp://buildhost/gentoo
befinden:
Befehlsauflistung 4.1: Setzen der PORTAGE_BINHOST Variable in /etc/portage/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
Wenn Sie vorkompilierte Pakete installieren wollen fügen Sie --getbinpkg
Option an das entsprechende emerge Kommando (welches ebenfalls --usepkg
enthalten muss) an. Die erste Option weist Portage an ein Binärpaket
herunterzuladen, die zweite zuerst zu versuchen ein Binärpaket zu installieren,
bevor Sourcen heruntergeladen und kompiliert werden.
Um zum Beispiel gnumeric mit vorkompilierten Paketen zu installieren:
Befehlsauflistung 4.2: Installation des vorkompilierten gnumeric Pakets |
# emerge --usepkg --getbinpkg gnumeric
|
Weitere Informationen zur Binärpaket Funktionalität von emerge finden Sie
in der emerge Manpage:
Befehlsauflistung 4.3: Lesen der emerge Manpage |
$ man emerge
|
3.e. Dateien abrufen
Paralleler Abruf
Wenn Sie eine Serie von Paketen mit emerge isntallieren kann Portage die
Quelldateien für das nächste Paket in der Liste schon herunterladen, während es
noch ein anderes Paket kompiliert, und dadurch die Kompilierzeit reduzieren. Um
von dieser Fähigkeit Gebrauch zu machen, fügen Sie "parallel-fetch" zu Ihren
FEATURES hinzu. Beachten Sie, dass diese mittlerweile standardmäßig aktiv ist
und Sie sie nicht ausdrücklich aktivieren müssen.
Userfetch
Wenn Portage als root ausgeführt wird, erlaubt FEATURES="userfetch" Portage das
Senken der root-Privilegien während es Paketquellen abruft. Dies verbessert die
Sicherheit ein wenig.
3.f. Beziehen von validierten Portage-Tree-Snapshots
Als Administrator können Sie sich dafür entscheiden, Ihren lokalen Portage-Tree
nur mit einem vom Gentoo Infrastruktur-Team veröffentlichten, kryptographisch
validierten Snapshot des Portage-Trees zu aktualisieren. Das stellt sicher, dass
kein böswilliger rsync-Mirror ungewollten Code oder ungewollte Pakete zu dem
Tree hinzufügt, den Sie herunterladen.
Um Portage zu konfigurieren, erstellen Sie zunächst einen Trust-Store, in den
Sie die Schlüssel der Gentoo-Infrastruktur, die für das Signieren des
Portage-Trees verantwortlich sind, herunterladen und akzeptieren. Wenn Sie
möchten, können Sie diesen GPG-Schlüssel mit den entsprechenden Richtlinien
validieren (z.B. durch Überprüfen des Schlüssel-Fingerabdrucks). Sie finden die
Liste der vom Release-Engineering-Team verwendetn GPG-Schlüssel auf ihrer Projektseite.
Befehlsauflistung 6.1: Erstellen eines Trust-Stores für Portage |
# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust
|
Bearbeiten Sie nun /etc/portage/make.conf und aktivieren Sie die
Unterstützung für das Validieren der signierten Snapshots des Portage-Trees
(durch Verwendung von FEATURES="webrsync-gpg") und schalten Sie das
Aktualisieren des Portage-Trees mit der regulären emerge --sync Methode
ab.
Befehlsauflistung 8.4: Aktualisieren von Portage für Validierung signierter Trees |
FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""
|
Das wär's. Das nächste Mal, wenn Sie emerge-webrsync verwenden, werden
nur die Snapshots mit einer gültigen Signatur auf Ihrem Dateisystem extrahiert.
4. Initskripte
4.a. Runlevel
Der Startvorgang
Wenn Sie Ihr System booten, werden Sie sehr viel Text auf dem Bildschirm
vorbeifließen sehen. Genauer betrachtet, ist es immer derselbe Text nach einem
Neustart. Diese Auflistung aller Aktionen beim Startvorgang wird
Bootsequenz genannt und ist (mehr oder weniger) fest vorgeschrieben.
Zuerst lädt Ihr Bootloader das Kernel-Image, welches Sie in der
Konfigurationsdatei Ihres Bootloaders angegeben haben, in den Arbeitsspeicher.
Dann teilt er der CPU mit, den Kernel zu starten. Wenn dieser geladen ist und
läuft, initialisiert er alle kernel-spezifischen Strukturen und Aufgaben. Dann
wird der init Prozess gestartet.
Dieser Prozess stellt sicher, dass auch alle Dateisysteme (die in
/etc/fstab angegeben wurden) gemounted und benutzt
werden können. Dann führt er mehrere Skripte in /etc/init.d
aus, welche die verschiedenen Dienste starten, die Sie für einen
erfolgreichen Bootvorgang benötigen.
Schließlich, wenn alle Skripte ausgeführt wurden, aktiviert init die
Terminals (in den meisten Fällen virtuelle Konsolen, die hinter Alt-F1,
Alt-F2, etc. versteckt sind) mit einem speziellen Prozess namens
getty. Dieser Prozess stellt dann sicher, dass Sie sich über diese
Terminals mit dem Befehl login einloggen können.
Initskripte
init führt die Skripte in /etc/init.d aber nicht willkürlich
aus. Nur die Skripte aus /etc/init.d, die es ausführen soll,
werden auch ausgeführt. Welche das sind, steht in
/etc/runlevels.
Zuerst werden alle Skripte aus /etc/init.d, die einen symbolischen
Link in /etc/runlevels/boot besitzen, von init gestartet.
Normalerweise geschieht dies in alphabetischer Reihenfolge, aber einige
Skripte müssen zunächst Abhängigkeiten auflösen, so dass erst andere
Skripte gestaret sein müssen, bevor es selbst ausgeführt werden kann.
Wenn alle Skripte aus /etc/runlevels/boot ausgeführt wurden,
startet init diejenigen Skripte, die einen symbolischen Link in
/etc/runlevels/default besitzen. Auch hier wird zunächst die
alphabetische Reihenfolge beachtet, es sei denn, dass auch hier wieder
Abhängigkeiten aufgelöst werden müssen, damit eine erfolgreiche Startsequenz
gewährleistet ist.
Wie Init arbeitet
Natürlich entscheidet init das alles nicht alleine. Es benötigt eine
Konfigurationsdatei, die enthält, welche Aktion ausgeführt werden soll. Diese
Datei heißt /etc/inittab.
Wenn Sie sich an die Bootsequenz erinnern, die wir Ihnen eben erklärt
hatten, werden Sie sich daran erinnern, dass die erste Aktion von init
das Mounten aller Dateisysteme war. Dies ist in der folgenden Zeile aus
/etc/inittab ersichtlich:
Befehlsauflistung 1.1: Zeile zur Systeminitialisierung in /etc/inittab |
si::sysinit:/sbin/rc sysinit
|
Diese Zeile teilt init mit, dass es /sbin/rc sysinit ausführen
muss, um das System zu initialisieren. Das /sbin/rc Skript stellt
dann die Initialisierung sicher. Sie könnten nun sagen, dass init ja
eigentlich nicht viel macht -- es delegiert die Aufgabe der
Systeminitialisierung an einen anderen Prozess.
Dann führt init alle Skripte, die einen symbolischen Link in
/etc/runlevels/boot haben aus. Dies wird in folgender Zeile
ersichtlich:
Befehlsauflistung 1.2: Systeminitialisierung, Fortsetzung |
rc::bootwait:/sbin/rc boot
|
Wieder übernimmt das rc Skript die notwendigen Aufgaben. Beachten Sie,
dass die Option, die rc (boot) übergeben wird, denselben Namen
besitzt, wie das verwendete Unterverzeichnis in /etc/runlevels.
Nun überprüft init seine Konfigurationsdatei, um zu sehen, welchen
Runlevel es ausführen sollte. Um dies zu entscheiden, ließt es die
folgende Zeile aus /etc/inittab:
Befehlsauflistung 1.3: Die initdefault Zeile |
id:3:initdefault:
|
In diesem Fall (welchen die meisten Gentoo-User nutzen werden) ist die
runlevel ID 3. Mit Hilfe dieser Information überprüft init, was
alles zum Start von Runlevel 3 ausgeführt werden muss:
Befehlsauflistung 1.4: Runlevel Definitionen |
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
|
Die Zeilen, die den Level 3 definieren, werden wiederum vom rc Skript
verwendet, um die Dienste (nun mit dem Argument default) zu starten.
Beachten Sie auch hier, dass das Argument von rc wieder denselben
Namen wie das verwendete Unterverzeichnis von /etc/runlevels
hat.
Wenn rc fertig ist, entscheidet init, welche Konsole es
aktivieren sollte und welche Befehle auf jeder Konsole benutzt werden
müssen:
Befehlsauflistung 1.5: Die Definition der virtuellen Konsolen |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
|
Was ist ein Runlevel?
Sie haben gesehen, dass init ein Nummernschema benutzt, um zu
entscheiden, welchen Runlevel es aktivieren soll. Ein Runlevel
ist ein bestimmter Zustand, in dem sich Ihr System befindet und der eine
Ansammlung von Skripten (Runlevel-Skripte oder Initskripte)
besitzt, die beim Betreten oder Verlassen eines Runlevels ausgeführt
werden müssen.
In Gentoo sind sieben Runlevel definiert: drei interne Runlevel und vier, die
der Benutzer definieren kann. Die internen Runlevel sind sysinit,
shutdown und reboot und machen genau das, was die
Namen vermuten lassen: initialisieren das System, fahren es herunter und
führen einen Reboot durch.
Die benutzerdefinierten Runlevel sind diejenigen, mit einem Unterverzeichnis
in /etc/runlevels: boot, default,
nonetwork und single. Der boot
Runlevel startet alle notwendigen Dienste, die die anderen Runlevel benötigen.
Die verbleibenden drei Runlevel unterscheiden sich in den Diensten, die sie
starten: default wird genutzt, um die täglichen Operationen zu
erledigen, nonetwork nur im Falle, das keine Netzwerkverbindung
gebraucht wird und single, wenn das System repariert werden
muss.
Mit den Initskripten arbeiten
Die Skripte, die den rc Prozess starten, werden Initskripte
genannt. Jedes Skript in /etc/init.d kann mit den Argumenten
start, stop, restart, pause, zap,
status, ineed, iuse, needsme, usesme
oder broken ausgeführt werden.
Um einen Dienst zu starten oder zu stoppen (und die davon abhängigen Dienste),
sollte start, stop und restart benutzt werden:
Befehlsauflistung 1.6: Postfix starten |
# /etc/init.d/postfix start
|
Notiz:
Nur Dienste, die den gegebenen Dienst benötigen werden gestoppt oder
neu gestartet. Alle anderen abhängigen Dienste (die den Dienst nutzen,
aber nicht benötigen) werden nicht berührt.
|
Falls Sie einen Dienst stoppen wollen, aber nicht die davon abhängigen Dienste,
können Sie das pause Argument nutzen:
Befehlsauflistung 1.7: Postfix stoppen, ohne die davon abhängigen Dienste zu berühren |
# /etc/init.d/postfix pause
|
Falls Sie den Status eines Dienstes (started, stopped, paused, ...) sehen
möchten, können Sie das status Argument nutzen:
Befehlsauflistung 1.8: Statusinformationen über Postfix |
# /etc/init.d/postfix status
|
Falls die Statusinformation Ihnen mitteilt, dass der Dienst gestartet wurde,
Sie aber wissen, dass dies nicht der Fall ist, können Sie die Statusinformation
mit dem zap Argument zu "stopped" zurücksetzen:
Befehlsauflistung 1.9: Statusinformation von Postfix zurücksetzen |
# /etc/init.d/postfix zap
|
Um auch nachzufragen, was von dem Dienst alles abhängt, können sie die
Argumente iuse oder ineed nutzen. Mit ineed wird alles
angezeigt, was zum ordnungsgemäßen Funktionieren des Dienstes nötig ist.
iuse andererseits zeigt alle Dienste an, die von diesem Dienst benutzt
werden können, aber nicht notwendig zur ordnungsgemäßen Funktion des
Dienstes sind.
Befehlsauflistung 1.10: Anforderung einer Liste der notwendigen Dienste, von denen Postfix abhängt |
# /etc/init.d/postfix ineed
|
Ähnlich ist die Vorgehensweise, wenn Sie nach allen Diensten fragen wollen, die
einen bestimmten Dienst benötigen (needsme) oder ihn benutzen
(usesme):
Befehlsauflistung 1.11: Anforderung einer Liste aller Dienste, die Postfix benötigen |
# /etc/init.d/postfix needsme
|
Schließlich können Sie noch nachfragen, welche Abhängigkeiten der Dienst
benötigt, die aber noch fehlen:
Befehlsauflistung 1.12: Anforderung einer Liste aller fehlenden Abhängigkeiten für Postfix |
# /etc/init.d/postfix broken
|
4.b. Mit rc-update arbeiten
Was ist rc-update?
Das Init-System von Gentoo benutzt einen Abhängigkeitsbaum um zu
entscheiden, welcher Dienst zuerst gestartet werden muss. Da dies eine
ermüdende Aufgabe ist, die wir unseren Usern nicht unbedingt zumuten wollten
"von Hand" auszuführen, haben wir einige Tools erstellt, die die Administration
der Runlevel und Initskripte erleichtert.
Mit rc-update können Sie Initskripte zu einem Runlevel hinzufügen
und wieder entfernen. Das rc-update Tool wird dann das depscan.sh
Skript automatisch dazu veranlassen, den Abhängigkeitsbaum anzupassen.
Hinzufügen und Entfernen von Diensten
Sie haben bereits während der Installation von Gentoo Initskripte zum
"default" Runlevel hinzugefügt. Zu diesem Zeitpunkt hatten Sie aber
wahrscheinlich noch keine Ahnung, für was "default" steht, nun sollten Sie
es aber wissen. Das rc-update Skript benötigt ein zweites Argument,
welches eine "Aktion" definiert: add, del oder show.
Um ein Initskript hinzuzufügen oder zu entfernen, übergeben Sie
rc-update einfach add oder del als Argument,
gefolgt von dem Initskript und dem Runlevel. Zum Beispiel:
Befehlsauflistung 2.1: Entfernen von Postfix aus dem Runlevel default |
# rc-update del postfix default
|
Der Befehl rc-update -v show wird Ihnen alle verfügbaren
Initskripte und Runlevel, in denen diese ausgeführt werden, zeigen:
Befehlsauflistung 2.2: Informationen über Initskripte erhalten |
# rc-update -v show
|
Sie können auch rc-update show ausführen (ohne -v) um nur die
aktivierten Initskripte und ihre Runlevel anzuzeigen.
4.c. Dienste konfigurieren
Warum zusätzliche Konfigurationen?
Initskripte können recht komplex sein. Es ist daher nicht unbedingt von
Vorteil, wenn User Initskripte direkt bearbeiten könnten, da es die Sache
nur fehleranfälliger machen würde. Es ist aber auch wichtig, dass
Konfigurationen gemacht werden können. Zum Beispiel, wenn Sie einem
Dienst mehrere Optionen mitgeben wollten:
Ein zweiter Grund, diese Konfiguration außerhalb der Initskripte zu haben
ist, ein Update eines Initskriptes durchführen zu können, ohne zu
befürchten, die Konfigurationen dabei rückgängig zu machen.
Das /etc/conf.d Verzeichnis
Gentoo stellt einen einfachen Weg zur Konfiguration eines solchen
Services zur Verfügung: Jedes Initskript, das konfiguriert werden kann, hat
eine Datei in /etc/conf.d. Zum Beispiel hat das Apache2
Initskript (/etc/init.d/apache2 genannt) eine Konfigurationsdatei
namens /etc/conf.d/apache2, die die Optionen enthalten kann,
die Sie dem Apache 2 Server beim Start mitgeben wollen:
Befehlsauflistung 3.1: Variablen, definiert in /etc/conf.d/apache2 |
APACHE2_OPTS="-D PHP5"
|
Solch eine Konfigurationsdatei enthält nur Variablen (genau wie in
/etc/portage/make.conf), was die Konfiguration eines Dienstes
sehr vereinfacht. Es erlaubt uns auch, mehr Informationen (als Kommentare)
über die Variablen zu geben.
4.d. Initskripte schreiben
Muss ich das?
Nein. Ein Initskript zu schreiben ist normalerweise nicht notwendig, da
Gentoo fertige Initskripte für alle bereitgestellten Dienste liefert. Wie dem
auch sei, haben Sie vielleicht einen Dienst, ohne Portage zu nutzen
installiert. In diesem Fall müssen sie wahrscheinlich ein eigenes Initskript
schreiben.
Benutzen Sie das von einem Dienst bereitgestellte Initskript nicht, es sei
denn, es ist ausdrücklich für Gentoo geschrieben: Die Initskripte von
Gentoo sind nicht mit den Initskripten anderer Distributionen kompatibel!
Layout
Das grundlegende Layout eines Initskriptes ist wie folgt beschrieben.
Befehlsauflistung 4.1: Grundlegendes Layout eines Initskriptes |
#!/sbin/runscript
depend() {
}
start() {
}
stop() {
}
|
Jedes Initskript muss eine start Funktion definieren. Alle
anderen Abschnitte sind optional.
Abhängigkeiten
Es gibt zwei Abhängigkeits-artige Einstellungen, die Sie definieren können, die
das Starten und die Reihenfolge der Init-Skripte beeinflussen: use und
need. Von diesen abgesehen gibt es noch zwei Methoden, die die
Reihenfolge beeinflussen: before und after. Diese letzten beiden
sind keine eigentlichen Abhängigkeiten - durch sie schlägt das Init-Skript nicht
fehl, falls das angegebene Init-Skript nicht zum Starten vorgesehen ist (oder es
Probleme mit dem Starten gibt).
-
Die Angabe use informiert das Init-System, dass das Init-Skript
Funktionalität des angegebenen Skripts nutzt, aber nicht direkt davon
abhängt. Gute Beispiele sind use logger und use dns. Wenn
diese Dienste verfügbar sind, können sie für einen guten Zweck verwendet
werden, aber auch wenn Sie keinen Logger oder DNS-Server haben, wird der
Dienst trotzdem funktionieren. Falls die angegebenen Dienste existieren,
werden sie vor dem Skript, das sie benutzt, gestartet.
-
Die Angabe need ist eine harte Abhängigkeit. Sie bedeutet, dass das
Skript, das ein anderes Skript benötigt, nicht startet, bevor das
andere Skript erfolgreich gestartet hat. Ferner wird dieses Skript
neu gestartet, wenn das andere Skript neu gestartet wird.
-
Wenn before genutzt wird, wird das Skript vor dem angegebenen Skript
gestartet, falls das angegebene Teil des Init-Levels ist.
Beispielsweise wird ein Init-Skript namens xdm, das before
alsasound definiert, vor dem Skript alsasound starten,
aber nur, wenn alsasound auch im gleichen Init-Level zum
Starten vorgemerkt ist. Falls alsasound nicht zum Starten
vorgemerkt ist, dann hat diese Einstellung keine Auswirkungen und
xdm wird gestartet, wann auch immer das Init-System es für am
sinnvollsten hält.
-
Genauso informiert after das Init-System darüber, dass das gegebene
Skript nach dem angegebenen Skript gestartet werden soll, falls das
angegebene Skript Teil des Init-Levels ist. Falls nicht, hat die Einstellung
keine Auswirkungen und das Skript wird gestartet, wann auch immer das
Init-System es für am sinnvollsten hält.
Aus diesen Erklärungen sollte hervorgehen, dass need die einzige "wahre"
Abhängigkeitseinstellung ist, da sie bestimmt, ob das Skript gestartet wird oder
nicht. Alle anderen sind lediglich Hinweise für das Init-System, in welcher
Reihenfolge die Skripte gestartet werden können bzw. sollen.
Wenn Sie sich nun einige von Gentoos vielen Init-Skripten anschauen, werden Sie
merken, dass einige Abhängigkeiten auf Dinge haben, die keine Init-Skripte sind.
Diese "Dinge" nennen wir Virtuals.
Eine virtual Abhängigkeit stellt eine Abhängigkeit dar, die nicht nur
von diesem Dienst zur Verfügung gestellt wird. Ihr Initskript kann von einem
System-Protokollierdienst abhängen, aber es gibt ja bekanntlich mehrere davon
(metalogd, syslog-ng, sysklogd, ...). Da Sie ja nicht jeden einzelnen von
diesen brauchen (ein vernünftige System hat nicht jeden dieser
Protokollierer installiert und gestartet), stellen wir sicher, dass all diese
Dienste eine virtuelle Abhängigkeit bereitstellen.
Lassen Sie uns einen Blick auf die Abhängigkeitsinformationen des
Postfix-Dienstes werfen.
Befehlsauflistung 4.2: Abhängigkeitsinformationen zu Postfix |
depend() {
need net
use logger dns
provide mta
}
|
Wie Sie sehen können, der Postfix-Dienst:
-
benötigt die (virtual) net Abhängigkeit (die z.B. von
/etc/init.d/net.eth0 bereitgestellt wird)
-
nutzt die (virtual) logger Abhängigkeit (die z.B. von
/etc/init.d/syslog-ng bereitgestellt wird)
-
nutzt die (virtual) dns Abhängigkeit (die z.B. von
/etc/init.d/named bereitgestellt wird)
-
stellt die (virtual) mta Abhängigkeit (die allen Mail-Servern
gemein ist) zur Verfügung
Reihenfolge kontrollieren
Wie im vorherigen Abschnitt beschrieben, können Sie dem Init-System sagen, in
welcher Reihenfolge die Skripte gestartet (oder gestoppt) werden sollen. Diese
Reihenfolge wird durch die Abhängigkeitsangaben use und need
beeinflusst, aber auch durch die Reihenfolgenangaben before und
after. Da wir diese Angaben bereits erklärt haben, schauen wir uns
beispielhaft das Init-Skript des Dienstes Portmap an.
Befehlsauflistung 4.3: Die depend() Funktion im Portmap-Dienst |
depend() {
need net
before inetd
before xinetd
}
|
Sie können auch den "*" Ausdruck benutzen, um alle Dienste im selben Runlevel
zu erwischen, obwohl das nicht sehr ratsam ist.
Befehlsauflistung 4.4: Ein Initskript als erstes in einem Runlevel starten |
depend() {
before *
}
|
Wenn Ihr Dienst auf lokale Festplatten schreiben muss, wird er wahrscheinlich
localmount benötigen. Wenn er etwas in /var/run platziert,
wie ein Pidfile, dann sollte er nach bootmisc gestartet werden.
Befehlsauflistung 4.5: Beispiel der depend() Funktion |
depend() {
need localmount
after bootmisc
}
|
Standardfunktionen
Neben der depend() Funktionalität benötigen Sie vielleicht auch
die start Funktion. Diese enthält alle Befehle, die zum Starten Ihres
Dienstes notwendig sind. Es ist ratsam, die ebegin und eend
Funktionen zu nutzen, um dem User mitzuteilen, was passiert:
Befehlsauflistung 4.6: Beispiel der start() Funktion |
start() {
if [ "${RC_CMD}" = "restart" ];
then
fi
ebegin "Starten meines Dienstes"
start-stop-daemon --start --exec /pfad/zu/meinem_dienst \
--pidfile /pfad/zu/meinem_pidfile
eend $?
}
|
Sowohl --exec als auch --pidfile sollten in den Start- und
Stopp-Funktionen verwendet werden. Falls der der Dienst kein Pidfile erstellt
sollten Sie, wenn möglich, --make-pidfile verwenden. Sie sollten dies
aber testen um sicher zu sein. Verwenden Sie ansonsten kein Pidfile. Sie können
zudem --quiet zu den start-stop-daemon Optionen hinzufügen; dies
wird aber nicht empfohlen, solange der Dienst nicht extrem detailliert
berichtet. Die Verwendung von --quiet kann die Fehlersuche behindern,
wenn der Dienst nicht erfolgreich gestartet werden kann.
Eine weitere zu bemerkende Einstellung in obigem Beispiel ist das Prüfen des
Inhalts der Variable RC_CMD. Im Gegensatz zum alten Init-System
unterstützt das neuere System openrc keine Skript-spezifische
Restart-Funktionalität. Stattdessen muss das Skript den Inhalt der Variable
RC_CMD prüfen, um zu sehen, ob eine Funktion (sei es start() oder
stop()) als Teil eines Restarts aufgerufen wird oder nicht.
Notiz:
Stellen Sie sicher, dass --exec wirklich einen Dienst aufruft und nicht
nur ein Shell-Skript, welches den Dienst startet und dann beendet. Das ist die
Aufgabe des Initskripts.
|
Wenn Sie weitere Beispiele der start() Funktion benötigen, lesen Sie
bitte den Quellcode der verfügbaren Initskripte in Ihrem
/etc/init.d Verzeichnis.
Eine weitere Funktion, die Sie definieren können, ist stop(). Sie sind
nicht verpflichtet, diese Funktion zu erstellen! Unser Init-System ist
intelligent genug, diese selbst auszufüllen, sofern Sie den
start-stop-daemon nutzen.
Hier ist ein Beispiel einer stop() Funktion:
Befehlsauflistung 4.7: Beispiel der stop() Funktion |
stop() {
ebegin "Stoppen meines Dienstes"
start-stop-daemon --stop --exec /pfad/zu/meinem_dienst \
--pidfile /pfad/zu/meinem_pidfile
eend $?
}
|
Wenn Ihr Dienst ein anderes Skript ausführt (zum Beipsiel Bash, Python oder
Perl) und das Script später den Namen ändert (zum Beispiel von foo.py auf
foo) werden Sie --name zum start-stop-daemon hinzufügen
müssen. Sie müssen den Namen angeben, auf den Ihr Skript geändert wird. In
diesem Beispiel startet ein Dienst foo.py, welches seinen Namen auf
foo ändert:
Befehlsauflistung 4.8: Ein Dienst, der das Skript foo startet |
start() {
ebegin "Starten meines Skripts"
start-stop-daemon --start --exec /pfad/zu/meinem_skript \
--pidfile /pfad/zu/meinem_pidfile --name foo
eend $?
}
|
Für den start-stop-daemon existiert auch eine exzellente
man-Seite, falls Sie weitere Informationen benötigen.
Befehlsauflistung 4.9: Aufrufen der man-Seite des start-stop-daemon |
$ man start-stop-daemon
|
Die Syntax für Gentoos Initskripte basiert auf der POSIX-Shell; es steht Ihnen
also frei, sh-kompatible Konstrukte innerhalb Ihrer Initskripte zu verwenden.
Verwenden Sie keine anderen Konstrukte, z.B. bash-spezifische, um
sicherzustellen, dass die Skripte auch dann noch funktionieren, wenn Gentoo
Änderungen am Init-System vornimmt.
Eigene Optionen hinzufügen
Falls Sie wollen, dass Ihr Initskript mehr Optionen besitzt, als wir bisher
aufgeführt haben, sollten Sie Ihre Option zur extra_commands Variable
hinzufügen und eine Funktion mit demselben Namen wie die Option erstellen.
Zum Beispiel, um eine Funktion namens restartdelay zu unterstützen:
Befehlsauflistung 4.10: Unterstützung der restartdelay Option |
extra_commands="restartdelay"
restartdelay() {
stop
sleep 3
start
}
|
Wichtig:
Die Funktion restart() kann in openrc nicht überschrieben werden!
|
Variablen zur Dienstkonfiguration
Sie müssen nichts machen, um eine Konfigurationsdatei in
/etc/conf.d zu unterstützen: Wenn Ihr Initskript ausgeführt
wird, wird folgendes automatisch zu Grunde gelegt (d.h. diese Variablen
können benutzt werden):
- /etc/conf.d/<Ihr Initskript>
- /etc/conf.d/basic
- /etc/rc.conf
Falls Ihr Initskript eine virtuelle Abhängigkeit (wie net) bereitstellt,
wird dazu die Datei, die mit dieser Abhängigkeit in Verbindung gebracht wird
(wie /etc/conf.d/net), auch zu Grunde gelegt.
4.e. Ändern des standardmäßigen Runlevel-Verhaltens
Wer kann hiervon profitieren?
Viele Laptop-Benutzer kennen die Situation: Daheim müssen Sie net.eth0
starten, wenn Sie unterwegs sind möchten sie net.eth0 nicht starten (weil
grade kein Netzwerk verfügbar ist). Mit Gentoo können Sie das Runlevel Verhalten
nach Ihren eigenen Vorstellungen anpassen.
Zum Beispiel können Sie ein zweites Runlevel "default" anlegen, dass Sie booten
können mit anderen Initskripten die diesem Runlevel zugeordnet sind. Sie können
während des Booten wählen, welches default Runlevel Sie benutzen möchten.
softlevel benutzen
Zunächst erstellen Sie das Runlevel Verzeichnis für Ihr zweites "default"
Runlevel. Als Beispiel werden wir das offline Runlevel erstellen:
Befehlsauflistung 5.1: Erstellen eines Runlevel-Verzeichnisses |
# mkdir /etc/runlevels/offline
|
Fügen Sie die notwendigen Initskripte in das neu erstelle Runlevel. Wenn Sie
zum Bespiel eine exakte Kopie Ihres aktuellen default Runlevels anlegen
möchten, lediglich ohne net.eth0:
Befehlsauflistung 5.2: Hinzufügen der notwendigen Initskripte |
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
# rc-update del net.eth0 offline
# rc-update show offline
acpid | offline
domainname | offline
local | offline
net.eth0 |
|
Obwohl net.eth0 aus dem Runlevel offline entfernt wurde, könnte
udev trotzdem versuchen jegliche Geräte, die es findet, zu starten und
die passenden Dienste aufzurufen. Diese Funktionalität nennt sich
Hotplugging. Standardmäßig verwendet Gentoo kein Hotplugging.
Falls Sie Hotplugging verwenden wollen, aber nur für eine ausgewählte Menge an
Skripten, verwenden Sie die rc_hotplug Variable in
/etc/rc.conf:
Befehlsauflistung 5.3: Deaktivierung der von Geräten gestarteten Dienste in /etc/rc.conf |
rc_hotplug="net.wlan !net.*"
|
Notiz:
Für weitere Informationen zu Diensten, die von Geräten gestartet werden, schauen
Sie sich bitte die Kommentare in /etc/rc.conf an.
|
Editieren Sie nun die Bootloader-Konfiguration und fügen einen neuen Eintrag für
das Runlevel offline hinzu. Zum Beispiel in
/boot/grub/grub.conf:
Befehlsauflistung 5.4: Einen zusätzlichen Eintrag für das Runlevel offline hinzufügen |
title Gentoo Linux Offline Usage
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
Voilà, Sie sind soweit. Wenn Sie Ihr System booten und die neu hinzugefügte
Option auswählen wird das System das Runlevel offline anstelle des
Runlevels default starten.
Bootlevel benutzen
Die Nutzung von bootlevel ist komplett analog zu softlevel. Der
einzige Unterschied ist, dass Sie hier ein zweites "boot" Runlevel anstelle
eines zweiten "default" Runlevel definieren können.
5. Umgebungsvariablen
5.a. Umgebungsvariablen
Was sind Umgebungsvariablen?
Eine Umgebungsvariable ist ein Objekt mit vorgegebenem Namen, welches
Informationen für eine oder mehrere Anwendungen bereitstellt. Viele
Benutzer (speziell diejenigen, die neu in Linux sind) finden dies etwas
seltsam oder schlecht handhabbar. Diese Annahme ist ein Fehler: Durch
Verwendung von Umgebungsvariablen kann die Konfigurationseinstellung
von einem oder mehreren Programmen sehr einfach geändert werden.
Wichtige Beispiele
Die folgende Tabelle enthält einige Variablen, die in einem Linux-System
verwendet werden und beschreibt deren Bedeutung. Einige Beispiele werden
im Anschluss an die Tabelle dargestellt.
| Variable |
Beschreibung |
| PATH |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen Ihr System nach ausführbaren Dateien schaut.
Wenn Sie den Namen einer ausführbaren Datei, wie zum Beispiel ls,
rc-update oder emerge eingeben und sich diese Datei nicht
in einem der Verzeichnisse dieser Liste befindet, wird sie nicht
ausgeführt, es sei denn, Sie geben den vollständigen Pfad an
(z.B. /bin/ls).
|
| ROOTPATH |
Diese Variable hat die gleiche Funktion wie PATH, aber hier werden
die Verzeichnisse aufgelistet, die durchsucht werden, wenn man als root
einen Befehl eingibt.
|
| LDPATH |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen Ihr dynamischer Linker nach System-Bibliotheken
sucht.
|
| MANPATH |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen der man Befehl nach der entsprechenden
man-page sucht.
|
| INFODIR |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen der info Befehl nach der entsprechenden
info Seite sucht.
|
| PAGER |
Diese Variable enthält den Pfad zu dem Standard-Programm, welches zur
Anzeige von Dateiinhalten verwendet wird (z.B. less oder
more).
|
| EDITOR |
Diese Variable enthält den Pfad zu dem Standard-Programm, welches zur
Bearbeitung von Dateien verwendet wird (z.B. nano oder vi).
|
| KDEDIRS |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen KDE-spezifisches Material enthalten ist.
|
| CONFIG_PROTECT |
Diese Variable enthält eine durch Leerzeichen getrennte Liste von
Anwendungen, die bei Aktualisierungen durch Portage nicht angetastet
werden.
|
| CONFIG_PROTECT_MASK |
Diese Variable enthält eine durch Leerzeichen getrennte Liste von
Anwendungen, die durch Aktualisierungen von Portage nicht geschützt sind.
|
Hier finden Sie eine Beispieldefinition der oben vorgestellten Variablen:
Befehlsauflistung 1.1: Beispielsdefinition |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
5.b. Variablen global definieren
Das /etc/env.d Verzeichnis
Um die einzelnen Definitionen der Variablen zentralisieren zu können,
wurde in Gentoo das /etc/env.d Verzeichnis angelegt.
Innerhalb dieses Verzeichnisses finden Sie einige Dateien, wie zum
Beispiel 00basic, 05gcc, etc. welche
die Variablen der einzelnen Applikationen enthalten.
In unserem Beispiel wird, wenn Sie gcc installieren,
die Datei 05gcc von dem ebuild angelegt und enthält
die Definition folgender Variablen:
Befehlsauflistung 2.1: /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
In anderen Linux Distributionen werden solche Variablen in
/etc/profile geändert oder hinzugefügt. Gentoo hingegen macht es
so für Sie (und für Portage) deutlich einfacher die Umgebungsvariablen zu
verwalten, ohne auf die vielen verschiedenen Dateien, welche
Umgebungsvariablen enthalten können, eingehen zu müssen.
In unserem Fall wird, wenn ein Update von gcc durchgeführt wird, die
Datei /etc/env.d/05gcc automatisch aktualisiert, ohne den Benutzer
unnötig damit konfrontieren zu müssen.
Von dieser Methode profitiert nicht nur Portage sondern auch Sie als Benutzer.
Gelegentlich werden Sie gefragt, ob Sie eine bestimmte Umgebungsvariable
systemweit setzen wollen. Zum Beispiel bei der Variable http_proxy.
Anstatt sich mit /etc/profile auseinander zu setzen müssen, legen
Sie einfach eine entsprechende Datei (/etc/env.d/99local) an
und tragen darin die gewünschten Definitionen ein:
Befehlsauflistung 2.2: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
Indem Sie dieselbe Datei für alle Variablen verwenden, haben Sie einen
schnellen Überblick über alle Variablen, die Sie selbst gesetzt haben.
Das env-update Skript
Einige Dateien in /etc/env.d definieren die Variable PATH.
Dies ist kein Fehler: Wenn Sie env-update ausführen, wird es die
ganzen zusätzlichen Definitionen anhängen, bevor es die Umgebungsvariablen
aktualisert. Somit wird es den Benutzern (oder Entwicklern) sehr einfach
gemacht, eigene Umgebungsvariablen hinzuzufügen, ohne sich mit den bestehenden
Werten herumschlagen zu müssen.
Das env-update Skript wird diese Werte in alphabetischer Reihenfolge der
/etc/env.d Dateien hinzufügen. Die Dateinamen müssen mit einer
zweistelligen Dezimalzahl beginnen.
Befehlsauflistung 2.3: Update-Reihenfolge von env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Die Verkettung von Variablen geschieht nicht bei allen, sondern nur bei
folgenden Variablen:
ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH,
KDEDIRS, PATH, LDPATH, MANPATH,
INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT,
CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK,
PKG_CONFIG_PATH und PYTHONPATH.
Für alle anderen Variablen wird der zuletzt definierte Wert (in alphabetischer
Reihenfolge der Dateien in /etc/env.d) verwendet.
Sie können dieser Liste weitere Variablen hinzufügen indem Sie den
Variablennamen zu einer der Variablen COLON_SEPARATED und
SPACE_SEPARATED (ebenfalls in einer env.d Datei) hinzufügen.
Wenn Sie env-update ausführen, wird das Skript alle Umgebungsvariablen
erstellen und sie in /etc/profile.env ablegen (welches von
/etc/profile verwendet wird). Zusätzlich wird es die Informationen
aus der LDPATH Variable verwenden, um /etc/ld.so.conf
anzulegen. Anschließend wird es ldconfig ausführen, um für
den dynamischen Linker die Datei /etc/ld.so.cache neu
zu erstellen.
Um sofort von den Änderungen in env-update profitieren zu können, ohne
das System neu zu booten, müssen Sie nur folgenden Befehl ausführen. Den
meisten Benutzern wird er noch von der Installationsanleitung her bekannt sein:
Befehlsauflistung 2.4: Umgebungsvariablen aktualisieren |
# env-update && source /etc/profile
|
Notiz:
Der obige Befehl aktualisiert nur die Variablen im aktuellen Terminal,
in neuen Konsolen und in deren Nachfolgern. Daher müssen Sie, wenn Sie
mit X11 arbeiten, entweder source /etc/profile in jedem neuen Terminal,
dass Sie öffnen, eintippen oder X neustarten, damit alle Terminals per source
die neuen Variablen erhalten. Wenn Sie einen Loginmanager verwenden, müssen
Sie root werden und /etc/init.d/xdm restart eintippen. Wenn nicht, dann
müssen Sie sich ausloggen und wieder einloggen damit X Nachfolger mit den
neuen Variablenwerten erzeugt.
|
Wichtig:
Sie können Shell-Variablen nicht verwenden, wenn Sie andere Variablen
definieren. Das bedeutet, dass Dinge wie FOO="$BAR" (wo $BAR eine
weitere Variable ist) nicht erlaubt sind.
|
5.c. Variablen lokal definieren
Benutzerspezifisch
Nicht immer wollen Sie eine Umgebungsvariable global definieren. Wenn Sie zum
Beispiel /home/mein_benutzer/bin und das momentane
Arbeitsverzeichnis (das Verzeichnis in dem Sie sich befinden) zu der
PATH Variable hinzufügen wollen, es aber nicht allen anderen Benutzern
ebenfalls in ihre PATH Variable schreiben wollen, dann sollten Sie die
Variable in ~/.bashrc oder ~/.bash_profile lokal
definieren:
Befehlsauflistung 3.1: Erweitern des PATH für lokale Verwendung in ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Wenn Sie sich nun erneut anmelden, werden Ihre PATH Variablen
aktualisiert.
Sitzungsspezifisch
Mannchmal müssen die einzelnen Definitionen noch strikter gehandhabt werden.
Wenn Sie zum Beispiel Binärdateien von einem temporär angelegtem Verzeichnis
verwenden wollen, ohne den Pfad zu den entsprechenden Daten anzulegen, oder
~/.bashrc für diesen Verwendungszweck extra abändern zu müssen.
In diesem Fall können Sie PATH für Ihre aktuelle Sitzung mit dem
export Befehl setzen. Diese Einstellungen bleiben Ihnen bis zum nächsten
Logout erhalten.
Befehlsauflistung 8.4: Setzen einer sitzungsspezifischen Variable |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
C. Arbeiten mit Portage
1. Dateien und Verzeichnisse
1.a. Portage Dateien
Konfigurationsrichtlinien
Portage kommt mit einer Standardkonfiguration gespeichert in
/etc/make.globals daher. Wenn Sie einen Blick auf die Datei werfen,
werden Sie feststellen, dass sämtliche Portage Konfiguration durch Variablen
durchgeführt wird. Welche Variablen Portage kennt und was diese bedeuten
beschreiben wir später.
Da viele Konfigurationsanweisungen sich zwischen verschiedenen Architekturen
unterscheiden hat Portage auch Standardkonfigurationsdateien welche Teile
Ihres Profils sind. Durch den symbolischen Link
/etc/portage/make.profile wird auf Ihr Profil verwiesen. Die
Einstellungen von Portage werden durch die make.defaults Dateien
Ihres Profils und aller übergeordneten Profile gesetzt. Wir erklären später mehr
zu den Profilen und zum /etc/make.profile Verzeichnis.
Wenn Sie planen Änderungen an Konfigurationsvariablen vorzunehmen verändern Sie
nicht /etc/make.globals oder make.defaults.
Anstelle dessen benutzen Sie /etc/portage/make.conf, welche eine
Vorrangstellung gegenüber den vorher genannten Dateien hat. Sie finden ebenfalls
eine /usr/share/portage/config/make.conf.example. Wie der Name
impliziert ist dies eine Beispieldatei, Portage greift nicht auf diese Datei zu.
Sie können eine Portage Konfigurationsvariable auch als Umgebungsvariable
deklarieren, wir empfehlen dies jedoch nicht.
Profile spezifische Informationen
Wir sind bereits einem /etc/portage/make.profile Verzeichnis über
den Weg gelaufen. Gut, dies ist nicht wirklich ein Verzeichnis, aber ein
symbolischer Link zu einem Profil, standardmäßig eines innerhalb von von
/usr/portage/profiles. Sie können Profile selbst erstellen und
diese auch ablegen wo Sie mögen, Sie müssen lediglich den Symlink anpassen.
Ein Profile beinhaltet Architektur-spezifische Informationen für Portage, wie
eine Liste aller Pakete die zum System gehören, eine Liste von Paketen die in
diesem Profil nicht funktionieren (oder maskiert sind).
Benutzerspezifische Konfiguration
Wenn Sie das Verhalten von Portage bezüglich der Installation von Software
beeinflussen wollen, führt kein Weg am Editieren von Dateien in
/etc/portage vorbei. Es wird Ihnen wärmstens empfohlen die
Dateien in /etc/portage zu benutzen und es ist wärmstens
empfohlen das Verhalten von Portage nicht durch Umgebungsvariablen zu
beeinflussen!
Innerhalb von /etc/portage können Sie die folgenden Dateien
erstellen:
-
package.mask listet alle Pakete auf, die Sie niemals
installieren wollen
-
package.unmask listet alle Pakete, die Sie installieren wollen,
obwohl Gentoo Entwickler aus guten Gründen davon abraten
-
package.accept_keywords listet alle Pakete, die Sie
installieren möchten, obwohl dieses Paket (noch) nicht für Ihre Architektur
freigegeben wurde
-
package.use listet alle USE Flags, die Sie für ein bestimmtes
Paket und nur für dieses eine Paket verwenden möchten
Dies müssen nicht Dateien sein, es können auch Verzeichnisse sein die eine
Datei per Paket enthalten. Weitere Informationen über das
/etc/portage Verzeichnis und eine vollständige Liste von
möglichen Dateien, die Sie erstellen können finden Sie in der Portage Manpage:
Befehlsauflistung 1.1: Lesen der Portage Manpage |
$ man portage
|
Ändern von Portage Datei- & Verzeichnisorten
Die zuvor erwähnten Konfigurationsdateien können nicht irgendwo anders abgelegt
werden, Portage wird nach diesen Dateien immer an diesen genauen Stellen
suchen. Portage benutzt jedoch zahlreiche weitere Orte für zahlreiche
verschiedene Zwecke: Build-Verzeichnis, Quellcode Ablage, Portage Tree, ...
Alle diese Zwecke haben bekannte Standardorte, diese können jedoch nach Ihrem
persönlichen Geschmack in /etc/portage/make.conf verändert werden.
Der Rest dieses Kapitels erklärt Ihnen welche speziellen Orte Portage benutzt
und wie Sie den Ort abändern können.
Dieses Dokument ist dennoch nicht als Referenz gedacht. Wenn Sie eine Datei
suchen, die alles umfasst konsultieren Sie die make.conf Manpages:
Befehlsauflistung 1.2: Lesen der portage und make.conf Manpages |
$ man portage
$ man make.conf
|
1.b. Ablegen von Dateien
Der Portage-Tree
Der Portage Tree befindet sich standardmäßig in /usr/portage. Dies
wird durch die PORTDIR Variable definiert. Wenn Sie den Portage Tree irgendwo
anders (durch Anpassen der PORTDIR Variable) ablegen, vergessen Sie nicht den
/etc/portage/make.profile Symlink anzupassen.
Wenn Sie die PORTDIR Variable anpassen, möchten Sie vermutlich auch die
folgenden Variablen (PKGDIR, DISTDIR, RPMDIR) anpassen, da diese den PORTDIR
Wechsel nicht beachten.
Vorkompilierte Pakete
Auch wenn Portage vorkompilierte Binärpakete nicht per default nutzt gibt es
eine hervorragende Unterstützung für diese. Wenn Sie Portage anweisen
Binärpakete zu erstellen werden diese in /usr/portage/packages
abgelegt. Dieser Ort wird durch die PKGDIR Variable definiert.
Quellcode
Quellcode von Anwendungen wird in /usr/portage/distfiles abgelegt.
Dieser Ort wird durch die DISTDIR Variable festgeelgt.
Portage-Datenbank
Portage speichert den Stand Ihres Systems (welche Pakete installiert sind,
welche Dateien zu welchem Paket gehören, ...) in /var/db/pkg.
Editieren Sie diese Dateien nicht per Hand! Es könnte Portages Wissen
über Ihr System verwüsten.
Portage-Cache
Der Portage-Cache (mit Modifikationszeitpunkt, virtuals, Informationen zum
Abhängigkeitsbaum, ...) wird in /var/cache/edb gespeichert.
Dieser Ort ist wirklich ein Cache: Sie können ihn ausleeren, wenn keine
Portage-basierenden Anwendungen momentan laufen.
1.c. Software übersetzen
Temporäre Portage-Dateien
Portage lagert seine temporären Dateien in /var/tmp. Dies wird
durch die PORTAGE_TMPDIR Variable deklariert.
Wenn Sie die Variable PORTAGE_TMPDIR ändern, möchten Sie vermutlich auch die
folgenden Variablen ändern, da diese die Änderung an der PORTAGE_TMPDIR
Variable nicht übernehmen: BUILD_PREFIX.
Build-Verzeichnis
Portage erstellt spezifische Build-Verzeichnisse für jedes Paket, das
installiert wird, in /var/tmp/portage. Dieser Ort wird durch die
Variable BUILD_PREFIX definiert.
Live-Dateisystem Ort
Standardmäßig installiert Portage alle Dateien in das aktuelle Dateisystem
(/), Sie können dies jedoch durch setzen der
ROOT-Umgebungsvariable ändern. Dies ist nützlich, wenn Sie neue Build-Images
erstellen wollen.
2.d. Protokollierungsfunktionen
Protokollierung von Ebuilds
Portage kann für jedes Ebuild ein Protokolldatei anlegen, falls die Variable auf
ein PORT_LOGDIR-Verzeichnis zeigt, in dem der Benutzer portage Schreibrechte
hat. Standardmäßig ist diese Variable nicht gesetzt. Wenn Sie PORT_LOGDIR nicht
setzen, werden Sie keine Erstellungsprotokolle mit dem aktuellen Protokollsystem
erhalten, jedoch könnten Sie einige Nachrichten des neuen elog erhalten.
Wenn Sie PORT_LOGDIR gesetzt haben und elog verwernden, werden Sie
Erstellungsprotokolle und jegliche Protokolle, die von elog gespeichert werden
(wie folgt erklärt), erhalten
Portage bietet eine fein abgestimmte Kontrolle über die Protokollierung durch
die Verwendung von elog:
-
PORTAGE_ELOG_CLASSES: Hier legen Sie fest welche Art von Nachrichten
protokolliert werden sollen. Sie können jegliche, durch Leerzeichen
getrennte, Kombination von info, warn, error,
log und qa verwenden.
-
info: Protokolliert "einfo" Meldungen, die von einem Ebuild
ausgegeben werden.
-
warn: Protokolliert "ewarn" Meldungen, die von einem Ebuild
ausgegeben werden.
-
error: Protokolliert "eerror" Meldungen, die von einem Ebuild
ausgegeben werden.
-
log: Protokolliert die "elog" Meldungen, welche sich in einigen
Ebuilds finden.
-
qa: Protokolliert "QA Notice" Meldungen, die von einem Ebuild
ausgegeben werden.
-
PORTAGE_ELOG_SYSTEM: Dies wählt das/die Modul(e) um die Protokollmeldungen
zu bearbeiten. Wenn es leer bleibt wird Protokollierung deaktiviert. Sie
können jegliche, durch Leerzeichen getrennte, Kombination von save,
custom, syslog, mail, save_summary und
mail_summary verwenden. Sie müssen wenigstens ein Modul auswählen um
elog zu verwenden.
-
save: Dies speichert ein Protokoll pro Paket in
$PORT_LOGDIR/elog, oder /var/log/portage/elog,
wenn $PORT_LOGDIR nicht gesetzt ist.
-
custom: Übergibt alle Nachrichten an einen, vom Benutzer in
$PORTAGE_ELOG_COMMAND spezifizierten, Befehl. Dies wird später
erläutert.
-
syslog: Sendet alle Nachrichten an den installierten
System-Protokollierer.
-
mail: Übergibt alle Nachrichten an einen, vom Benutzer in
$PORTAGE_ELOG_MAILURI spezifizierten, Mailserver. Dies wird später
erläutert. Die Mail-Funktionen von elog benötigen
>=portage-2.1.1.
-
save_summary: Ähnlich wie save, aber es vereint alle
Nachrichten in $PORT_LOGDIR/elog/summary.log oder
/var/log/portage/elog/summary.log, wenn $PORT_LOGDIR nicht
gesetzt ist.
-
mail_summary: Ähnlich wie mail, sendet aber alle
Nachrichten in einer einzigen Mail wenn emerge beendet.
-
PORTAGE_ELOG_COMMAND: Dies wird nur verwendet, wenn das Modul custom
aktiviert ist. Hier geben Sie einen bestimmten Befehl an, der die
Protokollmeldungen bearbeitet. Beachten Sie, dass Sie von zwei Variablen
Gebrauch machen können: ${PACKAGE} ist der Paketname und die Version,
während ${LOGFILE} der absolute Pfad zur Protokolldatei ist. Hier ist
eine mögliche Anwendung:
-
PORTAGE_ELOG_COMMAND="/pfad/zum/protokollierer -p '\${PACKAGE}' -f '\${LOGFILE}'"
-
PORTAGE_ELOG_MAILURI: Dies enthält Einstellungen für das Modul mail,
wie zum Beispiel Addresse, Benutzer, Passwort, Mailserver und Portnummer.
Die Standardeinstellung ist "root@localhost localhost".
-
Hier ist ein Beispiel für einen SMTP-Server, der eine Authentifizierung
basierend auf Benutzername und Passwort an einem bestimmten Port benötigt
(der Standardport ist 25):
-
PORTAGE_ELOG_MAILURI="benutzer@eine.domain
benutzername:passwort@smtp.eine.domain:995"
-
PORTAGE_ELOG_MAILFROM: Erlaubt es Ihnen die "Von" Adresse der Protokollmails
zu setzen. Der Standard ist Portage, wenn nicht gesetzt.
-
PORTAGE_ELOG_MAILSUBJECT: Erlaubt es Ihnen eine Betreffzeile für die
Protokollmails zu setzen. Beachten Sie, dass Sie zwei Variablen verwenden
können: ${PACKAGE} wird den Namen des Pakets und die Version anzeigen,
während ${HOST} der Fully Qualified Domain-Name des Hosts ist, auf dem
Portage ausgeführt wird.
-
Hier ist eine mögliche Anwendung:
-
PORTAGE_ELOG_MAILSUBJECT="Paket \${PACKAGE} wurde auf \${HOST} mit
mit emerge installiert und produzierte einige Meldungen
Wichtig:
Wenn Sie enotice mit Portage-2.0.* verwendet haben, müssen Sie enotice
komplett entfernen, da es nicht mit elog kompatibel ist.
|
2. Konfiguration durch Variablen
2.a. Konfiguration von Portage
Wie bereits erwähnt können Sie Portage durch zahlreiche Variablen, die Sie in
/etc/portage/make.conf definieren, an Ihre persönlichen
Bedürfnisse anpassen. Lesen Sie als weitere und vollständige Referenz die
make.conf Manpage:
Befehlsauflistung 1.1: Lesen der make.conf Manpage |
$ man make.conf
|
2.b. Build-spezifische Optionen
Configure und Compiler Optionen
Wenn Portage Anwendungen übersetzt wendet es die folgenden Variablen auf den
Compiler, bzw. das Configure-Skript an:
-
CFLAGS & CXXFLAGS definieren die gewünschten Flags für C and C++
Kompilierung.
-
CHOST definiert die Build Host Information für das Configure-Skript der
Anwendung
-
MAKEOPTS wird an das make Kommando weitergegeben und ist für
gewöhnlich gesetzt, um die Menge der Parallelität während der Kompilierung
zu bestimmen. Weitere Informationen zu Optionen von make finden Sie in der
make Manpage.
Die USE Variable wird ebenfalls während der Configure- und Kompilierungsschritte
benutzt, diese Variable wurde jedoch schon ausführlich in vorgehenden Kapitel
behandelt.
Merge Optionen
Wenn Portage eine neuere Version einer bestimmten Anwendung installiert hat,
wird es die nicht mehr benötigten Dateien der alten Version von Ihrem System
entfernen. Portage gibt dem Benutzer eine 5 Sekunden lange Pause, bevor das
Deinstallieren der alten Version begonnen wird. Diese 5 Sekunden sind in der
CLEAN_DELAY Variable definiert.
Sie können emerge sagen, dass es bestimmte Optionen, jedes Mal wenn es
ausgeführt wird, verwenden soll, indem Sie EMERGE_DEFAULT_OPTS setzen. Einige
nützliche wären --ask, --verbose, --tree, usw.
2.c. Schutz von Konfigurationsdateien
Abgesicherte Pfade
Portage überschreibt Dateien einer alten Version bei der Installation einer
neuen Version, sofern diese sich nicht in einem geschützten Verzeichnis
befinden. Diese geschützten Verzeichnisse sind durch die CONFIG_PROTECT Variable
definiert und sind im Normalfall Verzeichnisse, die Konfigurationsdateien
enthalten. Es können getrennt durch ein Leerzeichen beliebig viele Pfade
angegeben werden.
Eine Datei, die in ein solches geschütztes Verzeichnis geschrieben werden soll,
wird umbenannt und der Anwender darüber informiert, dass eine neue Version einer
(wahrscheinlich) Konfigurationsdatei vorliegt.
Die aktuellen CONFIG_PROTECT Einstellungen können Sie sich mittels emerge
--info anzeigen lassen:
Befehlsauflistung 3.1: Anzeigen der CONFIG_PROTECT Einstellungen |
$ emerge --info | grep 'CONFIG_PROTECT='
|
Weitere Informationen über den Schutz von Konfigurationsdateien sind im
Abschnitt CONFIGURATION FILES der man Seite von emerge verfügbar:
Befehlsauflistung 3.2: Weitere Informationen über den Schutz von Konfigurationsdateien |
$ man emerge
|
Verzeichnisse ausschließen
Um den Schutz von einzelnen Unterverzeichnissen aufzuheben können Sie die
CONFIG_PROTECT_MASK Variable nutzen.
2.d. Download Optionen
Server Auswahl
Wenn angeforderte Informationen oder Daten auf Ihrem System nicht verfügbar sind
versucht Portage diese aus dem Internet zu beziehen. Die Server für die
verschiedenen Informationen und Daten werden durch die folgenden Variablen
deklariert:
-
GENTOO_MIRRORS definiert eine Liste von Servern die Quellcode (Distfiles)
enthalten
-
PORTAGE_BINHOST definiert einen bestimmten Server der vorkompilierte Pakete
für Ihr System bereit hält
Eine dritte Konfiguration beinhaltet den Rsync Server, den Sie zum aktualisieren
Ihres Portage Tree nutzen möchten:
-
SYNC definiert einen bestimmten Server von dem Sie den Portage Tree beziehen
wollen
Die GENTOO_MIRRORS und SYNC Variablen können automatisch durch die
mirrorselect Anwendung gesetzt werden. Dazu müssen Sie zunächst
mirrorselect installieren. Für weitere Informationen schauen Sie in die
Hilfe von mirrorselect:
Befehlsauflistung 4.1: Weitere Informationen über mirrorselect |
# mirrorselect --help
|
Wenn Ihre Umgebung vorschreibt einen Proxy-Server zu nutzen können Sie die
http_proxy, ftp_proxy und RSYNC_PROXY Variablen nutzen um einen Proxy-Server zu
deklarieren.
Download Kommandos
Wenn Portage Quellcode beziehen muss wird standardmäßig wget benutzt.
Sie können dies durch die FETCHCOMMAND Variable anpassen.
Portage kann halbfertige Downloads fortsetzen. Es benutzt standardmäßig
wget, Sie können dies durch die RESUMECOMMAND Variable anpassen.
Stellen Sie sicher, dass Ihre FETCHCOMMAND und RESUMECOMMAND Variablen den
Quellcode im richtigen Verzeichnis ablegen. Innerhalb der Variablen sollten Sie
\${URI} und \${DISTDIR} benutzen, um die Quellcode URI und das Distfiles
Verzeichnis anzugeben.
Sie können weiterhin mit FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP,
RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP und so weiter protokollspezifische Handler
erstellen.
Rsync-Einstellungen
Sie können den von Portage ausgeführten Rsync-Befehl zur Aktualisierung des
Portage-Tree nicht ändern. Sie können jedoch einige Variablen, die in Verbindung
zu diesem Rsync-Vorgang stehen, anpassen:
-
PORTAGE_RSYNC_OPTS setzt zahlreiche Standardvariablen, jede durch
Leerzeichen getrennt, die während des Sync-Vorgangs verwendet werden. Diese
sollten nicht geändert werden, wenn Sie nicht exakt wissen, was Sie
tun. Beachten Sie bitte, dass bestimmte Optionen, die absolut zwingend
benötigt werden, immer verwendet werden, auch wenn PORTAGE_RSYNC_OPTS leer
ist.
-
PORTAGE_RSYNC_EXTRA_OPTS kann verwendet werden um zusätzliche Optionen für
den Sync-Vorgang zu setzen. Alle Optionen sollten durch ein Leerzeichen
getrennt sein.
-
--timeout=<zahl>: Dies definiert die Anzahl von Sekunden, welche
die Verbindung idle sein kann, bevor rsync für die Verbindung einen
Zeitüberlauf feststellt. Diese Variable hat den Standardwert 180.
Modembenutzer und Personen mit langsamen Rechnern werden jedoch unter
Umständen den Wert auf 300 oder höher setzen wollen.
-
--exclude-from=/etc/portage/rsync_excludes: Dies verweist auf eine Datei
mit Liste von Paketen und/oder Kategorien, die rsync während des
Aktualisierungsvorgangs ignorieren soll. In diesem Fall verweist es auf
/etc/portage/rsync_excludes. Bitte lesen Einen Teil des Portage-Tree verwenden
für die Syntax in dieser Datei.
- --quiet: Reduziert die Ausgabe für den Bildschirm
- --verbose: Gibt eine komplette Dateiliste aus
- --progress: Gibt einen Fortschrittsbalken für jede Datei aus
-
PORTAGE_RSYNC_RETRIES definiert wie oft rsync versuchen soll mit einem
Mirror zu verbinden, auf den in der SYNC-Variable verwiesen wird, bevor es
aufgibt. Diese Variable hat den Standardwert 3.
Für weitere Informationen über diese und andere Optionen, lesen Sie bitte man
rsync.
2.e. Gentoo Konfiguration
Zweigauswahl
Sie können den standardmäßigen Zweig mit der ACCEPT_KEYWORDS Variable
auswählen. Per default wird der stabile Zeig Ihrer Architektur genutzt. Weitere
Informationen zu Software Zweigen innerhalb von Gentoo entnehmen Sie dem
nächsten Kapitel.
Portage Features
Sie können zahlreiche Portage Optionen durch die FEATURES Variable aktivieren.
Die Portage Optionen wurden in vorhergehenden Kapiteln behandelt, wie z.B. in
Portage Features.
2.f. Portage Verhalten
Ressourcenmanagement
Mit der PORTAGE_NICENESS Variable können Sie den Nice Wert anpassen, mit dem
Portage ausgeführt wird. Der Wert der PORTAGE_NICENESS Variable wird zum
aktuellen Nice Wert hinzugefügt.
Für weitere Informationen über Nice Werte schauen Sie in die nice Manpage:
Befehlsauflistung 6.1: Weitere Informationen über nice |
$ man nice
|
Ausgabeverhalten
Mit der NOCOLOR Variable können Sie die Ausgabe von farbigen Meldungen durch
Portage deaktivieren. Der Standardwert ist false.
3. Mischen von Software Zweigen
3.a. Einen Zweig benutzen
Der stabile Zweig
Die ACCEPT_KEYWORDS Variable definiert welchen Softwarezweig Sie auf Ihrem
System benutzen wollen. Standardmäßig wird der stabile Zweig, also zum Beispiel
x86, benutzt.
Wir empfehlen Ihnen nur den stabilen Zweig zu benutzen. Wenn jedoch Stabilität
für Sie nicht sonderlich wichtig ist und Sie Gentoo mit dem Einbringen von
Fehlermeldungen in http://bugs.gentoo.org Gentoo unterstützen
möchten, lesen Sie weiter.
Der Test Zweig
Wenn Sie mehr aktuelle Software benutzen möchten macht es Sinn, über die Nutzung
des Test Zweiges nachzudenken. Um diesen Testzweig zu nutzen fügen Sie ein ~
vor Ihrer Architektur ein.
Der Testzweig beinhaltet genau das was der Name verspricht - Tests.
Wenn ein Paket sich in Test befindet, dann bedeutet es dass die Entwickler der
Meinung sind, dass es funktionsfähig ist aber noch nicht ausgiebig getestet
worden ist. Es könnte sehr gut sein, dass Sie die erste Person wären, welche
einen Bug in einem bestimmten Paket entdeckt. In diesem Fall könnten Sie
einen Bugreport erstellen und die
Entwickler so davon in Kenntnis setzen.
Wappnen Sie sich aber dafür, dass Probleme mit der Stabilität auftreten, die
Handhabung von Paketen nicht perfekt funktioniert (wie z.B. falsche/fehlende
Abhängigkeiten) oder Pakete kaputt sind. Wenn Sie nicht wissen, wie Gentoo
funktioniert und wie man solche Probleme löst, empfehlen wir Ihnen, dass Sie
beim stabilen und getesteten Zweig bleiben.
Um zum Beispiel den Testzweig der x86 Architektur zu nutzen editieren Sie
/etc/portage/make.conf wie folgt:
Befehlsauflistung 1.1: Setzen der ACCEPT_KEYWORDS Variable |
ACCEPT_KEYWORDS="~x86"
|
Wenn Sie nun Ihr System aktualisieren wollen werden Sie feststellen, dass
viele Pakete aktualisiert werden. Bedenken Sie jedoch: Wenn Sie einmal
in den Testzweig gewechselt sind, gibt es für gewöhnlich keinen einfachen Weg
zurück zum stabilen, offiziellen Zweig (außer mit Backups, natürlich).
3.b. Den stabilen mit dem Testzweig vermischen
Die Datei package.accept_keywords
Sie können Portage anweisen, bei bestimmten Paketen den Testzweig zu benutzen,
für den Rest des Systems jedoch den stabilen Zweig. Um dies zu erreichen fügen
Sie die Paketkategorie und den Paketnamen in
/etc/portage/package.accept_keywords ein. Sie können auch ein
Verzeichnis (mit demselben Namen) erstellen und das Paket in Dateien innerhalb
dieses Verzeichnisses auflisten. Um zum Beispiel für gnumeric den
Testzweig zu benutzen:
Befehlsauflistung 2.1: /etc/portage/package.accept_keywords Konfiguration für gnumeric |
app-office/gnumeric
|
Testen von bestimmten Versionen
Wenn Sie eine bestimmte Version aus dem Testzweig nutzen wollen, aber nicht
generell die Version aus dem Testzweig installieren möchten, können Sie dies
ebenfalls in package.accept_keywords angeben. In diesem Fall
müssen Sie den = Operator nutzen. Sie können dank der
<=, <, > or >= Operatoren auch eine Reihe von Versionen eines
Pakets freischalten.
In jedem Fall: Wenn Sie Versionsinformationen hinzufügen müssen Sie
einen Operator angeben. Wenn Sie keine Versionsinformationen hinzufügen können
Sie keinen Operator nutzen.
Im folgenden Beispiel geben wir gnumeric-1.2.13 frei:
Befehlsauflistung 2.2: Nutzen einer speziellen gnumeric Version |
=app-office/gnumeric-1.2.13
|
3.c. Nutzung maskierter Pakete
Die Datei package.unmask
Wichtig:
Die Gentoo-Entwickler unterstützen die Verwendung dieses Features nicht.
Bitte gehen Sie mit entsprechender Vorsicht vor, wenn Sie dieses verwenden.
Anfragen zu Support, welche in Verbindung mit package.unmask und/oder
package.mask stehen, werden nicht beantwortet. Sie sind gewarnt worden.
|
Wenn ein Paket von Gentoo-Entwicklern maskiert wird und Sie dennoch (Sie werden
sicherlich einen guten Grund haben) dieses Paket nutzen möchten (trotz der
Gründe, die in package.mask (standardmäßig in
/usr/portage/profiles) genannt sind), fügen Sie die gewünschte
Version (normalerweise ist dies die exakt gleiche Zeile aus
profiles) in der Datei /etc/portage/package.unmask
(oder in einer Datei in dem Verzeichnis, wenn es ein Verzeichnis ist) ein.
Wenn zum Beispiel =net-mail/hotwayd-0.8 maskiert ist, können Sie es durch
ein Hinzufügen der exakt gleichen Zeile zur package.unmask
demaskieren:
Befehlsauflistung 3.1: /etc/portage/package.unmask |
=net-mail/hotwayd-0.8
|
Notiz:
Falls ein Eintrag in /usr/portage/profiles/package.mask einen
Bereich an Paketversionen enthält, müssen Sie nur die Version(en) unmasken, die
Sie wirklich verwenden wollen. Bitte lesen Sie den vorherigen Abschnitt, in dem erklärt wird, wie
Versionen in der package.unmask spezifiziert werden.
|
Die Datei package.mask
Wenn Sie nicht wollen, dass Portage bestimmt Pakete oder bestimmt Versionen von
Paketen installiert, bzw. grundsätzlich installieren kann, können Sie dieses
Paket (oder die Version) durch das Hinzufügen einer entsprechenden Zeile zur
/etc/portage/package.mask (entweder in der Datei oder in
einer Datei in dem Verzeichnis) maskieren.
Wenn Sie zum Beispiel nicht wollen, dass Portage neuere Kernelquellen als
gentoo-sources-2.6.8.1 installiert, fügen Sie die folgende Zeile zur
package.mask hinzu:
Befehlsauflistung 3.2: /etc/portage/package.mask Beispiel |
>sys-kernel/gentoo-sources-2.6.8.1
|
4. Zusätzliche Portage Tools
4.a. dispatch-conf
Das Programm dispatch-conf hilft Ihnen bei der Einbindung der
._cfg0000_<name> Dateien. Diese
._cfg0000_<name> Dateien werden von Portage angelegt, wenn
eine Datei die innerhalb einem durch die CONFIG_PROTECT Variable abgedecktem
Pfad überschrieben werden soll.
Mit dispatch-conf können Sie Aktualisierungen an Ihren
Konfigurationsdateien einbringen und alle Änderungen nachvollziehen.
dispatch-conf legt alle Änderungen zwischen Konfigurationsdateien als
Patches oder in einem RCS Revisionssystem ab. Das bedeutet, dass wenn Sie einen
Fehler begehen bei der Aktualisierung einer Konfigurationsdatei Sie zu jedem
Zeitpunkt zur vorherigen Version Ihrer Konfigurationsdatei zurückkehren können.
Wenn Sie dispatch-conf verwenden können Sie Konfigurationsdateien so
belassen wie sie sind, die neue Konfigurationsdatei verwenden, die aktuelle
bearbeiten, oder die Änderungen interaktiv einpflegen. dispatch-conf hat
zudem noch einige weitere hilfreiche Funktionen:
-
Automatisches mergen von Konfigurationsaktualisierungen, wenn Änderungen nur
in kommentierten Bereichen stattgefunden haben
-
Automatisches mergen von Konfigurationsdateien, wenn die Änderungen nur in
der Menge von Leerzeichen bestehen
Editieren Sie zuerst /etc/dispatch-conf.conf und erstellen Sie das
Verzeichnis, welches in der Variable archive-dir genannt wird.
Befehlsauflistung 1.1: dispatch-conf ausführen |
# dispatch-conf
|
Wenn Sie dispatch-conf ausführen werden Sie durch jede veränderte
Konfigurationsdatei, eine nach der anderen, geführt. Drücken Sie u zur
Aktualisierung (ersetzen) der aktuellen Konfigurationsdatei durch die neuere und
um mit der nächsten Datei fortzufahren. Drücken Sie z um die neue
Konfigurationsdatei zu löschen und um mit der nächsten Datei fortzufahren. Wenn
alle Konfigurationsdateien abgearbeitet wurden wird dispatch-conf
beendet. Sie können es auch jeder Zeit durch drücken von q beenden.
Ziehen Sie für weitere Informationen die Manpage von dispatch-conf zu
Rate. Diese zeigt Ihnen wie man interaktiv aktuelle und neue
Konfigurationsdateien einpflegt, neue Konfigurationsdateien editiert, die
Unterschiede zwischen Dateien betrachtet, und mehr.
Befehlsauflistung 1.2: Lesen der dispatch-conf Manpage |
$ man dispatch-conf
|
4.b. etc-update
Sie können auch etc-update benuzten um Konfigurationsdateien
zusammenzuführen. Es ist nicht so einfach zu benuzten wie dispatch-conf,
noch hat es alle seine Funktionen, bietet aber ein interaktiven Modus für die
Zusammenführung und kann außerdem triviale Änderungen automatisch einbinden.
Jedoch, anders als bei dispatch-conf, wird etc-update alte
Versionen Ihrer Konfigurationsdateien nicht erhalten. Sowie sie eine
Datei aktualisieren ist die alte Version für immer verloren! Sein Sie also
vorsichtig, die Benutzung von etc-update ist erheblich unsicherer
als die Verwendung von dispatch-conf.
Befehlsauflistung 2.1: etc-update ausführen |
# etc-update
|
Nach dem Mischen der einfachen Änderungen wird Ihnen eine Liste mit allen
geschützten Dateien, die auf eine Aktualisierung warten, angezeigt. Zum Schluss
wird Ihnen eine Liste mit den möglichen Optionen angezeigt:
Befehlsauflistung 2.2: etc-update Optionen |
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
|
Wenn Sie -1 eingeben wird etc-update beendet und es werden keine
weiteren Änderungen durchgeführt. Wenn Sie -3 oder -5 eingeben
werden alle gelisteten Konfigurationsdateien mit den neuen Versionen
überschrieben. Es ist daher sehr wichtig, dass Sie zunächst alle
Konfigurationsdateien auswählen, die nicht automatisch aktualisiert werden
sollen. Dies geschieht durch das Eingeben der Zahl links neben der
Konfigurationsdatei.
Als Beispiel wählen wir /etc/pear.conf aus:
Befehlsauflistung 2.3: Aktualisieren einer spezifischen Konfigurationsdatei |
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
|
Sie sehen nun die Änderungen zwischen diesen beiden Dateien. Wenn Sie glauben,
dass die aktualisierte Datei ohne Probleme benutzt werden kann, so geben Sie
1 ein. Wenn Sie glauben, dass eine Aktualisierung der
Konfigurationsdatei nicht notwendig ist geben Sie 2 ein. Wenn Sie die
Konfigurationsdatei interaktiv aktualisieren wollen geben sie 3 ein.
Es gibt keine Grund das interaktive mergen (Zusammenführen) hier näher
auszuführen. Um eine gewisse Vollständigkeit zu gewährleisten listen wir hier
alle möglichen Kommandos, die während des mergen der beiden
Konfigurationsdateien benutzt werden können. Ihnen werden zwei Zeilen (eine
originale, eine vorgeschlagene neue) angezeigt sowie ein Prompt an welchem Sie
eines der folgenden Kommandos eingeben können:
Befehlsauflistung 2.4: Verfügbare Kommandos bei interaktivem mergen |
ed: Edit then use both versions, each decorated with a header.
eb: Edit then use both versions.
el: Edit then use the left version.
er: Edit then use the right version.
e: Edit a new version.
l: Use the left version.
r: Use the right version.
s: Silently include common lines.
v: Verbosely include common lines.
q: Quit.
|
Wenn Sie das Aktualisieren der wichtigen Konfigurationsdateien abgeschlossen
haben können Sie nun die restlichen Dateien automatisch überschreiben.
etc-update wird beendet, wenn es keine aktualisierbaren
Konfigurationsdateien mehr findet.
4.c. quickpkg
Mit quickpkg können Sie Archive von bereits installierten Paketen
erstellen. Diese Archive können genauso wie vorkompilierte Pakete (GRP)
verwender werden. Die Nutzung von quickpkg ist recht simpel: Fügen Sie
einfach den Namen des Pakets an das Kommando an:
Um beispielsweise Archive für curl, orage und procps zu
erstellen:
Befehlsauflistung 3.1: quickpkg Nutzung |
# quickpkg curl orage procps
|
Die vorkompilierten Pakete werden in $PKGDIR (standardmäßig
/usr/portage/packages/) abgelegt. Diese Pakete werden in
$PKGDIR/<category> abgelegt.
5. Abweichen vom Offiziellen Tree
5.a. Nur einen Teil des Portage Tree nutzen
Pakete/Kategorien ausschließen
Sie können eine Auswahl von Kategorien/Paketen aktualisieren und andere
Kategorien/Pakete ignorieren. Wir erreichen dies durch das Ausschließen von
bestimmten Kategorien/Paketen während des emerge --sync Vorgangs mittels
rysnc.
Sie müssen den Namen der Datei, welche die Ausschlussmuster enthält, in der
PORTAGE_RSYNC_EXTRA_OPTS Variable in Ihrer
/etc/portage/make.conf spezifizieren.
Befehlsauflistung 1.1: Spezifizieren der Exclude-Datei in /etc/portage/make.conf |
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
|
Befehlsauflistung 1.2: Ausschluss aller Spiele in /etc/portage/rsync_excludes |
games-*/*
|
Beachten Sie, dass dies zu Abhängigkeitsproblemen führen kann, wenn ein
gewünschtes Paket von einem neuen, aber ausgeschlossenem Paket abhängt.
5.b. Inoffizielle Ebuilds hinzufügen
Definieren eines Portage Overlay Verzeichnis
Sie können Portage mitteilen, auch nicht offizielle Ebuilds zu nutzen, welche
nicht durch den Portage Tree verfügbar sind. Erstellen Sie ein neues Verzeichnis
(zum Beispiel /usr/local/portage), in welchem Sie Ebuilds von
anderen Anbietern ablegen können. Benutzen Sie die gleich Struktur wie im
offiziellen Portage Tree!
Definieren Sie nun die PORTDIR_OVERLAY Variable in
/etc/portage/make.conf und lassen Sie sie auf das zuvor definierte
Verzeichnis zeigen. Wenn Sie nun Portage benutzen wird es diese Ebuilds mit
einbeziehen und diese beim nächsten emerge --sync nicht
löschen/überschreiben.
Mit mehreren Overlays arbeiten
Für die Poweruser, welche mit verschiedenen Overlays entwickeln, Pakete testen
bevor sie in den Portage-Baum übernommen werden oder einfach inoffizielle
Ebuilds von unterschiedlichen Quellen verwenden wollen, bietet das Paket
app-portage/layman Ihnen layman an. Es ist ein Tool, das Ihnen
hilft, die Overlay-Repositories aktuell zu halten.
Installieren und konfigurieren Sie zuerst layman wie im Overlays Users' Guide erklärt und
fügen Sie Ihre gewünschten Repositories mit layman -a
<overlay-name> hinzu.
Nehmen wir an, dass Sie zwei Repositories, genannt java (für
die Java-Ebuilds, die momentan in Arbeit sind) und entapps (für die
Anwendungen, die firmenintern für Ihren Betrieb entwickelt werden), haben.
Diese Repositories können mit folgendem Befehl aktualisiert werden:
Befehlsauflistung 2.1: layman verwenden um alle Repositories zu aktualisieren |
# layman -S
|
Für weitere Informationen zum Arbeiten mit Overlays, lesen Sie bitte man
layman und den layman/overlay
Benutzerleitfaden.
5.c. Software ohne Portage installieren
Nutzung von Portage mit selbst installierter Software
In einigen Fällen wollen Sie die Konfiguration, Installation und Betreuung von
Software selbst vornehmen, ohne das Portage unterstützend eingreift; auch wenn
Portage die in Frage kommenden Pakete ebenfalls installieren könnte. Bekannte
Gründe können Kernelquellen oder Nvidia Treiber sein. Sie können Portage so
konfigurieren, dass es weiß, dass bestimmte Pakete manuell auf Ihrem System
installiert sind. Dieser Schritt wird als Injecting bezeichnet und wird
durch die Datei /etc/portage/profile/package.provided durchgeführt.
Portage wird die dort aufgelisteten Pakete nicht installieren.
Wenn Sie zum Beispiel Portage informieren wollen, dass Sie
gentoo-sources-2.6.11.6 manuell installiert haben, fügen Sie die
folgende Zeile in /etc/portage/profile/package.provided hinzu:
Befehlsauflistung 3.1: Beispiel für package.provided |
sys-kernel/gentoo-sources-2.6.11.6
|
D. Gentoo Netzwerk Konfiguration
1. Der Beginn
1.a. Einführung
Notiz:
Diese Anleitung geht davon aus, das Sie ihren Kernel richtig konfiguriert
haben, die Module für ihre Hardware eingebunden haben und Ihnen die Namen
der Schnittstellen bekannt sind. Des Weiteren nehmen wir an, das sie die
Schnittstelle eth0 konfigurieren, es könnte gleichwohl aber auch
eth1, wlan0 etc. sein.
|
Um mit der Konfiguration Ihrer Netzwerkkarte zu beginnen, müssen Sie Gentoos
RC-System über diese informieren. Das machen Sie, indem Sie einen symbolischen
Link von net.lo zu net.eth0 in
/etc/init.d erstellen.
Befehlsauflistung 1.1: Einen symlink von net.eth0 zu net.lo einrichten |
# cd /etc/init.d
# ln -s net.lo net.eth0
|
Das RC-System von Gentoo kennt nun die Schnittstelle. Es muss aber auch wissen,
wie die neue Schnittstelle konfiguriert werden soll. Alle Netzwerkschnittstellen
werden in /etc/conf.d/net konfiguriert. Es folgt eine
Beispielkonfiguration für DHCP und statische Adressen.
Befehlsauflistung 1.2: Beispiele für /etc/conf.d/net |
config_eth0="dhcp"
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"
|
Notiz:
Wenn Sie keine Konfiguration für ihr Interface angeben, wird DHCP benutzt.
|
Notiz:
CIDR steht für Classless InterDomain Routing. Ursprünglich wurden IPv4-Adressen
in Klassen A, B und C unterteilt. Diese frühe Einteilung wurde der großen
Popularität des Internets nicht gerecht und es bestand Gefahr, das der Vorrat an
einzigartigen Adressen ausgeschöpft würde. CIDR ist ein Adressierungsschema, das
die Zuordnung von mehreren IP-Adressen zu einer erlaubt. Eine CIDR IP-Adresse
sieht aus wie eine normale IP-Adresse, mit dem Unterschied, das sie mit einem
Schrägstrich endet gefolgt von einer Zahl, beispielsweise 192.168.0.0/16.
Weitere Informationen zu CIDR gibt es im RFC 1519.
|
Nachdem wir die Schnittstelle konfiguriert haben, können wir sie mit
untenstehenden Befehlen starten und stoppen:
Befehlsauflistung 1.3: Starten and Stoppen von Netzwerkskripten |
# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop
|
Wichtig:
Um Fehlern bei der Konfiguration des Netzwerks auf die Schliche zu kommen,
werfen Sie einen Blick in /var/log/rc.log. Sofern Sie nicht
rc_logger="NO" in /etc/rc.conf gesetzt haben, werden dort
Informationen zur Boot-Aktivität abgelegt.
|
Haben Sie ihre Netzwerkschnittstelle erst einmal erfolgreich gestartet und
wieder angehalten, möchten Sie vielleicht einen automatischen Start beim Booten
von Gentoo. Das erreichen Sie durch untenstehende Kommandos. Der letzte "rc"
Befehl weist Gentoo an, all jene Skripte zu starten, die im derzeitigen
Runlevel noch nicht gestartet wurden.
Befehlsauflistung 1.4: Konfiguration der Netzwerkschnittstelle zum automatischen Start während des Bootvorgangs |
# rc-update add net.eth0 default
# rc
|
2. Fortgeschrittene Konfiguration
2.a. Erweiterte Konfiguration
Das Herz der Konfiguration der Schnittstellen ist die Variable
config_eth0. Es ist eine hochsprachliche Anweisungsliste zur
Konfiguration der Schnittstelle (in diesem Fall eth0). Die Anweisungen
in der Liste werden der Reihe nach abgearbeitet. Wenn mindestens eine Anweisung
korrekt ausgeführt wird, wird von einer erfolgreichen Konfiguration der
Schnittstelle ausgegangen.
Hier ist eine Liste der eingebauten Anweisungen.
| Anweisung |
Beschreibung |
| null |
Nichts machen |
| noop |
Wenn die Schnittstelle aktiviert ist und eine Adresse vorhanden ist,
beende die Konfiguration erfolgreich.
|
| eine IPv4 oder IPv6 Adresse |
Die angegebene Adresse zur Schnittstelle hinzufügen |
|
dhcp, adsl or apipa (oder ein spezielles Kommando
von einem externen Modul)
|
Das Modul ausführen, das das Kommando bereitstellt. Beispielsweise ruft
dhcp ein Modul auf, das DHCP bereitstellt - das kann entweder
dhcpcd, dhclient oder pump sein.
|
Schlägt eine Anweisung fehl, können sie eine andere Anweisung als
Ausweichlösung angeben. Dieses muss der Konfigurationsstruktur genau folgen.
Sie können die verschiedenen Anweisungen aneinanderhängen. Es folgen einige
Beispiele aus der Praxis.
Befehlsauflistung 1.1: Konfigurationsbeispiel |
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"
|
Notiz:
Wenn Sie das ifconfig Modul benutzen und mehr als eine Adresse
hinzufügen, wird für jede neue Adresse ein Alias erstellt. Mit obigem Beispiel
erhalten Sie zum Beispiel die Schnittstellen eth0, eth0:1 und
eth0:2. Sie können damit nichts weiter anfangen, da der Kernel und
andere Programme eth0:1 und eth0:2 einfach als eth0
behandeln werden.
|
Wichtig:
Die Reihenfolge in den Anweisungen der Ausweichlösung ist wichtig! Würden wir
nicht die null Option hinzufügen, würde apipa nur ausgeführt,
wenn noop fehlschlagen würde.
|
Notiz:
APIPA und DHCP werden später im Detail behandelt.
|
2.b. Netzwerk-Abhängigkeiten
Initskripte in /etc/init.d können von einer speziellen
Netzwerkschnittstelle abhängen oder einfach von net. Alle
Netzwerkschnittstellen in Gentoos Init-System stellen net bereit.
Falls in /etc/rc.conf rc_depend_strict="YES" gesetzt ist,
müssen alle Netzwerkschnittstellen, die net bereitstellen, aktiv sein, bevor
eine Abhängigkeit auf "net" als gegeben angenommen wird. In anderen Worten,
falls Sie ein net.eth0 und net.eth1 sowie ein
Init-Skript haben, das von "net" abhängt, müssen beide Schnittstellen
aktiviert sein.
Andernfalls, wenn Sie rc_depend_strict="NO" gesetzt haben, dann wird die
"net"-Abhängigkeit als gegeben angenommen, sobald mindestens eine
Netzwerkschnittstelle aktiv ist.
Was aber, wenn net.br0 von net.eth0 und
net.eth1 abhängt? net.eth1 könnte eine drahtlose oder
Wählverbindung sein, die vor dem Hinzufügen zur Bridge konfiguriert werden
muss. Das kann nicht in /etc/init.d/net.br0 erfolgen, da es sich
um einen symbolischen Link auf net.lo handelt.
Die Antwort darauf lautet, dass Sie eine rc_need_ Einstellung in
/etc/conf.d/net definieren.
Befehlsauflistung 2.1: net.br0 Abhängigkeit in /etc/conf.d/net |
rc_need_br0="net.eth0 net.eth1"
|
Das allein reicht aber nicht aus. Gentoos Init-Skripte verwenden eine
virtuelle Abhängigkeit namens net, die dem System mitteilt, wann
Netzwerkfunktionalität vorhanden ist. In obigem Beispiel sollte die
Netzwerkfunktionalität aber offensichtlich erst als vorhanden gesehen werden,
wenn net.br0 gestartet wurde, nicht wenn die anderen gestartet
wurden. Wir müssen dies ebenfalls in /etc/conf.d/net angeben:
Befehlsauflistung 2.2: Aktualisieren der virtuellen Abhängigkeiten und Voraussetzungen für Netzwerkfunktionalität |
rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"
|
Weitere Details zu Abhängigkeiten gibt es im Kapitel Schreiben von Initskripten des Gentoo
Handbuchs. Weitere Informationen zur /etc/rc.conf finden Sie als
Kommentare innerhalb der Datei.
2.c. Variablennamen und ihre Werte
Variablennamen sind dynamisch. Normalerweise gehorchen sie der Struktur
variable_${interface|mac|essid|apmac}. Zum Beispiel verwaltet die
Variable dhcpcd_eth0 die Werte für dhcpcd Optionen für eth0 und
dhcpcd_essid verwaltet die Werte der dhcpcd Optionen, wann immer sich
eine Schnittstelle zur ESSID "essid" verbindet.
Nichtsdestotrotz gibt es keine harte Regel, die angibt, das Schnittstellen dem
Schema ethx folgen müssen. In der Tat besitzen viele drahtlose Schnittstellen
die Namen wlanx, rax oder auch ethx. Einige benutzerdefinierte Schnittstellen
wie Bridges können frei wählbare Namen gegeben werden, etwa foo. Um das ganze
noch etwas interessanter zu gestalten, können drahtlose Zugangspunkte Namen mit
nicht alphanumerischen Zeichen haben - das ist wichtig, da Netzwerkparameter
per ESSID eingestellt werden können.
Der Nachteil dessen ist aber, das dadurch Konflikte auftreten, denn Gentoo
benutzt bash Variablen - die dürfen allerdings nur englische alphanumerische
Zeichen enthalten. Um diese Beschränkung zu umgehen, ersetzen wir alle Zeichen,
die keine englischen alphanumerischen Zeichen sind, durch ein _ Zeichen.
Ein weiterer Nachteil der bash ist der Variableninhalt - einige Zeichen müssen
escaped (durch umgekehrten Schrägstrich geschützt) werden. Dazu setzt man ein
\ Zeichen vor das Zeichen, das escaped werden muss. Die folgende Liste
von Zeichen muss auf diese Weise escaped werden: ", ' und
\.
In diesem Beispiel benutzen wir eine drahtlose ESSID, da diese den größten
Bereich an Zeichen zulässt. Gehen wir davon aus, dass wir die ESSID
My "\ NET verwenden:
Befehlsauflistung 3.1: Beispiel für Variablennamen |
dns_domain_My____NET="My \"\\ NET"
|
3. Modulare Vernetzung
3.a. Netzwerkmodule
Wir unterstützen nun auch modulare Netzwerk-Skripte, sodass wir leicht
Unterstützung für neue Schnittstellen-Typen und Konfigurations-Module
hinzufügen können, während die Kompatibilität mit bereits vorhandenen erhalten
bleibt.
Module werden standardmäßig geladen, wenn das Paket, das sie benötigen,
installiert ist. Wenn Sie hier ein Modul angeben, dessen Paket nicht
installiert ist, erhalten Sie eine Fehler, der Ihnen mitteilt, welche Pakete
installiert werden müssen. Im besten Fall verwenden Sie nur die
Modul-Einstellungen, wenn Sie zwei oder mehr Pakete installiert haben, die den
gleichen Dienst zur Verfügung stellen, und geben so einem Paket den Vorzug.
Notiz:
Alle besprochenen Einstellungen werden in /etc/conf.d/net
gespeichert, sofern nicht anders angegeben.
|
Befehlsauflistung 1.1: Modul-Präferenz |
modules="ifconfig"
modules_eth0="pump"
modules="!iwconfig"
|
3.b. Schnittstellen-Handler
Wir liefern aktuell zwei Schnittstellen: ifconfig und iproute2.
Sie benötigen eine von diesen, um irgendeine Netzwerk-Konfiguration machen zu
können.
ifconfig ist standardmäßig installiert (das Paket net-tools ist
Bestandteil des Systemprofils). iproute2 ist mächtiger und flexibler,
aber nicht standardmäßig enthalten.
Befehlsauflistung 2.1: Installation von iproute2 |
# emerge sys-apps/iproute2
modules="ifconfig"
|
Da ifonfig und iproute2 beide sehr ähnlich funktionieren,
erlauben wir eine Zusammenarbeit beider Basis-Konfigurationen. Zum Beispiel
funktionieren die folgenden beiden Code-Abschnitte unabhängig vom verwendeten
Modul.
Befehlsauflistung 2.2: Beispiele für ifconfig und iproute2 |
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
|
3.c. DHCP
DHCP ist eine Möglichkeit, Netzwerk-Informationen (IP-Adresse, DNS-Server,
Gateways, etc.) von einem DHCP-Server zu erhalten. Wenn es in Ihrem Netzwerk
einen DHCP-Server gibt, bedeutet dies, dass die Clients nur DHCP verwenden
müssen und der DHCP-Server für das richtige Setup sorgt. Natürlich müssen Sie
andere Dinge, wie Drahtlosnetzwerke, PPP, und so weiter, wenn nötig, selbst
konfigurieren, bevor Sie DHCP verwenden können.
DHCP kann durch dhclient, dhcpcd oder pump zur Verfügung
gestellt werden. Jedes DHCP-Modul hat seine Vor- und Nachteile - hier ein kurzer
Überblick.
| DHCP-Modul |
Paket |
Vorteile |
Nachteile |
| dhclient |
net-misc/dhcp |
Kommt von ISC, die gleichen Leute, aus deren Feder die BIND DNS-Software
stammt. In hohem Maße konfigurierbar.
|
Die Konfiguration ist allzu komplex, die Software ist ziemlich überladen,
kann keine NTP-Server über DHCP erhalten, sendet standardmäßig den Hostnamen
nicht.
|
| dhcpcd |
net-misc/dhcpcd |
Seit langem der Standard unter Gentoo, keine Abhängigkeiten zu anderen
Tools und wird aktiv von Gentoo weiterentwickelt.
|
Kann manchmal etwas langsam sein und funktioniert nicht als Daemon, wenn
das Lease unendlich ist.
|
| pump |
net-misc/pump |
Leichtgewicht, keine Abhängigkeiten von fremden Tools
|
Wird nicht mehr gepflegt, unzuverlässig, insbesondere über Modems, kann
keine NIS-Server über DHCP erhalten.
|
Wenn Sie mehr als einen DHCP-Client installiert haben, müssen Sie angeben,
welcher verwendet werden soll - anderenfalls verwenden wir, wenn verfügbar,
dhcpcd als Standard.
Verwenden Sie module_eth0="..." um dem Modul bestimmte Optionen zu
übergeben. (ändern Sie module zu dem DHCP-Modul, dass Sie verwenden -
z.B. dhcpcd_eth0).
Wir versuchen DHCP relativ unwissend zu machen - deswegen unterstützen wir die
folgenden Befehle mit Hilfe der dhcp_eth0 Variable. Der Normalfall ist,
keine davon zu setzen:
-
release - gibt die IP-Adresse für die Wiederverwendung frei
-
nodns - /etc/resolv.conf nicht überschreiben
-
nontp - /etc/ntp.conf nicht überschreiben
-
nonis - /etc/yp.conf nicht überschreiben
Befehlsauflistung 3.1: Beispiel-DHCP-Konfiguration in /etc/conf.d/net |
modules="dhcpcd"
config_eth0="dhcp"
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Notiz:
dhcpcd und pump senden im Normalfall den aktuellen Hostnamen zum
DHCP-Server, sodass Sie ihn nicht mehr angeben müssen.
|
3.d. ADSL mit PPPoE/PPPoA
Zunächst müssen wir die ADSL-Software installieren.
Befehlsauflistung 4.1: Das ppp-Paket installieren |
# emerge net-dialup/ppp
|
Zweitens, erzeugen Sie das PPP-Netzwerkskript und das Netzwerkskript für die
Ethernet-Schnittstelle, die von PPP verwendet werden soll:
Befehlsauflistung 4.2: Erzeugen des PPP Netzwerkskripts |
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
|
Stellen Sie sicher, dass rc_depend_strict in /etc/rc.conf
auf "YES" gesetzt ist.
Nun müssen wir /etc/conf.d/net konfigurieren.
Befehlsauflistung 4.3: Eine grundlegende PPPoE-Konfiguration |
config_eth0=null
config_ppp0="ppp"
link_ppp0="eth0"
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
rc_need_ppp0="net.eth0"
|
Ihr Kennwort können Sie auch in /etc/ppp/pap-secrets angeben.
Befehlsauflistung 4.4: Beispiel einer /etc/ppp/pap-secrets |
"username" * "password"
|
Wenn Sie PPPoE mit einem USB-Modem verwenden werden Sie br2684ctl emergen
müssen. Bitte lesen Sie hierzu
/usr/portage/net-dialup/speedtouch-usb/files/README für weitere
Informationen zur korrekten Konfiguration.
Wichtig:
Bitte lesen Sie den Abschnitt zu ADSL und PPP in
/usr/share/doc/openrc-0.8.3-r1/net.example.bz2 sorgfältig durch.
Dort sind viel detailliertere Erklärungen zu allen Einstellungen enthalten, die
Sie für Ihre spezielle PPP-Einrichtung wahrscheinlich nutzen können.
Natürlich müssen Sie 0.8.3-r1 durch Ihre OpenRC-Version ersetzen.
|
3.e. APIPA (Automatic Private IP Addressing)
APIPA versucht, freie Adressen im Bereich 169.254.0.0-169.254.255.255 durch
Ansprechen einer zufälligen Adresse aus diesem Bereich über die Schnittstelle
mit Hilfe von arping zu finden. Wenn darauf keine Antwort erfolgt, wird diese
Adresse der Schnittstelle zugewiesen.
Das ist nur für LANs sinnvoll, in dem sich kein DHCP-Server befindet, Sie sich
nicht direkt mit dem Internet verbinden und alle anderen Computer ebenfalls
APIPA verwenden.
Für APIPA-Unterstützung muss net-misc/iputils oder
net-analyzer/arping emerged werden.
Befehlsauflistung 5.1: APIPA-Konfiguration in /etc/conf.d/net |
config_eth0="dhcp"
fallback_eth0="apipa"
config_eth0="apipa"
|
3.f. Bonding
Zum Bonding/Trunking von Links muss net-misc/ifenslave emerged werden.
Bonding wird zur Erhöhung der Netzwerk-Bandbreite verwendet. Wenn Sie zwei
Netzwerkkarten im gleichen Netzwerk verwenden, können Sie beide Karten
so verbinden, dass Ihre Anwendungen nur eine Schnittstelle sehen, aber
tatsächlich beide Karten nutzen.
Befehlsauflistung 6.1: Bonding-Konfiguration in /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0="null"
rc_need_bond0="net.eth0 net.eth1 net.eth2"
|
3.g. Bridging (802.1d-Unterstützung)
Für Bridging-Unterstützung muss net-misc/bridge-utils emerged werden.
Bridging wird verwendet, um Netzwerke zusammenzufügen. Zum Beispiel:
Sie haben einen Server, der sich über ein ADSL-Modem mit dem Internet
verbindet und eine drahtlose Netzwerkkarte, um andere Computer über das
ADSL-Modem mit dem Internet zu verbinden. Sie könnten nun mit Hilfe einer
Bridge beide Schnittstellen zusammenfügen.
Befehlsauflistung 7.1: Bridge-Konfiguration in /etc/conf.d/net |
brctl_br0="setfd 0" "sethello 0" "stp off"
bridge_br0="eth0 eth1"
config_eth0="null"
config_eth1="null"
config_br0="192.168.0.1/24"
rc_need_br0="net.eth0 net.eth1"
|
Wichtig:
Um weitere Bridge-Setups zu verwenden, sollten Sie die Dokumentation zu Variablennamen lesen.
|
3.h. MAC-Adresse
Falls Bedarf besteht, können Sie die MAC-Adresse Ihres Interfaces mit Hilfe
der Netzwerk-Konfigurationsdatei ebenfalls ändern.
Befehlsauflistung 8.1: Beispiel zum Wechseln der MAC-Adresse |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
3.i. Tunnelling
Es muss nichts emerged werden, da der Schnittstellen-Handler alles erledigt.
Befehlsauflistung 9.1: Tunnelling-Konfiguration in /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0="192.168.0.2 peer 192.168.1.1"
|
3.j. VLAN (802.1q-Unterstützung)
Für VLAN-Unterstützung muss net-misc/vconfig emerged werden.
Virtual LAN ist eine Gruppe von Netzwerk-Geräten, die sich verhalten, als wären
sie mit einem einzelnen Netzwerk-Segment verbunden, auch wenn dies nicht der
Fall ist. Mitglieder eines VLANs können nur Mitglieder des gleichen VLANs
sehen, auch wenn sie sich im gleichen physikalischen Netzwerk befinden.
Befehlsauflistung 10.1: VLAN-Konfiguration in /etc/conf.d/net |
vlans_eth0="1 2"
vconfig_eth0="set_name_type VLAN_PLUS_VID_NO_PAD"
vconfig_vlan1="set_flag 1" "set_egress_map 2 6"
config_vlan1="172.16.3.1 netmask 255.255.254.0"
config_vlan2="172.16.2.1 netmask 255.255.254.0"
|
Wichtig:
Um VLAN-Setups zu verwenden, sollten Sie die Dokumentation Variablennamen lesen.
|
4. Drahtlose Netzwerkfunktionalität
2.a. Einleitung
Kabellose Netzwerkverbindungen sind unter Linux recht einfach einzurichten. Es
gibt zwei Möglichkeiten, Wifi zu konfigurieren: Mit grafischen Clients oder mit
der Kommandozeile.
Der einfachste Weg führt über die Verwendung von grafischen Clients,
sobald Sie eine Desktopumgebung
installiert haben. Die meisten grafischen Clients, wie z.B. wicd und NetworkManager, sind
ziemlich selbsterklärend. Sie bieten ein praktisches Interface an, mit dem Sie
innerhalb von ein paar Sekunden mit ein paar Mausklicks in ein Netzwerk
gelangen.
Notiz:
wicd bietet zusätzlich zum grafischen Interface ein
Kommandozeilen-Tool an. Sie erhalten dieses, indem Sie wicd mit
aktiviertem ncurses USE-Flag emergen. Das wicd-curses Tool ist
insbesondere für Leute nützlich, die keine gtk-basierte Desktopumgebung
verwenden, aber trotzdem ein einfaches Kommandozeilenwerkzeug haben wollen, das
keine manuelle Bearbeitung von Konfigurationsdateien erforderlich macht.
|
Wenn Sie jedoch keinen grafischen Client verwenden wollen, dann können Sie Wifi
auf der Kommandozeile durch Bearbeiten einiger Konfigurationsdateien
konfigurieren. Das dauert etwas länger, aber erfordert auch die wenigsten
heruntergeladenen und installierten Pakete. Da die grafischen Clients
größtenteils selbsterklärend sind (mit hilfreichen Screenshots auf deren
Homepages), werden wir uns hier auf die Kommandozeilenalternativen
konzentrieren.
Sie können kabellose Netzwerke auf der Kommandozeile aufsetzen, indem Sie
wireless-tools und wpa_supplicant installieren. Was Sie hier
beachten müssen, ist, dass Sie die kabellosen Netzwerke global konfigurieren,
und nicht pro Netzwerkkarte.
Die beste Wahl ist wpa_supplicant. Sie finden eine Auflistung der
unterstützten Treiber auf der wpa_supplicant Seite.
wireless-tools unterstützt fast alle Karten und Treiber, aber es kann
keine Verbindung zu Access-Points, die nur WPA unterstützen, aufbauen. Wenn
Ihre Netzwerke nur WEP-Verschlüsselung anbieten oder komplett ungeschützt sind,
dann werden Sie die Einfachheit der wireless-tools vorziehen.
Warnung:
Der Treiber linux-wlan-ng wird zu diesem Zeitpunkt nicht von baselayout
unterstützt. Dies liegt daran, dass linux-wlan-ng eine eigene Einrichtung
und Konfiguration hat, die sich von allen anderen unterscheidet. Es gibt
Gerüchte, dass die linux-wlan-ng Entwickler ihre Umgebung zu der von
wireless-tools wechseln wollen. Wenn dies geschieht steht es Ihnen frei
linux-wlan-ng mit baselayout zu verwenden.
|
3.b. WPA Supplicant
WPA Supplicant ist
ein Paket, welches es Ihnen erlaubt, sich mit einem Access-Point mit
aktiviertem WPA zu verbinden.
Befehlsauflistung 2.1: Installieren von wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Wichtig:
Sie müssen CONFIG_PACKET in Ihrem Kernel aktiviert haben, damit
wpa_supplicant funktionieren kann. Führen Sie grep CONFIG_PACKET
/usr/src/linux/.config aus, um zu sehen, ob Sie es in Ihrem Kernel
aktiviert haben.
|
Notiz:
Abhängig von Ihren USE-Flags kann wpa_supplicant ein grafisches, in Qt4
geschriebenes Interface, das sich gut in KDE integriert, installieren. Um dieses
zu erhalten, führen Sie echo "net-wireless/wpa_supplicant qt4" >>
/etc/portage/package.use als root aus, bevor Sie wpa_supplicant
emergen.
|
Nun muss /etc/conf.d/net konfiguriert werden, so dass
wpa_supplicant gegenüber wireless-tools bevorzugt wird (wenn
beide installiert sind ist wireless-tools der Standard).
Befehlsauflistung 2.2: Konfiguration von /etc/conf.d/net für wpa_supplicant |
modules="wpa_supplicant"
wpa_supplicant_eth0="-Dmadwifi"
|
Notiz:
Wenn Sie den host-ap Treiber verwenden, müssen Sie Ihre Karte in den Managed
Modus versetzen, bevor diese mit wpa_supplicant korrekt verwendet
werden kann. Sie können dies mit iwconfig_eth0="mode managed" in
/etc/conf.d/net erreichen.
|
Das war einfach, oder? Trotzdem müssen wir noch wpa_supplicant selbst
konfigurieren. Dies ist einen Tick schwieriger und abhängig davon wie
abgesichert die Access-Points sind, mit denen Sie sich verbinden wollen. Das
folgende Beispiel ist vereinfacht worden und stammt aus
/usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz,
welches mit wpa_supplicant ausgeliefert wird.
Befehlsauflistung 2.3: Ein /etc/wpa_supplicant/wpa_supplicant.conf Beispiel |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="einfach"
psk="sehr geheime Passphrase"
priority=5
}
network={
ssid="zweite ssid"
scan_ssid=1
psk="sehr geheime Passphrase"
priority=2
}
network={
ssid="Beispiel"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="klartext-test"
key_mgmt=NONE
}
network={
ssid="statischer-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
network={
ssid="statischer-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="geheime Passphrase"
}
|
4.c. Wireless-Tools
Erste Einrichtung und Managed Modus
Wireless
Tools liefert eine generische Art grundlegende Wireless-Schnittstellen zu
konfigurieren; bis zum WEP Sicherheitslevel. WEP ist zwar eine schwache
Sicherheitsmethode, aber auch die am meisten verbreitetste.
Die Konfiguration von Wireless-Tools wird von einer kleinen Anzahl von
Hauptvariablen kontrolliert. Die folgende Beispielskonfigurationsdatei sollte
allen Ihren Bedürfnissen entsprechen. Eins sollte jedoch beachtet werden:
bei keiner Konfiguration gilt die Regel "verbinde mit dem stärksten
unverschlüsselten Access-Point", wir versuchen unter allen Umständen eine
Verbindung mit irgendetwas aufzubauen.
Befehlsauflistung 3.1: Installieren von wireless-tools |
# emerge net-wireless/wireless-tools
|
Notiz:
Auch wenn Sie Ihre Wireless-Einstellungen in /etc/conf.d/wireless
speichern können, empfiehlt dieser Leitfaden dennoch dass Sie diese in
/etc/conf.d/net speichern.
|
Wichtig:
Sie werden die Dokumentation über
Variablennamen
konsultieren müssen.
|
Befehlsauflistung 3.2: Beispielseinrichtung von iwconfig in /etc/conf.d/net |
modules="iwconfig"
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
preferred_aps="'ESSID1' 'ESSID2'"
|
Feinabstimmung der Auswahl von Access-Points
Sie können einige weitere Optionen hinzufügen um eine Feinabstimmung, der
Auswahl der Access-Points, zu erreichen. Normalerweise sind diese Einstellungen
nicht notwendig.
Sie können entschieden ob nur mit bevorzugten Access-Points verbunden werden
soll, oder nicht. Standardmäßig wird, wenn alles konfigurierte fehlschlug und
mit einem unverschlüsselten Access-Point verbunden werden kann, dies auch
erfolgen. Dies kann von der associate_order Variable kontrolliert
werden. Es folgt eine Tabelle mit den Werten und welche Funktion sie ausüben.
| Wert |
Beschreibung |
| any |
Standardverhalten |
| preferredonly |
Es wird nur mit sichtbaren APs in der bevorzugten Liste verbunden |
| forcepreferred |
Es wird zwinged mit APS in der bevorzugten Reihenfolge verbunden, wenn
Sie bei einem Scan nicht gefunden wurden.
|
| forcepreferredonly |
Es wird nicht nach APs gescannt, stattdessen wird versucht der
Reihenfolge nach mit jeden einzelnen eine Verbindung aufzubauen
|
| forceany |
Genau wie forcepreferred und es wird zudem mit jedem anderen
verfügbaren AP verbunden
|
Schließlich haben wir Auslese durch blacklist_aps und unique_ap.
blacklist_aps funktioniert in ähnlicher Weise wie preferred_aps.
unique_ap ist ein yes oder no Wert, der mitteilt ob eine
zweite Wireless-Schnittstelle sich mit demselben Access-Point verbinden kann
wie die erste Schnittstelle.
Befehlsauflistung 3.3: Beispiele von blacklist_aps und unique_ap |
blacklist_aps="'ESSID3' 'ESSID4'"
unique_ap="yes"
|
Ad-Hoc und Master Modi
Wenn Sie sich als einen Ad-Hoc Knoten einrichten wollen, weil die Verbinung
mit Access-Points im Managed-Modus fehlschlägt, dann können Sie folgendes tun.
Befehlsauflistung 3.4: Rückfall auf Ad-Hoc Modus |
adhoc_essid_eth0="Dieser Ad-Hoc Knoten"
|
Was ist mit der Verbindung zu Ad-Hoc Netzwerken oder das Laufen im Master-Modus
um ein Access-Point zu werden? Hier ist eine Konfiguration für genau das! Sie
müssen unter Umständen, wie oben beschrieben, WEP Schlüssel angeben.
Befehlsauflistung 3.5: Beispiels ad-hoc/master Konfiguration |
mode_eth0="ad-hoc"
essid_eth0="Dieser Ad-Hoc Knoten"
channel_eth0="9"
|
Wichtig:
Das folgende stammt wörtlich aus der BSD-Wavelan-Dokumentation, welche sich in
der NetBSD
Dokumentation findet. Es gibt 14 mögliche Kanäle. Es wurde berichtet,
dass Kanäle 1-11 legal sind in Nordamerika, Kanäle 1-13 für den größten Teil
von Europa, Kanäle 10-13 für Frankreich und nur Kanal 14 für Japan. Wenn im
Zweifel, wenden Sie sich bitte an die Dokumentation, die mit Ihrer Karte oder
Ihrem Access-Point ausgeliefert wurde. Stellen Sie sicher, dass der Kanal, den
Sie wählen auch derselbe ist, den Sie für Ihren Access-Point (oder die andere
Karte im Ad-Hoc Netzwerk) gewählt haben. Der Standard für Karten, die in den
Vereinigten Staaten und dem größten Teil von Europa verkauft werden ist 3. Der
Standard für Karten die in Frankreich verkauft werden ist 11 und der Standard
für Karten die in Japan verkauft werden ist 14.
|
Fehlerbehebung bei Wireless-Tools
Es gibt einige weitere Variablen die Sie verwenden können, die Ihnen helfen
Ihr Wireless zum Laufen zu kriegen, wegen Treiber- oder Umgebungsproblemen.
Hier ist eine Tabelle mit weiteren Dingen die Sie versuchen können:
| Variable |
Standardwert |
Beschreibung |
| iwconfig_eth0 |
|
Siehe die iwconfig man Seite für Details was iwconfig gesendet
werden soll
|
| iwpriv_eth0 |
|
Siehe die iwpriv man Seite für Details was iwpriv gesendet werden
soll
|
| sleep_scan_eth0 |
0 |
Die Anzahl der Sekunden die gewartet werden bevor ein Scan versucht wird.
Dies wird benötigt wenn der/das Treiber/Firmware mehr Zeit benötigt um
aktiv zu werden, bevor es verwendet werden kann.
|
| sleep_associate_eth0 |
5 |
Die Anzahl der Sekunden die die Schnittstelle warten soll um sich mit dem
Access-Point zu assoziieren, bevor es zum Nächsten übergeht
|
| associate_test_eth0 |
MAC |
Einige Treiber setzen die MAC Adresse assoziiert mit einer ungültigen
nicht zurück wenn sie die Verbindung verlieren oder versuchen zu
assoziieren. Einige Treiber setzen das Qualitätslevel nicht zurück wenn
sie die Verbindung verlieren oder versuchen zu assoziieren. Gültige
Einstellungen sind MAC, quality und all.
|
| scan_mode_eth0 |
|
Einige Treiber müssen im Ad-Hoc Modus scannen, also sollten Sie versuchen
hier ad-hoc zu setzen, wenn das Scannen fehlschlägt.
|
| iwpriv_scan_pre_eth0 |
|
Sendet einige iwpriv Befehle zur Schnittstelle vor dem scannen.
Siehe die iwpriv man Seite für weitere Details
|
| iwpriv_scan_post_eth0 |
|
Sendet einige iwpriv Befehle zur Schnittstelle nach dem scannen.
Siehe die iwpriv man Seite für weitere Details
|
4.d. Definieren von Netzwerkkonfigurationen nach ESSID
Manchmal kann es vorkommen, dass Sie bei ESSID1 eine statische IP
benötigen und bei der Verbindung mit ESSID2 benötigen Sie DHCP. Genauer
gesagt können die meisten der Modulvariablen per ESSID kontrolliert werden. So
funktioniert es:
Notiz:
Diese funktionieren, wenn Sie WPA Supplicant oder Wireless-Tools verwenden.
|
Wichtig:
Sie werden die Dokumentation über Variablennamen konsultieren
müssen.
|
Befehlsauflistung 4.1: Netzwerkeinstellungen nach ESSID gehen vor |
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="suche.diese.Domäne suche.jene.Domäne"
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"
|
5. Funktionalität hinzufügen
5.a. Erweiterung der Standardfunktionen
Vier Funktionen können in /etc/conf.d/net definiert werden, die im
Zusammenhang mit den start/stop Funktionen aufgerufen werden. Die
Funktionen werden mit dem Namen der Schnittstelle zuerst aufgerufen, so dass
eine Funktion mehrere Adapter kontrollieren kann.
Der Rückgabewert der preup() und predown() Funktionen sollte 0
(Erfolg) sein um die erfolgreiche Konfiguration der Schnittstelle anzuzeigen.
Gibt preup() einen von Null verschiedenen Wert zurück, wird die
Konfiguration abgebrochen. Eine Dekonfiguration wird nicht durchgeführt,
falls predown() einen von Null verschiedenen Wert zurückgibt.
Die Rückgabewerte der postup() und postdown() Funktionen werden
ignoriert, da dort keine Reaktion auf Fehler vorgesehen ist.
${IFACE} wird auf die Schnittstelle gesetzt, die (de-)aktiviert werden
soll. ${IFVAR} ist ${IFACE} konvertiert zu einem Variablennamen,
den die Bash erlaubt.
Befehlsauflistung 1.1: Beispiele für pre/post up/down Funktionen in /etc/conf.d/net |
preup() {
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
Notiz:
Für weitere Informationen, wie Sie Ihre eigenen Funktionen schreiben können,
siehe /usr/share/doc/openrc-*/net.example.bz2.
|
5.b. Funktionserweiterungen für die Wireless Tools
Notiz:
Funktioniert nicht mit WPA Supplicant - die ${ESSID} und
${ESSIDVAR} Variablen sind in der postup() Funktion
verfügbar.
|
Zwei Funktionen können in /etc/conf.d/net definiert werden, die im
Zusammenhang mit der associate Funktion aufgerufen werden. Die Funktionen werden
mit dem Namen der Schnittstelle zuerst aufgerufen, so das man mit einer Funktion
mehrere Adapter kontrollieren kann.
Der Rückgabewert der preassociate() Funktion sollte 0 sein, um
anzuzeigen, dass die (De-)Konfiguration der Schnittstelle fortgesetzt werden
kann. Wenn preassociate() einen von Null verschiedenen Wert zurückgibt,
wird die Konfiguration der Schnittstelle abgebrochen.
Der Rückgabewert der postassociate() Funktion wird ignoriert, da es im
Fehlerfall nichts zu tun gibt.
${ESSID} wird auf die exakte ESSID des Zugangspunktes gesetzt, zu dem
Sie sich verbinden.
${ESSIDVAR} ist ${ESSID} umgewandelt in einen Variablennamen, den
Bash erlaubt.
Befehlsauflistung 2.1: pre/post association Funktionen in /etc/conf.d/net |
preassociate() {
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
Notiz:
Auf ${ESSID} und ${ESSIDVAR} kann in den predown() und
postdown() Funktionen nicht zugegriffen werden.
|
Notiz:
Für weitere Informationen, wie Sie Ihre eigenen Funktionen schreiben können,
siehe /usr/share/doc/openrc-*/net.example.bz2.
|
6. Netzwerkmanagement
6.a. Netzwerkmanagement
Wenn Sie und Ihr Computer ständig unterwegs sind, haben sie schätzungsweise
nicht immer ein Ethernet Kabel oder einen Zugangspunkt in Reichweite. Oder aber
Sie möchten das Netzwerk automatisch konfiguriert haben, wenn ein Netzwerkkabel
eingesteckt wird bzw ein Zugangspunkt gefunden wird.
An dieser Stelle finden Sie einige Tools, die Ihnen dabei behilflich sind.
Notiz:
Diese Anleitung stellt nur ifplugd vor, es gibt jedoch Alternativen wie
netplug. netplug ist eine schlanke Alternative zu ifplugd,
ist aber abhängig davon, dass Ihre Netzwertreiber im Kernel korrekt
funktionieren, was viele Treiber jedoch nicht tun.
|
6.b. ifplugd
ifplugd ist ein
Dämon, der Schnittstellen startet oder stoppt wenn ein Netzwerkkabel einsteckt
oder abgezogen wird. Es kann außerdem die Verbindung zu drahtlosen
Zugangspunkten erkennen, wenn diese in Reichweite kommen.
Befehlsauflistung 2.1: ifplugd installieren |
# emerge sys-apps/ifplugd
|
Die Konfiguration von ifplugd is relativ simpel. Die Konfigurationsdatei ist
/etc/conf.d/net. Führen Sie man ifplugd aus, für Details zu
den verfügbaren Variablen. Sehen Sie sich auch
/usr/share/doc/openrc-*/net.example.bz2 für weitere Beispiele an.
Befehlsauflistung 2.2: Beispielhafte Konfiguration für ifplug |
ifplugd_eth0="..."
ifplugd_eth0="--api-mode=wlan"
|
Zusätzlich zur Verwaltung von verschiedenen Netzwerkverbindungen, möchten Sie
unter Umständen ein Tool hinzufügen, dass es erleichtert mit verschiedenen
DNS-Servern und Konfigurationen zu arbeiten. Dies ist sehr hilfreich, wenn Sie
Ihre IP-Adresse über DHCP erhalten. Installieren Sie einfach mit emerge
openresolv.
Befehlsauflistung 2.3: Installation von openresolv |
# emerge openresolv
|
Sehen Sie sich man resolvconf an, um mehr über seine Funktionen zu
lernen.
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|