3.2 Les options USE

Que sont les paramètres USE ?

Les notions sous-jacentes aux paramètres USE

Losque vous installez Calculate (ou n'importe quelle autre distribution), vous faites des choix qui dépendent de l'environnement dans lequel vous travaillez. La configuration d'un serveur est différente de celle d'une station de travail. Une machine destinée aux jeux diffère d'une station de travail pour du rendu 3D.

Cela s'applique non seulement au choix des paquets que vous comptez installer, mais aussi aux fonctionnalités que chaque paquet devrait supporter. Si vous n'avez pas besoin d'OpenGL, pourquoi prendre la peine d'installer OpenGL et de construire la plupart de vos paquets avec support pour OpenGL ? Si vous ne souhaitez pas utiliser KDE, pourquoi compiler des paquets avec le support KDE alors qu'ils fonctionneraient parfaitement sans ce support ?

Pour aider les utilisateurs à déterminer ce qu'ils veulent installer ou activer, il est possible de spécifier son environnement de manière simple. L'utilisateur est ainsi obligé de décider ce qu'il veut vraiment, et cela facilite la tâche de Portage, le gestionnaire de paquets, pour prendre les décisions utiles.

Définition des paramètres USE

C'est ici qu'interviennent les paramètres USE. Un tel paramètre est un mot-clé qui définit le support et les dépendances pour un concept donné. Si vous définissez un paramètre USE donné, Portage saura que vous voulez avoir le support correspondant au mot-clé choisi. Bien entendu, cela affecte aussi les dépendances des paquets.

Considérons un exemple spécifique : le mot-clé kde. Si vous n'avez pas ce mot-clé dans votre variable USE, tous les paquets qui offrent un support optionnel pour KDE seront compilés sans ce support. Tous les paquets qui possèdent des dépendances KDE optionnelles seront installés sans installer les bibliothèques KDE (en tant que dépendances). Si vous avez le mot-clé kde, alors ces paquets seront compilés avec le support KDE et les bibliothèques KDE seront installées en tant que dépendances.

Définir correctement ces mots-clés vous donnera finalement un système adapté spécifiquement à vos besoins.

Quels sont les paramètres USE disponibles ?

On distingue deux types de paramètres USE : les paramètres globaux et les paramètres locaux.

  • Un paramètre USE global est utilisé par plusieurs paquets dans l'ensemble du système. C'est ce que la plupart des gens considèrent comme les paramètres USE.
  • Un paramètre USE local n'est utilisé que par un seul paquet et n'est utilisé que pour des décisions spécifiques à ce paquet.

Une liste des paramètres USE peut être trouvée en ligne ou localement dans /usr/portage/profiles/use.desc.

La liste des paramètres USE locaux se trouve dans le fichier /usr/portage/profiles/use.local.desc.

Utiliser les paramètres USE

Déclarer des paramètres USE permanents

Comme mentionné plus haut, tous les paramètres USE sont déclarés dans la variable USE. Chaque distribution de la famille Calculate a sa propre collection des options USE, optimisées pour des tâches spécifiques.

Le profil de votre système est défini par le fichier vers lequel pointe le lien symbolique /etc/make.profile. Différents profils s'empilent les uns sur les autres. Le profil le plus haut est base (/usr/portage/profiles/base).

Voyons les valeurs par défaut d'un profil Calculate Directory Server :

...
USE="acl amd64 bash-completion berkdb bittorrent bzip2 cli cracklib crypt cups cxx dri exif foomaticdb fortran ftp gdbm gif gpm iconv imap ipv6 jpeg jpeg2k ldap logrotate maildir mmx modules mudflap multilib ncurses nfs nls nptl nptlonly openmp pam pcre perl png pppd python radius readline samba session sse sse2 ssl sysfs tcpd tiff truetype unicode userlocales xorg zlib" ...

Comme vous pouvez le voir, cette variable contient déjà un bon nombre de mots-clés.

Pour modifier cette configuration par défaut, vous devrez ajouter ou enlever des mots-clés dans la variable USE. Cela est fait de manière globale en définissant la variable USE dans /etc/make.conf. Dans cette variable, vous ajouterez les paramètres USE que vous désirez et enlèverez ceux que vous ne voulez pas. Cette dernière action est réalisée en préfixant le mot-clé d'un signe moins ("-").

Par exemple, pour enlever le support pour KDE et QT, et ajouter le support pour ldap, vous pourriez définir USE comme suit dans /etc/make.conf:

USE="-kde -qt ldap"

Les distributions Calculate Linux utilisent le profil binaire par défaut, qui ne prend en compte aucune modification des paramètres USE. Pour valider les modifications que vous apportez, utilisez l'option -N (ou --newuse) en installant ou en mettant à jour un paquet. Par exemple :

emerge -uN world

Déclarer des paramètres USE spécifiques à des paquets

Parfois, vous voudrez déclarer certains paramètres USE pour une ou plusieurs applications particulières mais pas pour l'ensemble du système. Pour cela, vous devez créer un fichier dans le répertoire /etc/portage et l'éditer. Le nom du fichier n'a aucune importance.

Par exemple, si vous ne voulez pas du support global berkdb mais si vous le voulez tout de même pour mysql, vous devrez ajouter la ligne suivante au fichier /etc/portage/package.use/mysql :

dev-db/mysql berkdb

Vous pouvez également désactiver explicitement un paramètre USE pour une application particulière. Par exemple, si vous ne voulez pas du support java dans PHP, votre fichier /etc/portage/package.use/nojava devra contenir ceci :

dev-php/php -java

Déclarer des paramètres USE temporaires

Il peut arriver que vous ne souhaitiez définir un paramètre USE donné qu'en une seule occasion. Plutôt qu'éditer /etc/portage/make.conf deux fois (pour faire puis défaire les changements), vous pouvez simplement déclarer USE comme une variable d'environnement. Gardez toutefois à l'esprit que cette modification de l'environnement sera probablement perdue lorsque vous réinstallerez ou mettrez à jour cette application (soit explicitement, soit lors d'une mise à jour du système) !

