USE-Flag

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page USE flag and the translation is 100% complete.
Resources

USE-Flags sind Schlüsselwörter, die Unterstützung und Abhängigkeitsinformationen für ein bestimmtes Konzept beinhalten. Sie sind ein Kernmerkmal von Gentoo und ein gutes Verständnis, wie man mit ihnen umgeht, ist notwendig, um ein Gentoo-System zu administrieren.

USE flags existieren um Portage zu konfigurieren um zu bestimmen wie jedes Paket bei Installation oder Updates konfiguriert werden soll. USE Flags können mehrere Aspekte eines Pakets konfigurieren, und die verfügbaren USE Flags und entsprechenden optionalen Funktionalitäten basieren auf jede individuelle Software.

USE Flags können mehrere Sachen am Paket verhalten ändern. Oft setzen sie Compile-Time Optionen, jedoch werden diese Einstellungsoptionen nicht systematisch durch die USE flags ausgesetzt - es liegt an den Paket Maintainern zu Entscheiden welche Optionen nützlich als USE Flags sind. USE Flags können spezifizieren welche optionalen Libraries oder Utilities mit dem Paket verbunden werden, oft bestimmen diese Abhängigkeiten. Ein anderes Beispiel zu was USE Flags ändern können ist welche Dateien der Installation beigesetzt werden, wie ob Dokumentation bereitgestellt werden sollen oder nicht.

Diese Möglichkeit, Optionen zu wählen, die nur bei der Installation eines Pakets verfügbar sind, ist einer der großen Vorteile von Gentoo, da es auf dem Quellcode basiert.

Die gesamte Distribution wird standardmäßig mit vernünftigen USE-Flags ausgeliefert, die durch die Auswahl eines Profils weiter verfeinert werden können, um der geplanten Systemnutzung zu entsprechen. Jedes Paket hat seinen eigenen Satz an verfügbaren USE-Flags, abhängig davon, was für das Paket konfiguriert werden kann, und diese sind ebenfalls auf vernünftige Standardwerte gesetzt. Die Reihenfolge in der USE Flags angewendet werden spezifiziert die USE_ORDER Variable.

Siehe auch
Grundlegende Konzepte, wie man mit USE-Flags arbeitet, finden Sie im Handbuch. Siehe auch /etc/portage/package.use zum Setzen eines Flags für ein Paket, und /etc/portage/make.conf für Flags, die global gesetzt werden sollen.

Deklaration von USE-Flags

Genau genommen, kommt das Gentoo ebuild repository mit einem kleinen Set an Standard USE flags. Standard USE Flags sind weiters definiert von dem ausgewähltem Profil. Jedes Paket kommt mit einem Set von verfügbaren USE Flags, und diese können eine Standardauswahl haben, wenn diese im Kontext des Pakets gerechtfertigt sind. Jede Schicht überschreibt die vorherige beim Einstellen von Portage fürs installieren von jedem Paket.

Ein USE-Flag kann drei Zustände haben: gesetzt, nicht gesetzt oder Standard. USE-Flags können global in der /etc/portage/make.conf oder für bestimmte Pakete in /etc/portage/package.use gesetzt oder nicht gesetzt werden.

Das Vorhandensein eines USE-Flags in einer dieser Dateien setzt dieses USE-Flag. Das Einfügen eines USE-Flag, dem ein Minuszeichen ("-") vorangestellt ist, hebt das USE-Flag auf. Wenn an einer dieser Stellen kein USE-Flag vorhanden ist, wird der Standard verwendet.

Siehe auch
Weitere Informationen finden Sie im Abschnitt Verwendung von USE-Flags des amd64 Handbuchs.
Hinweis
Es ist oft besser, USE-Flags pro Paket zu setzen als systemweit. USE-Flags werden normalerweise auf einen vernünftigen Standard gesetzt - überlegen Sie sorgfältig, welche Flags Sie global in make.conf setzen wollen.
Warnung
Ein USE-Flag kann zwar theoretisch auf der Kommandozeile in einer Umgebungsvariable temporär gesetzt werden (z.B. USE="<flags>" emerge -av <Paket>), verwenden Sie dies nicht, um Pakete zu installieren. Jede auf diese Weise gesetzte USE-Flag geht verloren, wenn einUpgrade ausgeführt oder das Paket erneut emergt wird.

Nützliche Befehle

Um zu sehen, welche USE-Flags gegenwärtig aktiviert sind:

user $portageq envvar USE | xargs -n 1

Um Standard aktivierte USE Flags zu sehen:

user $USE_ORDER="defaults:pkginternal:repo" emerge --info|grep USE
USE="X a52 aac acl acpi activities alsa amd64 bluetooth branding bzip2 cairo cdda cdr cet crypt cups dbus declarative dri dts dvd dvdr elogind encode exif flac gdbm gif gpm gtk gui iconv icu ipv6 jpeg kde kf6compat kwallet lcms libnotify libtirpc mad mng mp3 mp4 mpeg multilib ncurses networkmanager nls ogg opengl openmp pam pango pcre pdf pipewire plasma png policykit ppds pulseaudio qml qt5 qt6 readline screencast sdl seccomp semantic-desktop sound spell ssl startup-notification svg test-rust tiff truetype udev udisks unicode upower usb vorbis vulkan wayland widgets wxwidgets x264 xattr xcb xft xml xv xvid zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isyncitrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GUILE_SINGLE_TARGET="3-0" GUILE_TARGETS="3-0" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" RUBY_TARGETS="ruby32" VIDEO_CARDS="amdgpu dummy fbdev intel nouveau radeon radeonsi vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"

