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
- recherche :
emerge -s paquet
- installation :
emerge paquet
. Il est recommandé d'utiliser-a
pour voir les paquets qui seront installés / reconfigurer ses flags USE. Je reviendrai là-dessus dans un futur article. - mettre à jour : en premier
emain sync -A
puisemerge -auUD --with-bdeps=y @world
.-a
: demande avant de mettre à jour / change le flag USE-u
: met à jour-U
: recompile les paquets si leurs flags ont changé-D
: considère l'entièreté du graphe des dépendances--with-bdeps=y
: installe les dépendances
- désinstaller un paquet : se fait en 2 temps. En premier
emerge -W paquet
pour le retirer de@world
puis la commande suivant pour supprimer ses fichiers du disque. - désinstaller les paquets plus utiles :
emerge -c
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 !