Handbook:AMD64/Working/USE

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:AMD64/Working/USE and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎polski • ‎русский • ‎українська • ‎中文(中国大陆)‎
AMD64 Handbook
Installation
About the installation
Choosing the media
Configuring the network
Preparing the disks
Installing stage3
Installing base system
Configuring the kernel
Configuring the system
Installing tools
Configuring the bootloader
Finalizing
Working with Gentoo
Portage introduction
USE flags
Portage features
Initscript system
Environment variables
Working with Portage
Files and directories
Variables
Mixing software branches
Additional tools
Custom package repository
Advanced features
Network configuration
Getting started
Advanced configuration
Modular networking
Wireless
Adding functionality
Dynamic management


Que sont les options de la variable USE ?

À quoi servent les options de la variable USE ?

Lors de l'installation de Gentoo (ou de toute autre distribution) l'utilisateur doit faire des choix qui dépendent de l'environnement dans lequel il travaille. La configuration d'un serveur diffère de la configuration d'une station de travail. Une station dédiée au jeu diffère d'une station dédiée au rendu 3D.

Ceci n'est pas seulement vrai pour déterminer quels paquets installer, mais aussi pour déterminer quelles fonctionnalités un paquet doit prendre en charge. S'il n'y a nul besoin d'OpenGL, pourquoi s'embarrasser à l'installer et à le maintenir et pourquoi compiler la plupart des paquets avec la prise en charge d'OpenGL ? Si quelqu'un ne désire pas utiliser KDE, pourquoi s'embarrasserait-il à compiler les paquets avec la prise en charge de KDE si ces derniers peuvent fonctionner correctement sans ?

Afin d'aider les utilisateurs à décider quoi installer/activer ou pas, Gentoo permet de spécifier leur environnement d'une manière aisée. Cela force l'utilisateur à décider de quoi il a réellement besoin et facilite le travail à portage pour prendre les décisions utiles.

Définition d'une option de la variable USE

Entrons dans l'univers des options de la variable USE. Une telle option est un mot clé qui représente la prise en charge et les informations de dépendance pour un concept donné. Si quelqu'un définit une option particulière de la variable USE, Portage sait qu'il désire la prise en charge associée à ce mot clé. Bien sûr cela altère aussi les informations de dépendance pour un paquet.

Prenons l'exemple de l'option kde. Si cette option n'est pas donnée pour la variable USE, tous les paquets qui sont capables de prendre KDE en charge de manière optionnelle seront compilés sans la prise en charge de KDE. Tous les paquets qui ont cette prise en charge optionnelle de KDE seront installés sans que soit installées les bibliothèques de KDE (en tant que dépendances). Si l'option kde est définie, ces paquets seront compilés avec la prise en charge de KDE et les bibliothèques de KDE seront installées en tant que dépendances.

En définissant correctement les mots clés, le système pourra être parfaitement adapté au besoin de l'utilisateur.

Les différents types d'options de la variable USE

Il existe deux types d'options de la variable USE : les options globales et les options locales.

  • Une option (USE flag) globale est utilisée par plusieurs paquets, à l'échelle du système. C'est ce que la plupart des gens voit dans la notion d'option de la variable USE.

Une liste des valeurs disponible pour les option globales (global USE flags) est disponibles au site principal ou localement dans le fichier /usr/portage/profiles/use.desc.

  • Une option (USE flag) locale n'est utilisée que par un seul paquet pour des décisions spécifiques.

Une liste des valeurs disponible pour les option locales (local USE flags) est disponibles au site principal ou localement dans le fichier /usr/portage/profiles/use.local.desc.

Utiliser les options de la variable USE

Déclarer des options permanentes de la variable USE

Comme nous l'avons indiqué précédemment, toutes les options de la variable USE sont déclarées dans la variable USE. Pour faciliter la recherche et la sélection des options, nous fournissons déjà des options par défaut. Il s'agit d'une collection d'options que nous pensons être couramment utilisées par les utilisateurs de Gentoo. Ces options par défaut sont déclarées dans les fichiers make.defaults qui font partie du profil choisi.

Le profil que le système considère est pointé par le lien symbolique /etc/portage/make.profile. Chaque profil se superpose aux autres profils, et le résultat final est la somme de tous les profils. Le profil au dessus de la pile est le profil de base (/usr/portage/profiles/base).

