CentOS 8 : La gestion des paquets (RPM, DNF…)

CentOS 8 : La gestion des paquets (RPM, DNF…)

29 octobre 2020 0 Par Mairien Anthony

Comment télécharger, installer, compiler des paquets et plus sous CentOS 8.

Aujourd’hui nous allons voir ensemble comment fonctionne un gestionnaire de paquets ainsi qu’un gestionnaire de téléchargement et résolution de dépendances, et plus spécifiquement sous CentOS en version 8. L’occasion de se rappeler des bases et de creuser un peu plus !

I) Gestionnaire de paquets, c’est quoi au juste ?

Déjà, et comme mon habitude, il est bon de définir en premier lieu de quoi on parle, au risque de passer pour un puriste.

Sous GNU/Linux (mais bientôt même sous Windows 10), il est possible d’installer des logiciels (paquets) soit en les téléchargeant depuis le site du développeur, soit en allant les chercher directement dans des dépôts.

Lorsque nous allons chercher un paquet dans un dépôt, nous utiliserons soit un magasin d’applications, qui sont légions sur les versions Desktop de Linux (équivalent du Windows Store si l’on peut dire), soit nous utiliserons le terminal.

Quand nous utilisons le terminal, nous utiliserons en ligne de commandes un logiciel comme apt (famille Debian), dnf (famille Red Hat), ou encore zypper (famille OpenSuse).

Par exemple, pour installer l’utilitaire htop sous Ubuntu, on utilisera la syntaxe suivante :

apt install htop

Sauf que apt/dnf/zypper ne sont pas des gestionnaire de paquets, même si par abus de langage vous l’entendrez souvent, en réalité ce sont des gestionnaire de téléchargement et résolution de dépendances. Un nom certes à rallonge mais qui décrit bien ce qu’il fait: il va télécharger dans les dépôts le paquet voulu ainsi que ses dépendances, puis il l’installe automatiquement.

Et du coup vous allez me dire, c’est quoi un gestionnaire de paquets ? Et bien c’est par exemple dpkg (famille Debian), rpm (famille Red Hat), etc.

Eux, on les utilisera souvent lorsque l’on a téléchargé un paquet depuis un site tiers, et donc qu’on se retrouve avec un binaire à installer « manuellement ». Petit exemple toujours avec Ubuntu :

dpkg -i htop-1.2.4.deb

Et hop, le paquet s’installe ! Si vous avez les dépendances requis bien entendu.

II) Et les dépôts, ça se passe comment ?

Les dépôts sont des sites internets souvent en HTTP(S)/FTP qui stockent une quantité astronomique de logiciels, sous forme de paquets. Certains dépôts sont dits « officiels », car ils sont gérés et maintenus par les mainteneurs de la dite distribution, et d’autres peuvent être créés par les développeurs d’une application tierce. Un simple CD/DVD d’installation est considéré comme un dépôt local, et rien ne vous empêche de créer votre propre dépôt auto-hébergé !

Bien entendu, toute une sécurité est mise en place pour ne pas se retrouver avec des paquets défectueux/vérolés, chaque paquet est testé et validé, et on préférera toujours utiliser des dépôts officiels plutôt que des tiers.

D’ailleurs, il est important avant de vouloir installer n’importe quel paquet depuis les dépôts, de d’abord mettre à jour son cache (càd la liste des paquets disponibles). Pour CentOS (car oui de base, on va se concentrer sur cette distribution) il convient de faire la commande suivante:

dnf update

Celle-ci combine le apt-get update et apt-get upgrade de chez Debian. Si on ne veut que mettre à jour son cache, sans mettre à jour les paquets, on préférera la commande suivante:

dnf check-update

Quand vous aurez fraîchement installé votre CentOS 8, comme pour toutes distributions, des dépôts seront pré-installés. Pour les lister, on peut utiliser notre super gestionnaire de téléchargement et résolution de dépendances pour les lister via un simple sudo dnf repolist, avec l’argument -v si on désire quelque chose d’un peu plus verbeux :

Comme on peut le voir ici, nous avons par défaut trois dépôts pré-installés, à savoir :

  • AppStream, dépôt obligatoire au minimum pour l’installation de la distribution. Celui-ci contient des routines de langage, des dépendances, des outils, des logiciels de base…
  • Base, contient des logiciels propres à l’OS lui-même, comme NetworkManager, Bash, des polices d’écritures…
  • Extras, dépôt un peu spécial contenent quelques paquets permettant d’ajouter des fonctionnalités à sa distribution.

Bien entendu, vous n’aurez pas tous les paquets du monde avec des trois dépôts seulement, surtout que certains paquets ne peuvent pas être mis dans les dépôts « de base » par rapport à certains soucis de licences.

Pour rajouter un dépôt, rien de plus simple !

