LE BLOG DE RICK Chasseurs de succès Linux Random WU

Par Rick dans Linux le 19/09/2022.


Gentoo et emerge, introduction

Cet article est le numéro 1 de la série Comprendre et utiliser Portage sur Gentoo.

  1. Gentoo et emerge, introduction
  2. La configuration de Portage

Cet article est le premier d'une petite série consacrée à Gentoo, sa configuration et plus particulièrement Portage. Certaines parties feront aussi office de mémo pour moi, en plus d'une présentation de Portage et ses commandes pour les autres. Je ne prévois pas d'être exhaustif et je vais présenter uniquement ce que je connais et comprends ; voir même ce que j'apprends en cours de route. Attendez-vous à des corrections régulières !

À noter aussi que je redirige très souvent vers des pages wiki ou man lorsque ça devient plus poussé. Je n'ai pas envie de faire des redites quand l'information est déjà assez explicite ailleurs quand on commence à comprendre un peu le fonctionnement de l'outil. Si vraiment vous coincez sur un passage, n'hésitez pas à m'envoyer un mail (rick@gnous.eu ou rick@biscuit.space) !

Merci à elmar et anon pour la relecture.

Nous allons dans ce premier article voir ce qu'est un paquet dans Gentoo, comment ils sont gérés par Portage et les commandes basiques pour les installer.


Gentoo est une distribution Linux particulière grâce à son gestionnaire de paquet. Ici, on ne télécharge pas de binaires mais du code source et on le compile sur la machine de l'utilisateur. Cela permet une grande personnalisation et une bonne optimisation des programmes.

Ce gestionnaire de paquets est donc portage et est appelé avec la commande emerge. Vous pouvez utiliser la page wiki pour avoir de l'aide ou encore faire la commande man emerge. Il existe aussi une cheatsheet sur le wiki de Gentoo.

Le principe

Comme dit précédemment, le principe de portage est de télécharger les codes sources des programmes et les compiler. Cela permet de n'avoir que le strict nécessaire d'installer.

Cela permet aussi de customiser les programmes en mettant des patchs et des configurations qui sont mises à jour à chaque compilation (comme les outils de Suckless).

Lors de l'installation d'un programme, Portage va lire son ebuild. C'est un script qui va ensuite indiquer où télécharger les sources, les dépendances, les commandes pour la compilation, où l'installer ensuite... Chaque version de chaque paquet a son ebuild (firefox-100.ebuild, firefox-101.ebuild...). Le principe est à peu près le même que pour les paquets venant de l'AUR de Arch.

Le paquet installé sera ensuite "mergé" dans le world qui contient l'ensemble de vos paquets installés par vos soins. Pour le supprimer du système, il faut l'unmerge du world (avec la commande emerge -W paquet) dans un premier temps.

Les paquets sont aussi organisés par catégorie. Lors d'une recherche, leur nom s'affiche avec la forme suivant : catégorie/nom. Par exemple, surf, un navigateur web, est dans la catégorie www-client. Cela permet aussi d'installer des paquets qui portent le même nom mais qui appartiennent à deux catégories différentes.

La liste des paquets disponibles se trouve dans un dépôt appelé overlay. Il existe un overlay officiel Gentoo, d'autres sont des overlays de distributions basées sur Gentoo comme Pentoo pour la cyber sécurité, et d'autres encore sont non officiels et gérés par la communauté, là encore comme les paquets de l'AUR. À noter que les dépôts peuvent des Git, des SVN, etc.

Il existe plusieurs manières pour mettre à jour l'overlay officiel, la commande basique est emerge-webrsync. Si par contre l'overlay a été installé avec autre chose que rsync, il faut utiliser emaint sync -r gentoo.

Vous pouvez lire le chapitre suivant pour voir un peu plus en détail le concept d'overlay ou vous pouvez le sauter pour apprendre l'utilisation basique des commandes portages.

Comment accéder aux overlays

Gentoo possède plusieurs overlays sauvegardés par défaut pour permettre de changer ou d'ajouter rapidement des dépôts avec un minimum de confiance. Pour pouvoir y accéder, il faut activer l'overlay au préalable.