Par exemple, nous allons retirer temporairement le support java de notre configuration USE pendant l'installation de firefox :

USE="-java" emerge firefox

Ordre de priorité

Les différentes configurations de USE se conforment évidemment à un certain ordre de priorité. Vous ne souhaitez sans doute pas déclarer USE="-java" pour vous rendre compte après coup que java est déclaré malgré tout à cause d'une valeur par défaut qui a priorité sur votre définition. Les priorités dans les déclarations USE sont ordonnées comme suit (la première déclaration a la plus faible priorité) :

  • déclaration par défaut dans les fichiers make.defaults de votre profil
  • déclaration par l'utilisateur dans /etc/make.conf
  • déclaration par l'utilisateur dans /etc/portage/package.use
  • déclaration par l'utilisateur comme une variable d'environnement

Pour voir la configuration finale de USE telle qu'elle est vue par Portage, exécutez emerge --info. Cela listera toutes les variables significatives (dont la variable USE) avec leur contenu tel qu'il est vu par Portage.

emerge --info

Reconfigurer votre système pour tenir compte d'une mise à jour des options USE

Si vous avez modifié vos options de la variable USE et que vous voulez reconfigurer votre système pour tenir compte de ces nouvelles options, utilisez l'option --newuse d'emerge:

Pour recompiler tout le système avec les nouveaux paramètres USE, exécutez :

emerge -uDN world

Ensuite, lancez emerge --depclean pour supprimer les dépendances conditionnelles qui ont été rendues obsolètes par les nouvelles options de USE.

Attention : Exécuter emerge -c (ou emerge --depclean) est une opération risquée qui ne devrait pas être lancée à la légère. Vérifiez bien que la liste des paquets qui vont être supprimés ne contient pas de paquet dont vous avez encore besoin. Dans l'exemple ci-dessous, nous utilisons l'option -a pour afficher la liste sans rien supprimer.

Supprimer les paquets inutiles :

emerge -ac

Quand cette opération est terminée, lancez revdep-rebuild pour recompiler les applications qui avaient été liées dynamiquement avec les paquets que vous venez de supprimer :

revdep-rebuild

Une fois tout ceci accompli, votre système tient compte des nouvelles options de USE.

Paramètres USE spécifiques à un paquet

Savoir quels paramètres USE influencent un paquet

Prenons l'exemple de firefox : à quels paramètres USE est-il sensible ? Pour le savoir, nous utilisons emerge avec les options -p (ou --pretend) et -v (ou --verbose) :

# emerge -pv firefox
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] www-client/firefox-3.6.13  USE="alsa bindist custom-optimization dbus ipc libnotify -gnome -java -startup-notification -system-sqlite -wifi" LINGUAS="bg de en es fr it pl pt_BR ru uk -af -ar -as -be -bn -bn_BD -bn_IN -ca -cs -cy -da -el -en_GB -en_US -eo -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fy -fy_NL -ga -ga_IE -gl -gu -gu_IN -he -hi -hi_IN -hr -hu -id -is -ja -ka -kk -kn -ko -ku -lt -lv -mk -ml -mr -nb -nb_NO -nl -nn -nn_NO -oc -or -pa -pa_IN -pt -pt_PT -rm -ro -si -sk -sl -sq -sr -sv -sv_SE -ta -ta_LK -te -th -tr -vi -zh_CN -zh_TW" 0 kB

Emerge n'est pas le seul outil utilisable à cette fin. En effet, nous disposons d'un outil dédié pour obtenir des informations sur les paquets : il s'appelle equery. Exécutez maintenant equery avec l'argument uses pour afficher les paramètres USE d'un paquet donné. Par exemple, pour le paquet gnumeric :

# equery uses app-office/gnumeric-1.10.13 -a
[ Searching for packages matching app-office/gnumeric-1.10.13... ]
[ 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.10.13 ]
 U I
 - - gnome  : Adds GNOME support
 + + perl   : Adds support/bindings for the Perl language
 + + python : Adds support/bindings for the Python language
Thank you!