USE flag/fr (drapeau USE)
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
Les drapeaux USE sont des mots-clés qui représentent le support et les informations de dépendance pour un concept donné. Ils sont une fonctionnalité essentielle de Gentoo, et bien comprendre comment les gérer est nécessaire pour administrer un système Gentoo.
Les drapeaux USE servent à configurer Portage pour déterminer comment chaque paquet sera configuré lors de l'installation ou de la mise à jour. Les drapeaux USE peuvent configurer de nombreux aspects d'un paquet, et les drapeaux USE disponibles ainsi que les fonctionnalités optionnelles correspondantes dépendent de chaque logiciel spécifique.
Les drapeaux USE peuvent modifier une gamme de comportements de paquet. Ils définissent souvent des options au moment de la compilation, bien que ces options de configuration ne soient pas systématiquement exposées via les drapeaux USE - il appartient aux mainteneurs de paquets de décider quelles options sont utiles à fournir sous forme de drapeaux USE. Les drapeaux USE peuvent spécifier quelles bibliothèques ou utilitaires optionnels seront liés à un paquet, déterminant souvent les dépendances. Un autre exemple de ce que les drapeaux USE peuvent modifier est les fichiers inclus dans une installation, comme l'inclusion ou non de la documentation.
Cette capacité à choisir des options uniquement disponibles lors de l'installation d'un paquet est l'un des grands avantages que Gentoo tire de son modèle basé sur le code source.
La distribution entière est fournie avec des drapeaux USE raisonnables par défaut, qui peuvent être affinés en sélectionnant un profil adapté à l'utilisation prévue du système. Les paquets ont chacun leur propre ensemble de drapeaux USE disponibles, en fonction de ce qui peut être configuré pour le paquet, et ceux-ci sont également réglés sur des valeurs par défaut raisonnables. L'ordre dans lequel les drapeaux USE sont appliqués est spécifié par la variable USE_ORDER.
Les concepts de base sur la façon de travailler avec les drapeaux USE peuvent être trouvés dans le Manuel. Voir aussi /etc/portage/package.use pour la définition d'un drapeau pour un paquet, et /etc/portage/make.conf pour les drapeaux qui doivent être définis globalement.
Déclaration des drapeaux USE
Techniquement, le dépôt ebuild de Gentoo est fourni avec un petit ensemble de drapeaux USE par défaut. Les drapeaux USE par défaut sont ensuite définis par le profil sélectionné. Chaque paquet est accompagné d’un ensemble de drapeaux USE disponibles, qui peuvent également avoir un état par défaut si cela est justifié dans le contexte du paquet. Chaque couche remplace la précédente pour configurer Portage et préparer l’installation de chaque paquet.
Un drapeau USE peut avoir trois états : activé, désactivé ou par défaut. Les drapeaux USE peuvent être activés ou désactivés globalement dans la variable USE dans make.conf, ou pour des paquets spécifiques dans /etc/portage/package.use.
La présence d'un drapeau USE dans l'un de ces fichiers activera ce drapeau USE. L'inclusion d'un drapeau USE précédé du signe moins ("-") désactive ce drapeau USE. Si un drapeau USE n'est pas présent à l'un de ces endroits, la valeur par défaut sera utilisée.
Il est souvent préférable de définir les drapeaux USE par paquet plutôt que sur l'ensemble du système. Les valeurs par défaut des drapeaux sont usuellement généralement fixées à une valeur saine par défaut - réfléchissez bien aux drapeaux à définir globalement dans make.conf.
Bien qu'un drapeau USE puisse en théorie être temporairement défini sur la ligne de commande dans une variable d'environnement (par exemple USE="<flags>" emerge -av <package>), ne l'utilisez pas pour installer des paquets. Tout drapeau USE défini de cette manière sera perdu lors de la mise à jour ou de la ré-émergence du paquet.
USEful commands
Pour savoir quels drapeaux USE sont actuellement activés :
user $
portageq envvar USE | xargs -n 1
To see USE flags enabled by default:
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"
Pour vérifier si un certain drapeau USE est activé et quels sont les paquets qui l'utilisent, exécuter :
user $
euse -I <use_flag> # included with app-portage/gentoolkit
user $
quse <use_flag> # included with app-portage/portage-utils
user $
eix --installed-with-use <use_flag> # included with app-portage/eix
Remplacer <use_flag>
par le drapeau USE à vérifier.
Check which USE flags are enabled when merging a package and its dependencies:
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]
Check which USE flags are enabled for a single package, without calculating all of its dependencies:
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 () parenthesis are forced, masked or removed. This forcing may come from the selected profile or architecture. To understand why, you may need to analyse the profile file, such as "profiles/base/package.use.stable.mask". If you think the masking in the profile is in error, you may try to unmask it by adding the package (with no flags) to the "package.accept_keywords" file. If the masking was not in error, you will likely end up with either a broken build or no change at all (because the USE flag was not functional).
Options de commande Emerge
La commande emerge dispose de quelques options liées au drapeau USE, telles que :
--changed-use
(-U
)--complete-graph-if-new-use < y | n >
--newuse
(-N
)
Pour plus de détails, voir man 1 emerge.
"Local" vs "global" USE flags
La différence technique entre les drapeaux "locaux" et "globaux" est simplement l'endroit où leurs descriptions sont sauvegardées dans le dépôt ebuild. Les drapeaux USE "globaux" sont décrits dans les fichiers use.desc (exemple) pour un profil entier, alors que les drapeaux USE "locaux" sont décrits dans les fichiers metadata.xml (exemple), pour un seul paquet. En décidant où les définir, les développeurs déterminent si un drapeau USE a une fonction générale commune à plusieurs paquets, ou une fonction spécifique à un seul paquet.
Pour l'utilisateur final, le fait qu'un drapeau USE soit "global" ou "local" n'a que peu d'importance. Les drapeaux "Globaux" peuvent parfois être plus appropriés pour être définis dans la variable USE de make.conf, mais il n'y a pas de règle absolue. Dans tous les cas, dans la mesure du possible, aucun drapeau USE ne devrait être défini dans make.conf à moins que cela ne soit nécessaire, et le fichier /etc/portage/package.use devrait être préféré pour définir les drapeaux USE sur une base individuelle. Suivre ce conseil devrait faciliter l'administration du système à long terme.
Outils
Certains outils sont disponibles pour analyser et gérer les drapeaux USE :
- euse
- quse - for details see man 1 quse
- equery hasuse (USE flag)
- equery uses (package name)
- ufed
- app-portage/euses
- eix - See
--use
,--installed-with-use
and--installed-without-use
options
Voir aussi
- /etc/portage/package.use — permet un réglage plus fin des drapeaux USE au niveau d'un paquet individuel que ne peut le permettre la variable USE dans /etc/portage/make.conf
- Complete Handbook/Finishing off
- Gentoo Handbook documentation on USE flags
- Gentoo Java USE flags
- Toolkit USE Flags — summarizes main points from discussions about toolkit (GTK, Qt) USE flags (gtk2, gtk3, qt4, qt5, etc.).
Ressources externes
- https://packages.gentoo.org/useflags - USE flags on Gentoo Packages Database.
- cat /var/db/repos/gentoo/profiles/use.desc - The common USE flag description list can be seen locally on systems with Portage installed.
- https://devmanual.gentoo.org/general-concepts/use-flags/ - USE flags conceptually explained in the Gentoo Developer Handbook.