Il existe 2 façons d'accéder aux overlays: layman ou eselect. layman est cependant déprécié et il est préférable d'utiliser eselect dans la majorité des cas.

Il est aussi possible de faire et d'utiliser son propre overlay, mais on y reviendra plus tard dans la série d'articles.

Lorsqu'un overlay est activé, il sera alors téléchargé. Vous pouvez le retrouver ou dans /var/db/repos ou dans /var/lib/layman. Lors de la synchronisation, il va tout simplement être mis à jour, avec un git pull par exemple. N'hésitez pas à naviguer un peu dans les fichiers ebuild présents sur votre machine pour voir comment ils sont écrits !

À la main

Même s'il existe des outils pour pouvoir gérer les overlays, c'est toujours intéressant de voir comment cela se fait à la main.

Pour configurer un overlay, c'est très simple. Il suffit de créer un fichier dans le dossier /etc/portage/repos.conf, comme monoverlay.conf par exemple. Il suffit de rajouter quelques lignes pour préciser son nom et où il se trouve avant de le synchroniser.

[mon-overlay]
location = /chemin/ou/sera/telecharger/loverlay
sync-type = git
sync-uri = https://git.de.loverlay/overlay.git

Vous pouvez ensuite le synchroniser avec emaint -r mon-overlay. Vérifiez si les fichiers ebuild sont bien présents dans le chemin que vous avez entré. À noter que l'url peut aussi être locale, si vous avez votre overlay personnel.

Voici une petite page wiki qui explique le fonctionnement de ce fichier plus en détail.

Layman

Pour pouvoir voir tous les overlays actuellement activés, il suffit d'utiliser l'argument -l. Vous pouvez aussi voir les dépôts disponibles avec l'option -L.

Il sera alors affiché une liste de ligne montrant tous les dépôts enregistrés localement mais pas forcément activés. Elles auront cette structure:

 * nom      [type de dépôt] (lien)

Exemple de sortie:

 * zGentoo       [Git  ] (https://lab.retarded.farm/zappel/zGentoo.git, git...)
 * zozx-overlay  [Git  ] (https://github.com/zozx/zozx-overlay.git, git+ssh...)
 * zugaina       [Rsync] (rsync://gentoo.zugaina.org/zugaina-portage          )
 * zx2c4         [Git  ] (git://git.zx2c4.com/portage, http://git.zx2c4.com...)

Les astérisques peuvent être de plusieurs couleurs: * vert : dépôt officiel * jaune : dépôt non officiel * rouge : dépôt inutilisable, car le logiciel pour le lire n'est pas installé

Voici maintenant un tableau récapitulant les commandes principales à connaitre.

Argument Paramètres Fonction
-a nom d'un overlay active un overlay
-d nom d'un overlay désactive un overlay
-s nom d'un overlay synchronise un overlay
-S synchronise tous les overlays

Si vous voulez avoir plus d'informations sur layman, consultez sa man page ou le wiki de Gentoo

Eselect

Je vais sans doute revenir dessus dans le futur. La commande eselect permet de modifier rapidement et facilement des versions de logiciels (utiliser Java 11 ou lieu de la 8 et vice versa, changer de version du kernel Linux, etc.). Il permet aussi de rajouter des overlays. La commande qui nous intéresse ici est eselect repository. Vous pouvez voir la liste des dépôts disponibles avec list. En rajoutant -i, il n'affiche que les dépôts installés. Il suffit ensuite d'utiliser enable ou disable suivi du nom de l'overlay pour les activer ou désactiver.

Pour mettre à jour ensuite les dépôts, il faut taper la commande emaint sync -A.

Si vous voulez avoir plus d'informations sur eselect, consultez le wiki de Gentoo ou sa page d'aide (disponible en tapant eselect repository).

Utilisation basique

Voici déjà la fin de ce premier article ! Le prochain portera sur la configuration en elle même de Portage et sur les mystérieux flags USE. À bientôt !