Haftungsausschluss:
Dieses Handbuch wurde durch eine neuere Version ersetzt und wird nicht länger gepflegt.
|
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
2. USE-Flags
Inhalt:
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
|
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
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.
|