Gentoo Logo

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

(Dieses Beispiel ist die Summe der Einstellungen in base,
 default/linux, default/linux/x86 und default/linux/x86/13.0/)
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):

  1. Standardeinstellung für USE deklariert in den make.defaults Dateien, die Teil Ihres Profils sind.
  2. Benutzerdefinierte USE-Einstellungen in /etc/portage/make.conf
  3. Benutzerdefinierte USE-Einstellungen in /etc/portage/package.use
  4. 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 ] [ > ] [ >> ]


Drucken

Alles ansehen

Seite aktualisiert 9. Februar 2013

Diese Übersetzung wird nicht länger gepflegt

Zusammenfassung: 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.

Sven Vermeulen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Entwickler

Tavis Ormandy
Gentoo Alpha Entwickler

Jason Huebel
Gentoo AMD64 Entwickler

Guy Martin
Gentoo HPPA Entwickler

Pieter Van den Abeele
Gentoo PPC Entwickler

Joe Kallar
Gentoo SPARC Entwickler

John P. Davis
Bearbeiter

Pierre-Henri Jondot
Bearbeiter

Eric Stockbridge
Bearbeiter

Rajiv Manglani
Bearbeiter

Jungmin Seo
Bearbeiter

Stoyan Zhekov
Bearbeiter

Jared Hudson
Bearbeiter

Colin Morey
Bearbeiter

Jorge Paulo
Bearbeiter

Carl Anderson
Bearbeiter

Jon Portnoy
Bearbeiter

Zack Gilburd
Bearbeiter

Jack Morgan
Bearbeiter

Benny Chuang
Bearbeiter

Erwin
Bearbeiter

Joshua Kinard
Bearbeiter

Tobias Scherbaum
Bearbeiter

Jochen Maes
Bearbeiter

Xavier Neys
Bearbeiter

Joseph Jezak
Bearbeiter

Gerald J. Normandin Jr.
Korrektor

Donnie Berkholz
Korrektor

Ken Nowack
Korrektor

Lars Weiler
Mitarbeiter

Tobias Scherbaum
Übersetzer

Jens Schittenhelm
Übersetzer

Patrick Sudowe
Übersetzer

Torsten Veller
Übersetzer

Michael Frey
Übersetzer

Markus Nigbur
Übersetzer

Boris Ruppert
Übersetzer

Jan Hendrik Grahl
Übersetzer

Christian Hartmann
Korrektor

Martin Bürger
Übersetzer

Sophie Lee
Übersetzer

Thomas Gabelmann
Übersetzer

Timo Rothweiler
Übersetzer

Sebastian Westermayer
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.