Pour voir les options actives de la variable USE (dans leur totalité) utiliser la commande emerge --info :

root #emerge --info | grep ^USE
USE="a52 aac acpi alsa branding cairo cdr dbus dts ..."

Comme on peut le voir, cette variable contient déjà beaucoup de mots-clés. Néanmoins, ne pas modifier le fichier make.defaults pour adapter la variable USE aux besoins personnels : les changements apportés au fichier seront écrasés lors de la mise à jour du répertoire Gentoo !

Pour modifier ces valeurs par défaut, ajoutez ou retirez des mots clé à/de la variable USE. Ceci est effectué globalement en définissant la variable USE dans le fichier /etc/portage/make.conf. Dans ce fichier on peut ajouter les options supplémentaires requises à la variable USE, ou retirer celles dont on a plus besoin. Cette dernière opération – le retrait d'une option — est fait en préfixant le mot clé par le signe moins (-).

Par exemple, pour supprimer la prise en charge de KDE et de Qt mais en ajoutant le support de LDAP, il est possible de définir la variable USE suivante dans /etc/portage/make.conf :

FILE /etc/portage/make.confMise à jour de la variable USE dans make.conf
USE="-kde -qt4 -qt5 ldap"

Declarer des options de la variable USE pour certains paquets seulement

Parfois, les utilisateurs veulent déclarer une certaine option de la variable USE pour un (ou plusieurs) paquets mais pas pour tout le système. Pour ce faire, éditer le fichier /etc/portage/package.use. package.use est généralement un seul fichier, mais il peut aussi s'agir d'un répertoire remplis de sous fichiers ; se reporter à l'astuce ci-dessous et à la page man de portage man portage pour plus d'informations. Les exemples suivants assument que package.use est un simple fichier.

Par exemple, pour n'ajouter que le support du Blu-ray dans le paquet du lecteur multimédia VLC :

FILE /etc/portage/package.useAjouter le support Blu-ray dans VLC
media-video/vlc bluray
Conseil
Si package.use existe déjà en tant que répertoire (et non en tant que simple fichier), il est possible de modifier les options de la variable USE d'un paquet en créant simplement de nouveaux fichiers dans le répertoire package.use/. Toute convention de dénomination de fichier est acceptée, il est cependant plus sage d'utiliser un système de dénomination cohérent. Une convention est d'utiliser le nom du paquet comme non de fichier. Par example, pour appliquer localement l'option de la variable USE bluray au paquet media-video/vlc :

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

De la même manière, il est possible de désactiver explicitement une option de la variable USE pour une application donnée. Par exemple, pour retirer la prise in charge de bzip2 dans PHP (mais l'avoir pour tous les autres paquets via la déclaration des options de USE dans make.conf) :

FILE /etc/portage/package.useSupprimer le support de bzip2 dans PHP
dev-lang/php -bzip2

Déclarer temporairement des options de la variable USE

Il est parfois nécessaire d'activer une option de la variable USE pour un court instant. Au lieu d'éditer le fichier /etc/portage/make.conf deux fois (pour apporter et retirer les modifications), contentez-vous de déclarer la variable USE dans une variable d'environnement. Rappelez-vous que ce réglage s'applique seulement à la commande saisi; la ré-installation ou la mise à jour de l'application (soit explicitement, soit comme faisant partie d'une mise à jour du système) effacera les changements qui auraient été déclenchés via l'option temporaire de la variable USE.

L'exemple suivant retire temporairement la prise en charge de pulseaudio des options de la variable USE lors de l'installation de SeaMonkey :

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

Priorité

Bien sûr, les différents réglages de la variable USE n'ont pas tous la même priorité. Les règles de priorité, classées de la plus faible à la plus forte sont:

  1. Les réglages par défaut déclarés dans les fichiers de votre profil make.defaults
  2. Les réglages de USE définis par l'utilisateur dans /etc/portage/make.conf
  3. Les réglages de USE définis par l'utilisateur dans /etc/portage/package.use
  4. Les réglages de USE définis par l'utilisateur en tant que variables d'environnement

Pour voir le réglage final de la variable USE tel que vu par Portage, utilisez la commande emerge --info. Celle-ci listera toutes les variables applicable a Portage (USE inclue) et leur actuelles utilisation par Portage.

root #emerge --info