dnf install epel-release

Cette commande va donc rajouter le dépôt EPEL (Extra Packages for Enterprise Linux). C’est un dépôt très connu que l’on installe très souvent sous CentOS/RedHat, car ce dernier regorge de beaucoup de logiciels qui peuvent être utiles. Si vous désirez en savoir plus sur ce dépôt, rendez-vous ici.

Bien, maintenant que notre distribution est à jour, et que l’on sait où on télécharge magiquement ces paquets, il est temps d’en installer et de faire un peu joujou avec !

III) Installer, supprimer, compiler…

Cette partie là c’est bien moins de théorie, et plus des commandes pratiques, donc on ira assez vite car si vous avez un jour un trou de mémoire, de nombreux sites internet sauront vous rappeler les bonnes commandes (ou bien vous utiliserez l’utilitaire « man » comme tout bon Sysadmin, je suppose?).

Ici on va donc faire un rapide tableau, avec à chaque fois « htop » comme nom de paquet, à remplacer bien entendu par celui-désiré :

Installer un paquet dnf install htop
Supprimer un paquetdnf remove htop
Chercher un paquetdnf search htop
Supprimer les dépendances plus utiliséesdnf autoremove
Afficher l’historique des opérationsdnf history
Afficher la liste des dépôts utilisésdnf repolist


Comme vous pouvez le voir, rien de très sorcier !

Imaginons maintenant que vous venez de télécharger un paquet directement chez votre développeur, vous allez donc devoir utiliser non pas dnf mais rpm pour l’installer cette fois-ci. Voyons un peu ça !

Ici dans l’exemple je vais télécharger un .rpm de VSCodium, le clone de Visual Studio Code (que je vous conseille au passage).

Une fois le paquet téléchargé, on le rend exécutable via la commande chmod +x, classique, puis on peut réaliser un rpm -i et c’est tout bon !

Ou presque :

Et oui, RPM ne fait qu’installer le paquet, il s’en fiche des dépendances contrairement à DNF ! Ici c’est assez simple, on peut se rendre sur un site comme rpmfind.net pour rechercher notre dépendance et l’installer, et une fois fait, on relance notre commande précédente :

Et là on est bon !

Bien entendu, si vous êtes un tantinet flemmard, vous pouvez très bien télécharger le .rpm et l’ouvrir via le magasin logiciel, qui est donc une surcouche graphique à RPM 😉

On touche doucement à la fin de l’article ! Il nous reste encore un cas de figure que l’on a pas vu, celui où il n’y a pas de binaire disponible… dans ce cas là il faudra compiler le programme nous-même, comme ces fous furieux de chez Gentoo.

Ici on va donc compiler l’utilitaire htop, rien d’incroyable mais étant donné que je ne suis pas un expert en compilation et aussi que j’avoue ne pas avoir trop d’idée de petit logiciel à compiler, et bien voilà voilà.

Donc, la première étape est de télécharger la tarball, c’est-à-dire l’archive au format tar puis de l’extraire :

Ensuite on peut rentrer dans le dossier extrait et voir un peu ce qu’il s’y trouve :

Pas mal de fichiers du coup… mais ce n’est pas grave ! On ensuite utiliser l’utilitaire configure qui va vérifier que nous avons tous les composants requis pour s’âtteler à la tâche :

Il se peut que vous obteniez une erreur de dépendance, dans ce cas on fait comme plus en haut, on se débrouille pour la retrouver et l’installer.

Une fois fait, on peut lancer la compilation avec un make, tout simplement ! Il se peut que vous ayez des lignes étranges sur votre écran, c’est tout à fait normal…

Et enfin on copie le programme tout juste compilé dans le dossier /usr/local/bin, et on fait ceci via la commande sudo make install :

Et tadaaaa !

Et pour le désinstaller, on reste dans le répertoire et on fera un sudo make uninstall, aussi bête que ça 😄

IV) Conclusion

Cet article est donc désormais terminé, j’espère comme d’habitude vous avoir appris quelques bricoles, malgré que nous n’ayons pas pu touuut découvrir tant le sujet est vaste. Par ailleurs, lors de vos futures recherches, il se peut que vous tombiez sur un certain yum en lieu et place de dnf, c’est normal : yum est l’ancêtre de dnf, maintenant dépassé. Cependant, la plupart des commandes que vous trouverez seront équivalentes ou presque, donc pas d’inquiétudes.

Je tiens aussi à m’excuser par avance si des erreurs sont présentes dans l’article, de base je suis plutôt un #TeamDebian et j’avoue ne pas avoir trop fréquenté CentOS/RedHat, donc malgré mes nombreuses recherches, désolé pour les éventuelles coquilles !

Sur ce, je vous souhaite une bonne journée/soirée !