USE Flags

Durch die USE-Flags wird das System angepasst. 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.  Durch die korrekte Definition der Schlüsselwörter wird das System speziell auf die Bedürfnisse des Benutzers zugeschnitten.

Werfen Sie einen Blick auf ein konkretes Beispiel: das kde-Schlüsselwort. Wenn dieses Schlüsselwort nicht in der USE-Variable ist, werden alle Pakete, die optionale KDE-Unterstützung haben, ohne KDE-Unterstützung kompiliert. Alle Pakete, die eine optionale KDE-Abhängigkeit haben, werden ohne Installation der KDE-Bibliotheken (als Abhängigkeit) installiert. Wenn das kde-Schlüsselwort definiert ist, werden diese Pakete mit KDE-Unterstützung kompiliert und die KDE-Bibliotheken werden als Abhängigkeit installiert.

Um diese Standardeinstellung zu ändern, fügen Sie Schlüsselwörter zu / von der USE-Variablen hinzu oder entfernen Sie sie. Dies geschieht durch die Definition der USE-Variablen in /etc/portage/make.conf. In dieser Variable kann man die zusätzlichen USE-Flags hinzufügen oder die USE-Flags entfernen, die nicht mehr benötigt werden. Dies geschieht durch Präfixierung des Schlüsselwortes mit dem Minuszeichen (-).

Zum Beispiel, um Unterstützung für KDE und Qt zu entfernen, aber Unterstützung für LDAP hinzuzufügen, kann die folgende USE in /etc/portage/make.conf definiert werden:

# nano -w /etc/portage/make.conf
USE="-kde -qt4 -qt5 ldap"

Die Änderung bzw Anpassung von USE-Flags erfordert eine Aktualisierung der damit zusammenhängenden Dateien. Durch den Befehl etc-update werden die Dateien auf Aktualisierungen überprüft.  Falls diese vorliegen werden die Dateien hier angezeigt. Nach Auswahl der Datei werden die Unterschiede angezeigt und können gespeichert oder ignoriert werden. (Bitte beachten: mit etc-update werden keine Pakete aktualisiert. Dies wird nachträglich durch emerge –newuse world durchgeführt)

Eine Aktualisierung ist zum Beispiel bei einem Wechsel des Profils erforderlich. Ein Profil stellt Grundeinstellungen zur Kompilierung von Paketen zur Verfügung. Die derzeit verfügbaren Profile:

michi@localhost ~ $ eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/13.0
[2] default/linux/amd64/13.0/selinux
[3] default/linux/amd64/13.0/desktop
[4] default/linux/amd64/13.0/desktop/gnome
[5] default/linux/amd64/13.0/desktop/gnome/systemd
[6] default/linux/amd64/13.0/desktop/plasma
[7] default/linux/amd64/13.0/desktop/plasma/systemd
[8] default/linux/amd64/13.0/developer
[9] default/linux/amd64/13.0/no-multilib
[10] default/linux/amd64/13.0/systemd *
[11] default/linux/amd64/13.0/x32
[12] hardened/linux/amd64
[13] hardened/linux/amd64/selinux
[14] hardened/linux/amd64/no-multilib
[15] hardened/linux/amd64/no-multilib/selinux
[16] hardened/linux/amd64/x32
[17] hardened/linux/musl/amd64
[18] hardened/linux/musl/amd64/x32
[19] default/linux/uclibc/amd64
[20] hardened/linux/uclibc/amd64
michi@localhost ~ $

Der Befehl env-update && source /etc/profile aktualisiert die Dateien vom Profilwechsel.

Durch den Befehl euse -a können momentan aktive USE-Flags angezeigt werden. Dieser Befehl steht nach der Installation von gentoolkit zur Verfügung.

Um die aktuell aktiven USE-Flags (vollständig) anzuzeigen, verwenden Sie emerge –info

localhost # etc-update
localhost # env-update && sources/etc/profile
localhost # emerge --info | grep ^USE
USE="a52 aac acpi alsa branding cairo cdr dbus dts ..."

Um zu schauen, welches Paket mit welchen USE-Flags verwendet wird, gibt es die Seite https://packages.gentoo.org/

In der Datei /etc/portage/package.use/iptables werden für einzelne Pakete USE Einstellungen vorgenommen.

Eine Beispieldatei:

#less /etc/portage/iptables
>=app-crypt/pinentry-0.9.7-r1 gnome-keyring
# required by x11-plugins/enigmail-1.9.8.1::gentoo
# required by mail-client/thunderbird-52.3.0::gentoo[crypt]
# required by @selected
# required by @world (argument)
>=app-crypt/pinentry-0.9.7-r1 gtk
# required by dev-qt/qtcore-5.7.1-r3::gentoo
# required by dev-qt/qtprintsupport-5.7.1::gentoo
# required by net-analyzer/wireshark-2.4.2::gentoo[qt5]
# required by wireshark (argument)
>=dev-libs/libpcre-8.41 pcre16
# required by dev-qt/qtgui-5.7.1-r1::gentoo[xcb]
# required by dev-qt/qtmultimedia-5.7.1::gentoo
# required by net-analyzer/wireshark-2.4.2::gentoo[qt5]
# required by wireshark (argument)
>=x11-libs/libxcb-1.12-r2 xkb
# required by x11-misc/xdg-utils-1.1.1-r1::gentoo
# required by net-analyzer/wireshark-2.4.2::gentoo[qt5,-gtk]
# required by wireshark (argument)
>=app-text/xmlto-0.0.26-r1 text
>=net-mic/networkmanager-1.4.4-r1 gtk
>=net-misc/networkmanager-openvpn-1.2.10::gentoo gtk