Adapter le système complet aux nouvelles options de la variable USE

Après avoir modifié des options de la variable USE, le système doit être mis à jour pour refléter les changements. Pour ce faire, utilisez l'option --newuse dans la commande emerge:

root #emerge --update --deep --newuse @world

Ensuite, exécutez la commande emerge --depclean de Portage pour retirer les dépendances installées pour l'ancien système mais qui ne sont plus nécessaires avec les nouvelles options de la variable USE.

Attention !
Exécuter emerge --depclean est une opération dangereuse qui devrait être utilisé avec précaution. Vérifiez attentivement la liste des paquets proposés pour désinstallation afin d'être certains que des paquets indispensables ne vont pas être retirés. Dans l'exemple suivant, nous ajoutons l'option -p afin de lister les paquets sans les retirer.
root #emerge -p --depclean

Après que le retrait des dépendances obsolètes a été fait par depclean, utiliser la commande revdep-rebuild pour recompiler les applications qui sont liées dynamiquement à des objets partagés fournis éventuellement par des paquets retirés. revdep-rebuild fait partie du paquet app-portage/gentoolkit ; penser à l'installer avant.

root #revdep-rebuild

En fin de compte, le système utilise maintenant les nouvelles options de la variable USE.

Options de la variable USE spécifiques à certains paquets

Lister les options disponibles

Prendre l'exemple du paquet seamonkey: par quelles options de la variable USE est-il concerné ? Pour le savoir, utiliser emerge avec l'option --pretend et l'option --verbose :

root #emerge --pretend --verbose www-client/seamonkey
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
[ebuild  N     ] www-client/seamonkey-2.48_beta1::gentoo  USE="calendar chatzilla crypt dbus gmp-autoupdate ipc jemalloc pulseaudio roaming skia startup-notification -custom-cflags -custom-optimization -debug -gtk3 -jack -minimal (-neon) (-selinux) (-system-cairo) -system-harfbuzz -system-icu -system-jpeg -system-libevent -system-libvpx -system-sqlite {-test} -wifi" L10N="-ca -cs -de -en-GB -es-AR -es-ES -fi -fr -gl -hu -it -ja -lt -nb -nl -pl -pt-PT -ru -sk -sv -tr -uk -zh-CN -zh-TW" 216,860 KiB
 
Total: 1 package (1 new), Size of downloads: 216,860 KiB

emerge n'est pas le seul outil pour cela. En fait, il existe un outil dédié à l'information sur les paquets. Cet outil est equery. Il fait partie du paquet app-portage/gentoolkit.

root #emerge --ask app-portage/gentoolkit

Utilisez maintenant equery avec l'argument uses pour voir les options de la variable USE concernant un paquet donné. Par exemple, pour le paquet gnumeric:

user $equery --nocolor uses =gnumeric-1.12.31
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for app-office/gnumeric-1.12.31:
 U I
 + + introspection            : Add support for GObject based introspection
 - - libgda                   : Enable database support through gnome-extra/libgda.
 - - perl                     : Enable perl plugin loader.
 + + python                   : Enable python plugin loader.
 + + python_targets_python2_7 : Build with Python 2.7

Satisfaire les conditions imposées par l'expression REQUIRED_USE

Quelques ebuilds requièrent ou interdissent certaines combinaisons d'options de la variable USE pour fonctionner correctement. Ceci se traduit par un ensemble de conditions placées dans l'expression REQUIRED_USE. Ces conditions garantissent que toutes les fonctionnalités et les dépendances seront assurées et que la compilation réussira et fonctionnera comme attendu. Si toutes les conditions ne sont pas respectées, emerge lancera une alerte et vous demandera de régler le problème.

Quelques exemples de l'expression REQUIRED_USE sont donnés ci-dessous:

Description
REQUIRED_USE="foo? ( bar )" If foo is set, bar must be set
REQUIRED_USE="foo? ( !bar )" If foo is set, bar must not be set.
REQUIRED_USE="foo? ( || ( bar baz ) )" If foo is set, bar or baz must be set.
REQUIRED_USE="^^ ( foo bar baz )" Exactly one of foo bar or baz must be set.
REQUIRED_USE="|| ( foo bar baz )" At least one of foo bar or baz must be set.
REQUIRED_USE="?? ( foo bar baz )" No more than one of foo bar or baz may be set.