HOWTO USE
Un article de Gentoo Linux Wiki.
| Méthodes d'installation • CD Live • Noyau et matériel • Portables et Notebooks • Portage • Système • Réseaux et Services • Serveur X • Logiciels fréquemment utilisés • Autres |
Sommaire |
[modifier] Introduction
À quoi servent les options de la variable USE ?
Ces options ont pour but de configurer les paramètres de compilation des programmes lors de l'utilisation de la commande emerge. Cela correspond donc aux paramètres qui seront passés lors du ./configure pour ceux qui sont habitués à compiler manuellement. Elles permettent donc à l'utilisateur de choisir les fonctionnalités dont ils ont besoin : support d'une interface graphique, de tel matériel, etc. Exemple : l'option X : Adds support for X11.
Ce sont ces options qui font, en grande partie, la puissance de Portage : elles permettent une liberté de choix totale sur ce que veut l'utilisateur et permet de différencier le compilé du pré-compilé : ici, on n'a que ce qu'on veut contrairement aux paquets précompilés où on a, par défaut, un maximum d'options incluses.
Par contre, il est important de noter que la variable USE n'empêche pas l'installation de paquets. Avoir l'option -X n'empêchera pas de taper emerge x11-base/xorg-x11 et d'installer Xorg. Pas plus que si on veut installer un paquet qui dépend directement de gtk, l'option -gtk n'empêchera pas d'installer gtk. Les options ne sont là que pour les supports optionnels, par exemple d'un paquet étant fait soit pour Qt, soit pour gtk, les options -qt gtk permettront de ne compiler que l'interface gtk et ne nécessitera donc pas l'installation de Qt
Il y a deux types d'options :
globales : ce sont des options de types génériques, qui peuvent affecter tous les paquets avec sensiblement le même effet.
locales : ces options affectent en général un seul paquet, ou plusieurs de manières différentes.
[modifier] En pratique
[modifier] Listes des options
Comme il y a deux types d'options, il y a logiquement deux listes. La manière la plus simple d'y accéder, c'est d'utiliser celles contenues dans le répertoire /usr/portage/profile. Les deux fichiers sont :
use.desc pour les options globales. Les options sont listées de la manière suivante : nom - description. Exemple :
ipv6 - Adds support for IP version 6
use.local.desc pour les options locales. Elles sont listées sous la forme suivante : paquet_affecté:nom - description. Exemple :
media-video/mplayer:nvidia - Enables support for the nvidia xvmc video driver
La liste des options globales est aussi disponible sur le site de Gentoo :
http://www.gentoo.org/dyn/use-index.xml
[modifier] Définition d'une option
Pour obtenir la définition d'une option, il y a plusieurs méthodes :
- La simple :
cat /usr/portage/profiles/use.* | grep nom_de_l_option
- la plus geek : ajouter ceci à votre fichier ~/.bash_rc :
usedesc () {
local portdir=$(sed -n 's:^PORTDIR=::p' /etc/make.conf);
[ -z "$portdir" ] && portdir=/usr/portage;
grep -h "$1.*\ -\ " ${portdir}/profiles/use.* | gawk -F ' - ' ' { print (" \033[32;01m* \033[31;01m%s \033[0;01m- \033[36;01m%s\033[0;0m\n", $1, $2) }'
}
Il suffit ensuite de taper usedesc nom_de_l_option. Merci à TGL pour ce script.
- l'utilisation d'outils : par exemple, euse qui est fourni par le paquet app-portage/gentoolkit.
euse -i nom_de_l_option
vous donne une description. Il y a d'autres paquets comme app-portage/euses qui en font autant, voire plus.
[modifier] Utilisation
[modifier] savoir quelles options affectent un paquet
Rien de plus simple, il suffit d'utiliser l'option --verbose de emerge
emerge --pretend --verbose nomdupaquet
Exemple :
emerge -pv media-video/mplayer (...) media-video/mplayer-1.0_pre7-r1 USE="X alsa directfb dvd dvdread encode gif gtk ipv6 jpeg mad mmx nls opengl oss png real sdl sse svga truetype vorbis win32codecs xmms xv xvid -3dfx -3dnow -3dnowext -aac -aalib -arts -bidi -bindist -bl -cdparanoia -cpudetection -custom-cflags -debug -dga -doc -dts -dv -dvb -edl -esd -fbcon -ggi -i8x0 -jack -joystick -libcaca -lirc -live -livecd -lzo -matroska -matrox -mmxext -mythtv -nas -nvidia -rtc -samba -sse2 -tga -theora -v4l -v4l2 -xanim -xinerama -xvmc"
Ici, la liste est particulièrement longue, cela fait donc un bon exemple. (« Plus y en a, mieux c'est », pour ne pas dire « plus c'est long... » ;)) Pour savoir quels effets ont ces options, reportez-vous au paragraphe précédent.
Il est aussi possible d'utiliser l'utilitaire equery, lui aussi fourni par le paquet app-portage/gentoolkit :
equery uses nom_du_paquet
Ceci donne aussi directement la définition des options.
Pour l'effet pratique, i.e. les paquets qui seront installés en dépendance selon les options choisies, utilisez la méthode suivante :
USE="nomdesoptions" emerge --pretend nomdupaquet
Attention : l'utilisation de USE=" " comme ceci est à proscrire pour passer l'option définitivement lors de la compilation. Pour savoir comment configurer les options pour qu'elles aient effet, voyez le paragraphe suivant.
Remarque : sur l'architecture AMD64, il est possible de voir apparaître des options entre parenthèses dans la liste : il s'agit des options mmx, 3dnow, sse et sse2 En voici un exemple :
emerge transcode --pretend --verbose [ebuild R ] media-video/transcode-0.6.14-r3 (-3dnow) +X +a52 (-altivec) -dv +dvdread +encode -fame +gtk +imagemagick +jpeg -lzo -mjpeg (-mmx) +mpeg +network +ogg -quicktime +sdl (-sse) (-sse2) +theora +truetype -v4l +vorbis +xml2 +xvid 0 kB
Ceci est dû au fait que ces options sont ignorées pour l'achitecture AMD64 car elles activent sur certains paquets l'utilisation de code 32bits pour l'optimisation. Ceci est mentionné dans le manuel AMD64. C'est donc aux mainteneurs des paquets de faire le choix dans l'ebuild d'activer ces optimisations lorsqu'elles sont disponibles. On en voit un exemple dans l'ebuild de transcode 1.0 :
if use amd64; then
myconf="${myconf} --enable-mmx --enable-3dnow \
--enable-sse --enable-sse2"
[modifier] configurer les options
Il y a plusieurs façons de spécifier les options : les fichiers /etc/make.conf et /etc/portage/package.use.
Le fichier /etc/make.conf est utile pour activer ou désactiver des options globales sur tout le système. Par exemple, si vous ne voulez pas d'interface graphique via X, il faut mettre USE="-X" dans ce fichier. Par contre, si vous utilisez Gnome, il faut y ajouter les options gnome gtk. Bref, vous avez compris l'idée.
Par contre, si vous voulez activer/désactiver une option globale pour un seul paquet uniquement, il vous faut alors utiliser le fichier /etc/portage/package.use en le remplissant de la manière suivante : catégorie/paquet option. Exemple, désactiver le support des langues pour les pages man, afin de ne pas avoir les manpages-fr en dépendance :
echo "sys-apps/man-pages -nls" >> /etc/portage/package.use
Le fichier package.use est aussi utilisé pour les options locales. Les effets étant divers selon les paquets, il est donc recommandé d'utiliser ce fichier plutôt que le make.conf. Par exemple, l'option nvidia est beaucoup de significations différentes, et l'effet n'est pas forcément celui désiré.
Remarques :
* il existe de nombreux outils permettant d'éditer la variable USE, comme euse cité plus haut, app-portage/profuse, app-portage/ufed, app-portage/flagedit, etc avec plus ou moins de possibilités (l'ajout dans package.use n'est pas disponible pour tous)
* la méthode USE="..." emerge blabla n'est pas valide car elle ne conserve pas l'option passée à la compilation, et lors d'une recompilation ou d'une mise à jour, le paramètre sera perdu et cela peut causer des problèmes lors de l'utilisation.
* lorsque vous modifier la variable USE, n'oubliez pas de lancer
Code:
emerge --ask --update --deep --verbose --newuse world
pour que ces changements prennent effet.
[modifier] la fonction auto-use de Portage
Portage a été affecté d'un comportement très sujet à controverse : l'auto-use, c'est-à-dire l'ajout automatique d'options à la variable USE lors de l'installation de certains paquets. La liste des paquets et options associées est disponible dans le fichier /usr/portage/profiles/base/use.defaults. Le problème de cette fonction est que lorsqu'un paquet est désinstallé, l'option associée est retirée à moins qu'elle n'ait été explicitement déclarée dans /etc/make.conf ou /etc/portage/package.use et cela peut poser des problèmes. Le sujet a été longuement débattu, et cette fonction a été retirée dans portage 2.1_pre4. Si pour le moment, vous voulez la contourner, il y a bien entendu une astuce, c'est de modifier l'ordre de priorité des définitions de la variable USE qui vaut par défaut : "env:pkg:conf:auto:defaults". Pour la modifier, il suffit de rajouter USE_ORDER="env:pkg:conf:defaults" (c'est-à dire enlever auto de la liste) au fichier /etc/make.conf :
echo "USE_ORDER=\"env:pkg:conf:defaults\"" >> /etc/make.conf
Modifier autrement l'ordre de cette variable n'a pas vraiment de sens. Vous pouvez quand même retirer defaults si vous avez une bonne raison de le faire.
[modifier] le comportement de --newuse depuis Portage 2.1
Le comportement de l'option --newuse a été modifié à partir de Portage 2.1. En effet, lorsqu'une option USE est retirée ou ajoutée à IUSE dans l'ebuild d'un paquet, emerge --newuse --ask --verbose --deep world va vous proposer de recompiler ce paquet, que l'option ait été activée ou désactivée. Cela s'explique par le fait que le retrait d'une option ne précise pas quelle option est maintenant choisie par défaut, il faut donc recompiler pour être certain que le comportement considéré n'ait pas changé. Ces options seront affichées en jaune dans la sortir d'emerge avec l'option --verbose.
