Handbook:Parts/Portage/Advanced/fr

Introduction
Pour la plupart des utilisateurs, les informations reçues jusqu'à présent sont suffisantes pour toutes leurs opérations Linux. Mais Portage est capable de beaucoup plus ; bon nombre de ses fonctionnalités sont destinées aux utilisateurs avancés ou ne sont applicables que dans certains cas particuliers. Pourtant, cela n'est pas une excuse pour ne pas les documenter.

Bien sûr, avec beaucoup de flexibilité vient une énorme liste de cas potentiels. Il ne sera pas possible de les documenter tous ici. À la place, nous espérons mettre l'accent sur certaines questions génériques qui peuvent ensuite être adaptées aux besoins personnels. Plus de réglages et d'astuces peuvent être trouvés un peu partout dans le Wiki Gentoo.

La plupart, sinon toutes ces fonctionnalités supplémentaires peuvent être facilement trouvées en explorant les pages de manuel fournies par Portage :

Enfin, sachez qu'il s'agit de fonctionnalités avancées qui, si elles ne fonctionnent pas correctement, peuvent rendre le débogage et le dépannage très difficiles. Assurez-vous de les mentionner lorsque vous rencontrez un bogue et ouvrez un rapport de bogue.

Utiliser /etc/portage/env
Par défaut, les compilations de paquets utiliseront les variables d'environnement définies dans, telles que CFLAGS , MAKEOPTS et plus encore. Dans certains cas cependant, il peut être avantageux de fournir différentes variables pour des paquets spécifiques. Pour ce faire, Portage prend en charge l'utilisation de et.

Le fichier contient la liste des paquets pour lesquels des variables d'environnement déviantes sont nécessaires ainsi qu'un identificateur spécifique indiquant à Portage les changements à effectuer. Le nom de l'identifiant est libre et Portage cherchera les variables dans le fichier.

Exemple: Utilisation du débogage pour des paquets spécifiques
A titre d'exemple, nous activons le débogage pour le paquet.

Tout d'abord, définissez les variables de débogage dans un fichier appelé. Le nom est arbitrairement choisi, mais reflète bien sûr la raison de la déviation pour rendre plus évident par la suite pourquoi une déviation a été mise en place.

Ensuite, nous marquons le paquet pour utiliser ce contenu :

Utiliser /etc/portage/bashrc et fichiers associés
Quand Portage travaille avec des ebuilds, il utilise un environnement bash dans lequel il appelle les différentes fonctions de compilation (comme,  ,  , etc. ). Mais Portage permet également aux utilisateurs de configurer un environnement bash spécifique.

L'avantage d'utiliser un environnement bash spécifique est qu'il permet aux utilisateurs de s'accrocher au processus emerge lors de chaque étape qu'il effectue. Cela peut être fait pour chaque emerge (via ) ou en utilisant des environnements par paquet (via comme indiqué plus haut).

Pour s'accrocher au processus, l'environnement bash peut écouter les variables EBUILD_PHASE, CATEGORY ainsi que les variables toujours disponibles lors du développement d'ebuild (comme P , PF , ...). En fonction des valeurs de ces variables, des étapes/fonctions supplémentaires peuvent être exécutées.

Exemple: Mise à jour de la base de données de fichiers
Dans cet exemple, nous utiliserons pour appeler certaines applications de base de données de fichiers afin de garantir que leurs bases de données sont à jour avec le système. Les applications utilisées dans l'exemple sont (un outil de détection d'intrusion) et  (à utiliser avec ), mais elles sont utilisées comme exemples. Ne considérez pas cela comme un guide pour AIDE !

Pour utiliser dans ce cas, nous devons nous « accrocher » (hook) dans les fonctions   (après suppression des fichiers) et   ( après l'installation des fichiers), car c'est à ce moment que les fichiers ont été modifiés sur le système de fichiers.

Utiliser l'emplacement /etc/portage/postsync.d
Jusqu'à présent, nous avons parlé de l'accroche dans les processus ebuild. Cependant, Portage a aussi une autre fonction importante : mettre à jour le dépôt Gentoo. Pour exécuter des tâches après la mise à jour du dépôt Gentoo, placez un script dans et assurez-vous qu'il soit marqué comme étant exécutable.

Exemple: Exécuter eix-update
Si n'a pas été utilisé pour mettre à jour l'arbre, il est toujours possible de mettre à jour la base de données eix après avoir lancé  (ou ) en plaçant un lien symbolique vers  appelé  dans.

Utiliser /etc/portage/profile
Par défaut, Gentoo utilise les paramètres contenus dans le profil pointé par (lien symbolique vers le bon répertoire de profil). Ces profils définissent à la fois les paramètres spécifiques et les paramètres hérités des autres profils (via leur fichier parent).

En utilisant, les utilisateurs peuvent remplacer les paramètres de profil tels que les paquets (les paquets considérés comme faisant partie de l'ensemble du système), les options de la variables USE forcées, et plus encore.

Exemple : Ajouter nfs-utils à l'ensemble system
When using an NFS-based file systems for rather critical file systems, it might be necessary to mark as a system package, causing Portage to heavily warn administrators if they would attempt to unmerge it.

To accomplish that, we add the package to, prepended with a :

Using epatch_user
To manage several ebuilds in a similar manner, ebuild developers use eclasses (which are shell libraries) that define commonly used functions. One of these eclasses is which offers a helpful function called.

The  function applies source code patches that are found in, whatever directory is found first. Sadly, not all ebuilds automatically call this function so just putting a patch in this location might not always work.

Luckily, with the information provided earlier in this chapter, users can call this function by hooking into, for instance, the prepare phase. The function can be called as many times as necessary - it will only apply the patches once.

Example: Applying patches to Firefox
The package is one of the many that already call   from within the ebuild, so there is no need to override anything specific.

If for some reason (for instance because a developer provided a patch and asked to check if it fixes the bug reported) patching Firefox is wanted, all that is needed is to put the patch in (probably best to use the full name and version so that the patch does not interfere with later versions) and rebuild Firefox.