USE flags

Updated 12 Janvier 2021

Les drapeaux USE, c'est quoi ?

Fonctions des drapeau USE

Lors de l'installation de Calculate (ou de toute autre distribution, d'ailleurs), vous choisissez des fonctionnalités en fonction de l'environnement que vous allez utiliser. La mise en place d'un serveur nécessite des procédures d'installation différentes de celles requises pour une station de travail, de même que la création d'une station de jeu diffère de l'installation d'une plateforme de rendu 3D.

Cela ne concerne pas que les paquets à installer, mais aussi les fonctionnalités de ces paquets qui doivent ou non être prises en charge. Si vous ne voulez pas utiliser OpenGL, pourquoi l'installer et activer la prise en charge d'OpenGL par vos logiciels ? Si vous n'allez pas utiliser KDE, pourquoi compiler des paquets prenant en charge KDE s'ils peuvent fonctionner sans ?

Les drapeaux USE sont un moyen simple de définir l'environnement de bureau que vous souhaitez utiliser. Ils aident les utilisateurs à choisir ce qui doit être installé ou activé en fonction de leurs choix, et ce qui ne doit pas l'être. De cette manière, l'utilisateur peut décider lui-même de ce dont il a réellement besoin pour faciliter son utilisation du gestionnaire de paquets.

Définition

Voyons de près les drapeaux USE (USE flags, en anglais). Un drapeau USE est un mot-clé qui contient des informations sur le support et les dépendances d'un environnement ou d'une fonctionnalité particulière. Quand vous définissez un drapeau USE, Portage sait que vous avez besoin qu'une fonction spécifique soit prise en charge. Naturellement, cela peut aussi entraîner un changement dans les dépendances du paquet.

Prenons un exemple, le drapeau USE "kde". Si vos valeurs USE ne l'incluent pas, tous les paquets qui n'ont pas besoin de la prise en charge de KDE seront compilés sans celle-ci. Tous les paquets qui ne nécessitent pas la présence de KDE sont compilés sans les bibliothèques KDE installées par les dépendances. Si vous activez "kde" comme drapeau USE, ces paquets seront compilés avec la prise en charge de KDE, et KDE sera installé comme composante requise.

En définissant intelligemment vos drapeaux USE, vous façonnez un système adapté à vos besoins.

Types

Les drapeaux USE peuvent être définis au niveau global ou local.

  • Un drapeau USE global est utilisé par plusieurs paquets et s'applique à l'ensemble du système.
  • Un drapeau USE local est utilisé par un paquetage spécifique, car il définit ses fonctionnalités les plus fines.

Vous trouverez une liste des drapeaux USE disponibles sur ce site ou localement sur votre ordinateur, à /usr/portage/profiles/use.desc.

Tous les drapeaux USE locaux sont enregistrés sur votre ordinateur, dans /usr/portage/profiles/use.local.desc.

Utilisation

Déclarer les drapeaux USE permanents

Comme expliqué ci-dessus, tout drapeau USE doit être déclaré dans la variable USE. Chaque version de Calculate Linux possède son propre ensemble de drapeaux USE optimisé.

Le profil auquel votre système fait référence est défini par le lien symbolique /etc/portage/make.profile. Chaque profil est basé sur un profil plus général encore, de sorte que le profil final résulte d'une hiérarchie de profils. Le profil de base (/usr/portage/profiles/base) a la priorité la plus élevée.

Par exemple, regardez les drapeaux USE prédéfinis du 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 constater, la variable USE est déjà définie, avec des mots-clés assez précis.

Pour modifier ces valeurs par défaut, éditez la variable USE en ajoutant ou en supprimant des mots-clés. L'ajout ou la suppression se fait globalement, c'est-à-dire en redéfinissant la variable USE dans le make.conf. Vous pouvez ajouter de nouveaux drapeaux USE ou supprimer ceux dont vous n'avez pas besoin. Pour supprimer un indicateur, préfixez-le par le symbole moins ("-").

Par exemple, si vous souhaitez supprimer la prise en charge de KDE et de QT tout en ajoutant le support de ldap, vous devez indiquer les valeurs USE suivantes dans /etc/portage/make.conf/custom :

USE="-kde -qt ldap"

Par défaut, Calculer Linux utilise un profil binaire, sans tenir compte de vos drapeaux USE personnalisés. Utilisez l'option -N (ou --newuse) pour appliquer les modifications directement lors de l'installation ou de la mise à jour des paquets. Par exemple:

emerge -uN world

Mettre à jour les drapeaux USE pour une sélection de paquets

Il est parfois nécessaire de définir des drapeaux USE pour des paquets spécifiques, afin de ne pas interférer avec les paramètres du système. Pour ce faire, créez un fichier dans /etc/portage/package.use/ et modifiez-le à votre convenance. Vous pouvez lui donner un nom à votre choix.

Supposons que vous ne vouliez pas que berkdb soit pris en charge au niveau global, tout en ayant besoin qu'il le soit dans mysql. Voici un exemple de /etc/portage/package.use/mysql :

dev-db/mysql berkdb

Vous pouvez, bien sûr, désactiver explicitement tel ou tel drapeaux USE pour un paquet distinct. Il est possible, par exemple, que vous souhaitiez désactiver la prise en charge de Java pour PHP. Ci-dessous un exemple de of /etc/portage/package.use/nojava :

dev-php/php -java

Définir des drapeaux USE provisoires

Parfois, un drapeau USE modifié ne doit être appliqué qu'une seule fois. Plutôt que de modifier à deux reprises le fichier /etc/portage/make.conf/custom (une première fois pour ajouter quelque chose à USE, une deuxième fois pour le supprimer), vous pouvez simplement déclarer USE comme variable d'environnement. N'oubliez pas que dans ce cas, si vous réinstallez ou mettez à jour une application (expressément ou dans le cadre d'une mise à jour du système), vos modifications antérieures seront perdues.

Par exemple, supprimons "java" des drapeaux USE appliqués pour l'installation de Firefox :

USE="-java" emerge firefox

Héritage

Les valeurs USE respectent, bien entendu, certaines règles de priorité. En effet, vous ne voudriez pas définir USE="-java " uniquement pour vérifier si java est toujours activé en raison de la valeur de priorité plus élevée. Les valeurs USE sont définies dans l'ordre de priorité suivant (croissant) :

  • la valeur USE par défaut, déclarée dans les fichiers make.defaults de votre profil ;
  • la valeur définie par l'utilisateur dans /etc/portage/make.conf/custom ;
  • la valeur définie par l'utilisateur dans les fichiers du répertoire /etc/portage/package.use/ ;
  • la valeur définie par l'utilisateur comme valeur d'environnement.

Exécutez emerge --info pour voir les paramètres USE effectifs. Cette commande affiche les valeurs de toutes les variables (y compris USE) utilisées par Portage :

emerge --info

Adapter votre système aux drapeaux USE modifiés

Si vous avez modifié vos drapeaux USE et que vous voulez mettre à jour votre système en entier en utilisant les nouvelles valeurs USE, exécutez emerge avec le paramètre --newuse.

Pour recompiler tout le système :

emerge -uDN world

Exécutez maintenant la fonction depclean de Portage pour supprimer les dépendances conditionnelles présentes sur l'ancien système, mais devenues inutiles avec les drapeaux USE actualisés.

Attention : L'exécution de emerge -c (ou --depclean) est une opération risquée qui doit être utilisée avec prudence. Relisez bien la liste des paquets "inutiles" pour vous assurer que les paquets nécessaires ne seront pas supprimés. Dans l'exemple suivant, le paramètre -a est ajouté pour que depclean demande une confirmation avant de procéder à la suppression.

Pour supprimer les paquets dont le système n'a plus besoin, exécutez :

emerge -ac

Quand depclean aura terminé, lancez revdep-rebuild pour reconstruire les paquets liés dynamiquement aux bibliothèques incluses dans les paquets qui ont pu être supprimés :

revdep-rebuild

Une fois cette opération terminée, votre système aura appliqué les nouveaux drapeaux USE.

Attribution de drapeaux USE en fonction du paquet

Visualiser les drapeaux USE disponibles

Par exemple, quels sont les drapeaux USE avec lesquels firefox peut être utilisé ? Pour le savoir, lancez emerge avec les options -p (ou --pretend) et -v (ou --verbose).

Par exemple:

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

Ceci dit, emerge n'est pas la seule option. À noter l'outil equery, spécialement conçu pour fournir des informations sur les paquets. Pour connaître les drapeaux USE disponibles pour un paquet, lancez equery avec l'argument uses. Considérons, par exemple, app-office/gnumeric :

equery uses app-office/gnumeric

[ 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