Um zu überprüfen, ob ein bestimmtes USE-Flag aktiviert ist und welche Pakete es verwenden, führen folgendes aus:

user $euse -I <use_flag> # enthalten in app-portage/gentoolkit
user $quse <use_flag> # enthalten in app-portage/portage-utils
user $eix --installed-with-use <use_flag> # enthalten in app-portage/eix

Ersetzen Sie <use_flag> durch das zu prüfende USE-Flag:

Überprüfe welche USE Flags aktiviert sind beim merging eines Pakets und ihrer Abhängigkeiten.

root #emerge --ask --verbose chromium
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
Dependency resolution took 5.95 s (backtrack: 0/20).
 
[ebuild  N     ] media-libs/openh264-2.4.1:0/7::gentoo  USE="plugin -test -utils" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="avx2" 58895 KiB
[ebuild   R    ] dev-lang/rust-bin-1.77.1:stable::gentoo  USE="profiler* (-big-endian) -clippy -doc (-prefix) -rust-analyzer -rust-src -rustfmt -verify-sig" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse2" 0 KiB
[ebuild   R    ] virtual/rust-1.77.1:0/llvm-17::gentoo  USE="profiler* -rustfmt" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild  N     ] dev-build/gn-0.2157::gentoo  731 KiB
[ebuild   R    ] net-libs/nodejs-20.12.1:0/20::gentoo  USE="icu inspector* npm snapshot ssl system-icu system-ssl -corepack -debug -doc (-lto) -pax-kernel -test" CPU_FLAGS_X86="sse2" 0 KiB
[ebuild  N     ] www-client/chromium-124.0.6367.60:0/stable::gentoo  USE="X cups custom-cflags hangouts official proprietary-codecs pulseaudio qt5 screencast system-harfbuzz system-icu system-png system-toolchain system-zstd vaapi wayland widevine -bindist -debug -ffmpeg-chromium -gtk4 (-headless) -kerberos (-libcxx) (-lto) -pax-kernel (-pgo) -qt6 (-selinux)" L10N="af am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk ur vi zh-CN zh-TW" 3352285 KiB
 
Would you like to merge these packages? [Yes/No]

Überprüfe welche USE Flags für ein einziges Paket, ohne Abhängigkeiten, aktiviert sind.

user $emerge --nodeps --pretend chromium
[ebuild  N     ] www-client/chromium-124.0.6367.60  USE="X cups custom-cflags hangouts official proprietary-codecs pulseaudio qt5 screencast system-harfbuzz system-icu system-png system-toolchain system-zstd vaapi wayland widevine -bindist -debug -ffmpeg-chromium -gtk4 (-headless) -kerberos (-libcxx) (-lto) -pax-kernel (-pgo) -qt6 (-selinux)" L10N="af am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk ur vi zh-CN zh-TW"

USE Flags in () Klammern sind gezwungen, maskiert oder entfernt. Das zwingen kommt möglicherweise von dem ausgewählten Profil oder Architektur. Um zu verstehen warum muss man möglicherweise Profildateien wie "profiles/base/package.use.stable.mask" analysieren. Wenn du denkst das das maskieren in dem Profil ein Fehler ist, kannst du versuchen es durch das hinzufügen des Pakets (ohne Flaggen) zu der "package.accept_keywords" Datei zu demaskieren. Wenn die Maskierung kein Fehler war, wirst du wahrscheinlich mit einem kaputten Build oder ohne Veränderung (Weil die USE Flag nicht funktioniert) enden.

Optionen für den Emerge-Befehl

Der Befehl emerge hat einige USE-Flag-bezogene Optionen wie:

  • --changed-use (-U)
  • --complete-graph-if-new-use < y | n >
  • --newuse (-N)

Für Einzelheiten siehe man 1 emerge.

"Lokale" vs. "globale" USE-Flags

Der technische Unterschied zwischen "lokal" und "globalen" Flaggen ist nur der Unterschied wo ihre Beschreibungen im ebuild repository gelagert werden. "Globale" USE Flags werden für ein ganzes Profil in den use.desc Dateien beschrieben. (example), während "lokale" USE Flags in den metadata.xml Dateien für ein einzelnes Paket beschrieben werden (example). Beim entscheiden wo sie definiert werden, entscheiden Entwickler ob eine USE Flag eine Generelle Funktion gemeinsam mit mehreren Paketen, oder eine spezifische Funktion für ein einzelnes Paket hat.

Für den Endbenutzer hat, ob eine USE Flag "global" oder "lokal" ist, wenig Bedeutung. "Globale" Flaggen sind möglicherweise manchmal passender in der USE Variable in make.conf gesetzt zu werden, aber hier existiert keine feste Regel. Auf jedem Fall, so viel wie möglich, sollten keine USE Flags in make.conf gesetzt werden ausser es ist notwending, und /etc/portage/package.use sollte für das setzen von USE Flags für einzelne Pakete bevorzugt werden. Dieser Empfehlung zu folgen sollte Systemadministration auf Dauer vereinfachen.

Werkzeuge

Für die Analyse und Verwaltung von USE-Flags stehen einige Werkzeuge zur Verfügung:

Siehe auch

Externe Ressourcen