Als Erstes wird angegeben ob es nur für die aktuelle Version oder auch für spätere gelten soll (= oder >) Dann der Name des Paketes mit Versionsnummer. Nach einem Leerzeichen wird das gewünschte Flag gesetzt. Durch den Befehl etc-update werden die Dateien auf Aktualisierungen überprüft. Falls diese vorliegen werden die Dateien hier angezeigt. Nach Auswahl der Datei werden die Unterschiede angezeigt und können gespeichert oder ignoriert werden.

 

So wird zum Beispiel ein Export in jpg und png in Gimp nur möglich sein, wenn Gimp mit den USE Flag jpg kompiliert wurde. Dies kann einmalig durch USE=jpg emerge -av gimp erreicht werden. Soll beim nächsten Update die Einstellung nicht überschrieben werden, ist es sinnvoll die Einstellung in der /etc/portage/package.use einzutragen.
So brachte Gimp  die Fehlermeldung, dass das Dateiformat jpg nicht bekannt ist. Der Aufruf des emerge-Befehls zeigte ein -jpg in der Übersicht an. Das heisst, Gimp wurde ohne jpg Option kompiliert.

Es wurde in die Datei /etc/portage/iputils folgender Eintrag vorgenommen: 

>=media-gfx/gimp-2.8 jpg png jpeg

Somit wird festgelegt, dass Gimp ab jetzt immer mit der Option jpg jpeg und png kompiliert wird.

Fehler weil GIMP die Dateiendung nicht zuordnen kann
vorherige USE Flag gekennzeichnet durch -jpg
USE Flags für GIMP Die hinzugefügten Flags werden grün mit Stern angezeigt

 

 

/etc/portage/package.use bietet eine genauere Kontrolle der USE-Flags pro Paket als die USE-Variable in /etc/portage/make.conf.
Hinweis
/etc/portage/package.use kann entweder eine einzelne Datei oder ein Verzeichnis sein, das Paketdateien enthält.

USE-Flags für einzelne Pakete deklarieren

Manchmal möchten Benutzer ein bestimmtes USE-Flag für eine (oder mehrere) Anwendungen angeben, jedoch nicht für das gesamte System. Bearbeiten Sie hierzu /etc/portage/package.use. package.use ist normalerweise eine einzelne Datei, es kann jedoch auch ein Verzeichnis mit untergeordneten Dateien sein. In den folgenden Beispielen wird angenommen, dass package.use eine einzelne Datei ist.

Um beispielsweise nur Blu-ray-Unterstützung für das VLC Media Player-Paket zu erhalten:

/etc/portage/package.use Blu-ray support für VLC
media-video/vlc bluray

Die Datei / das Verzeichnis /etc/portage/package.use überschreibt die Einstellungen der USE-Variablen in /etc/portage/make.conf. Wenn package.use als Verzeichnis vorhanden ist (im Gegensatz zu einer einzelnen Datei), können die lokalen USE-Flags von Paketen geändert werden, indem einfach Dateien im Verzeichnis package.use / erstellt werden. Jede Namenskonvention für Dateien kann funktionieren, es ist jedoch ratsam, ein zusammenhängendes Namensschema zu implementieren. Eine Konvention besteht darin, einfach den Paketnamen als Titel für die untergeordnete Datei zu verwenden. Das lokale Setzen des bluray USE-Flags für das media-video / vlc-Paket kann beispielsweise wie folgt durchgeführt werden:

 root #echo "media-video/vlc bluray" >> /etc/portage/package.use/vlc

Ebenso ist es möglich, USE-Flags für eine bestimmte Anwendung explizit zu deaktivieren. Zum Beispiel, um die bzip2-Unterstützung in PHP zu deaktivieren (aber über die USE-Flag-Deklaration in make.conf für alle anderen Pakete):

/etc/portage/package.use bzip2 support für PHP deaktivieren
dev-lang/php -bzip2

Temporäre USE-Flags deklarieren

Manchmal müssen Benutzer für einen kurzen Moment ein USE-Flag setzen. Anstatt /etc/portage/make.conf zweimal zu bearbeiten (um die USE-Änderungen zu machen und rückgängig zu machen), deklarieren Sie einfach die USE-Variable als Umgebungsvariable. Beachten Sie, dass diese Einstellung nur für den eingegebenen Befehl gilt. Durch erneutes Auftauchen oder Aktualisieren dieser Anwendung (entweder explizit oder als Teil einer Systemaktualisierung) werden die durch die (temporäre) USE-Flag-Definition ausgelösten Änderungen rückgängig gemacht.

Im folgenden Beispiel wird der pulseaudio-Wert während der Installation von SeaMonkey vorübergehend aus der USE-Variablen entfernt:

root #USE="-pulseaudio" emerge www-client/seamonkey

Natürlich hat es eine gewisse Priorität, welche Einstellung Vorrang vor der USE-Einstellung hat. Die Priorität für die USE-Einstellung (zuerst hat niedrigste Priorität):

  1.      Standardeinstellung USE, die in den Dateien „make.defaults“ Ihres Profils festgelegt wurde
  2.      Benutzerdefinierte USE-Einstellung in /etc/portage/make.conf
  3.      Benutzerdefinierte USE-Einstellung in /etc/portage/package.use
  4.      Benutzerdefinierte USE-Einstellung als Umgebungsvariable

Führen Sie emerge –info aus, um die endgültigen USE-Einstellungen aus der Sicht von Portage anzuzeigen. Dadurch werden alle relevanten Variablen (einschließlich der USE-Variablen) mit ihrer aktuellen Definition aufgelistet, die Portage bekannt ist.

emerge --info USE Einstellungen in Gentoo
emerge –info ausgeführt