102.5 Leçon 1
Certification : |
LPIC-1 |
---|---|
Version : |
5.0 |
Thème : |
102 Installer Linux et gérer les paquets |
Objectif : |
102.5 Utiliser les gestionnaires de paquets RPM et Yum |
Leçon : |
1 sur 1 |
Introduction
Il y a longtemps, lorsque Linux en était encore à ses débuts, le moyen le plus courant de distribuer un logiciel était sous forme d’un fichier compressé (généralement une archive .tar.gz
) avec le code source, qu’il fallait décompresser et compiler soi-même.
Cependant, à mesure que la quantité et la complexité des logiciels augmentaient, la nécessité de trouver un moyen de distribuer des logiciels pré-compilés s’imposait. En effet, tout le monde n’avait pas les ressources, en termes de temps et de puissance de calcul, pour compiler de gros projets comme le noyau Linux ou un serveur X.
Petit à petit, les efforts pour normaliser un mode de distribution de ces "paquets" logiciels se sont multipliés, et les premiers gestionnaires de paquets ont vu le jour. Ces outils ont considérablement facilité l’installation, la configuration ou la suppression de logiciels sur un système.
Parmi ceux-ci figurait le RPM Package Manager et son outil correspondant (rpm
), développé par Red Hat. De nos jours, ils sont largement utilisés non seulement sur Red Hat Enterprise Linux (RHEL) lui-même, mais aussi sur ses descendants, comme Fedora, CentOS et Oracle Linux, d’autres distributions comme openSUSE et même d’autres systèmes d’exploitation, comme AIX d’IBM.
D’autres outils de gestion des paquets populaires sur les distributions compatibles Red Hat sont yum
(YellowDog Updater Modified), dnf
(Dandified YUM) et zypper
, qui peuvent simplifier de nombreux aspects de l’installation, de la maintenance et de la suppression des paquets, ce qui rend la tâche beaucoup plus facile.
Dans cette leçon, nous allons apprendre à utiliser rpm
, yum
, dnf
et zypper
pour obtenir, installer, maintenir et supprimer des logiciels sur un système Linux.
Note
|
Malgré l’utilisation du même format de paquets, il y a des différences internes entre les distributions, de sorte qu’un paquet conçu spécifiquement pour openSUSE ne fonctionne pas forcément sur un système RHEL, et vice-versa. Lorsque vous recherchez des paquets, vérifiez toujours leur compatibilité et essayez d’en trouver un qui soit adapté à votre distribution spécifique dans la mesure du possible. |
Le gestionnaire de paquets RPM (rpm)
Le gestionnaire de paquets RPM (rpm
) est l’outil de référence pour la gestion des paquets logiciels sur les systèmes basés sur (ou dérivés de) Red Hat.
Installer, mettre à jour et supprimer des paquets
L’opération la plus basique consiste à installer un paquet, ce qui peut être effectué avec :
# rpm -i PAQUET
Où PAQUET
est le nom du paquet .rpm
que vous souhaitez installer.
S’il existe une version précédente d’un paquet sur le système, vous pouvez passer à une version plus récente en utilisant l’option -U
:
# rpm -U PAQUET
S’il n’y a pas de version précédente de PAQUET
installée, alors une nouvelle copie sera installée. Pour éviter cela et seulement mettre à jour un paquet installé, utilisez l’option -F
.
Dans les deux cas, vous pouvez ajouter l’option -v
pour obtenir un affichage détaillé (plus d’informations sont fournies pendant l’installation) et -h
pour obtenir des signes dièse (#
) qui s’affichent en guise de barre de progression. Plusieurs options peuvent être combinées, de sorte que rpm -i -v -h
est identique à rpm -ivh
.
Pour supprimer un paquet installé, passez l’option -e
(comme “erase” ou effacer) à rpm
, suivie du nom du paquet que vous souhaitez supprimer :
# rpm -e wget
Si un paquet installé dépend du paquet en cours de suppression, vous obtiendrez un message d’erreur :
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
Pour venir à bout de l’opération, vous devrez d’abord supprimer les paquets qui dépendent de celui que vous souhaitez supprimer (dans l’exemple ci-dessus, file-roller
). Vous pouvez fournir plusieurs noms de paquets en argument à rpm -e
pour supprimer plusieurs paquets à la fois.
Gérer les dépendances
La plupart du temps, un paquet dépendra d’autres paquets pour fonctionner comme prévu. À titre d’exemple, un éditeur d’images pourra recourir à certaines bibliothèques pour gérer les fichiers JPG, ou un logiciel pourra avoir besoin d’un kit de développement de widgets comme Qt ou GTK pour son interface utilisateur.
rpm
va vérifier si ces dépendances sont installées sur votre système, et va échouer à installer le paquet dans le cas contraire. Dans ce cas, rpm
affichera la liste des composants manquants. Cependant, il n’est pas capable de résoudre les dépendances par lui-même.
Dans l’exemple ci-dessous, l’utilisateur a essayé d’installer un paquet pour l’éditeur d’images GIMP, mais certaines dépendances étaient manquantes :
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
C’est à l’utilisateur de trouver les paquets .rpm
avec les dépendances correspondantes et de les installer. Les gestionnaires de paquets comme yum
, zypper
et dnf
disposent d’outils qui permettent de savoir quel paquet fournit un fichier spécifique. Nous y reviendrons un peu plus loin dans cette leçon.
Afficher la liste des paquets installés
Pour obtenir une liste de tous les paquets installés sur votre système, utilisez la commande rpm -qa
(comme dans “query all”).
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
Obtenir des informations sur les paquets
Pour obtenir des informations sur un paquet installé, comme son numéro de version, son architecture, sa date d’installation, le nom du mainteneur du paquet, une description sommaire, etc., utilisez rpm
avec l’option -qi
(comme “query info”), suivie du nom du paquet.
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Install the unzip package if you need to list, test or extract files from a zip archive.
Pour obtenir une liste des fichiers contenus dans un paquet installé, utilisez l’option -ql
(comme “query list”) suivie du nom du paquet :
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
Si vous souhaitez obtenir des informations ou une liste de fichiers d’un paquet qui n’a pas encore été installé, ajoutez simplement l’option -p
aux commandes ci-dessus, suivie du nom du fichier RPM (FICHIER
). Donc rpm -qi PAQUET
devient rpm -qip FICHIER
, et rpm -ql PAQUET
devient rpm -qlp FICHIER
, comme indiqué ci-dessous.
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (suite du listing)
Savoir à quel paquet appartient un fichier
Pour savoir quel paquet installé possède un fichier, utilisez l’option -qf
(pensez à “query file”) suivie du chemin complet du fichier :
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
Dans l’exemple ci-dessus, le fichier /usr/bin/unzip
appartient au paquet unzip-6.0-19.el7.x86_64
.
YellowDog Updater Modified (YUM)
yum
a été développé à l’origine sous le nom de Yellow Dog Updater (YUP), un outil pour gérer les paquets de la distribution Yellow Dog Linux. Au fil du temps, il a évolué pour gérer les paquets sur d’autres systèmes basés sur RPM, tels que Fedora, CentOS, Red Hat Enterprise Linux et Oracle Linux.
D’un point de vue fonctionnel, il est similaire à l’outil apt
sur les systèmes basés sur Debian, en étant capable de rechercher, installer, mettre à jour et supprimer des paquets tout en gérant automatiquement les dépendances. yum
peut être utilisé pour installer un seul paquet ou pour mettre à jour d’une traite un système entier.
Rechercher des paquets
Avant d’installer un paquet, vous devez connaître son nom. Pour ce faire, vous pouvez effectuer une recherche avec yum search MOTIF
, où MOTIF
est le nom du paquet recherché. Le résultat est une liste de paquets dont le nom ou le résumé contient le motif de recherche spécifié. Par exemple, si vous avez besoin d’un outil pour gérer les fichiers compressés 7Zip (avec l’extension .7z
), vous pouvez utiliser :
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Name and summary matches only, use "search all" for everything.
Installer, mettre à jour et supprimer des paquets
Pour installer un paquet à l’aide de yum
, utilisez la commande yum install PAQUET
, où PAQUET
est le nom du paquet. yum
va récupérer le paquet et les dépendances correspondantes depuis un dépôt en ligne et installer le tout sur votre système.
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
Pour mettre à jour un paquet installé, utilisez yum update PAQUET
, où PAQUET
est le nom du paquet que vous souhaitez mettre à jour. Par exemple :
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
Si vous ne fournissez aucun nom de paquet en argument, vous pouvez mettre à jour tous les paquets du système pour lesquels une mise à jour est disponible.
Pour vérifier si une mise à jour est disponible pour un paquet spécifique, utilisez yum check-update PAQUET
. De manière similaire, si vous omettez le nom du paquet, yum
vérifiera les mises à jour pour chacun des paquets installés sur le système.
Pour supprimer un paquet installé, utilisez yum remove PAQUET
, où PAQUET
est le nom du paquet que vous souhaitez supprimer.
Savoir quel paquet fournit un fichier donné
Dans un exemple précédent, nous avons montré une tentative d’installation de l’éditeur d’images gimp
, qui a échoué pour cause de dépendances non satisfaites. Certes, rpm
montre quels fichiers sont manquants, mais il ne liste pas le nom des paquets qui les fournissent.
Par exemple, l’une des dépendances manquantes était libgimpui-2.0.so.0
. Pour voir quel paquet la fournit, vous pouvez utiliser yum whatprovides
suivi du nom du fichier recherché :
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
La réponse est gimp-libs-2.8.22-1.el7.i686
. Partant de là, vous pouvez installer le paquet avec la commande yum install gimp-libs
.
Cela fonctionne également pour les fichiers déjà présents sur votre système. Par exemple, si vous souhaitez savoir d’où vient le fichier /etc/hosts
, vous pouvez utiliser :
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
La réponse est setup-2.8.71-10.el7.noarch
.
En savoir plus sur un paquet
Pour obtenir des informations sur un paquet, comme sa version, son architecture, sa description, sa taille et plus encore, utilisez yum info PAQUET
où PAQUET
est le nom du paquet pour lequel vous voulez en savoir plus :
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
Gérer les dépôts de logiciels
Pour yum
, les dépôts de paquets (“repos”) figurent dans le répertoire /etc/yum.repos.d/
. Chaque dépôt est représenté par un fichier .repo
, comme CentOS-Base.repo
.
Des dépôts supplémentaires peuvent être ajoutés par l’utilisateur en ajoutant un fichier .repo
dans le répertoire mentionné ci-dessus, ou à la fin de /etc/yum.conf
. Ceci étant dit, la procédure recommandée pour ajouter ou gérer les dépôts de paquets passe par l’outil yum-config-manager
.
Pour ajouter un dépôt, utilisez le paramètre --add-repo
suivi de l’URL d’un fichier .repo
.
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
Pour obtenir une liste de tous les dépôts disponibles, utilisez yum repolist all
. Vous obtiendrez un résultat semblable à celui-ci :
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
Les dépôts désactivés (disabled
) seront ignorés lors de l’installation ou de la mise à jour des logiciels. Pour activer ou désactiver un dépôt, invoquez l’outil yum-config-manager
en renseignant l’identifiant du dépôt.
Dans l’exemple ci-dessus, l’identifiant du dépôt est indiqué dans la première colonne (repo id
) de chaque ligne. Utilisez uniquement la partie avant le premier /
, de sorte que l’identifiant pour le dépôt CentOS-7 - Updates
est updates
, et non pas updates/7/x86_64
.
# yum-config-manager --disable updates
La commande ci-dessus va désactiver le dépôt updates
. Pour le réactiver, utilisez :
# yum-config-manager --enable updates
Note
|
Yum conserve les paquets téléchargés et les métadonnées associées dans un répertoire de cache (généralement |
DNF
dnf
est l’outil de gestion de paquets utilisé sous Fedora, c’est un fork de yum
. De ce fait, les commandes et les paramètres se ressemblent beaucoup. Cette section va vous donner un aperçu rapide de dnf
.
- Recherche de paquets
-
dnf search MOTIF
, oùMOTIF
correspond à ce que vous recherchez. Par exemple,dnf search unzip
affichera tous les paquets qui contiennent le motunzip
dans le nom ou la description. - En savoir plus sur un paquet
-
dnf info PAQUET
- Installer des paquets
-
dnf install PAQUET
, oùPAQUET
est le nom du paquet que vous souhaitez installer. Vous pouvez trouver le nom exact en effectuant une recherche. - Supprimer des paquets
-
dnf remove PAQUET
- Mettre à jour des paquets
-
dnf upgrade PAQUET
pour mettre à jour un seul paquet. Invoquez la commande sans paramètre pour mettre à jour l’ensemble des paquets du système. - Savoir à quel paquet appartient un fichier
-
dnf provides FICHIER
- Obtenir une liste de tous les paquets installés sur le système
-
dnf list --installed
- Afficher le contenu d’un paquet
-
dnf repoquery -l PAQUET
Note
|
|
Gérer les dépôts de logiciels
Tout comme yum
et zypper
, dnf
fonctionne avec des dépôts de logiciels (repos). Chaque distribution dispose d’une liste de dépôts par défaut, et les administrateurs peuvent ajouter ou supprimer des dépôts en cas de besoin.
Pour obtenir une liste de tous les dépôts disponibles, utilisez dnf repolist
. Pour répertorier uniquement les dépôts activés, ajoutez l’option --enabled
, et pour afficher uniquement les dépôts désactivés, utilisez l’option --disabled
.
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
Pour ajouter un dépôt, invoquez dnf config-manager --add_repo URL
, où URL
est l’URL complète du dépôt. Pour activer un dépôt, utilisez dnf config-manager --set-enabled ID_DEPOT
.
De même, pour désactiver un dépôt, utilisez dnf config-manager --set-disabled ID_DEPOT
. Dans les deux cas, ID_DEPOT
est l’ID unique du dépôt, que vous pouvez obtenir en invoquant dnf repolist
. Les dépôts ajoutés sont activés par défaut.
Les dépôts sont stockés dans des fichiers .repo
dans le répertoire /etc/yum.repos.d/
et utilisent exactement la même syntaxe que yum
.
Zypper
zypper
est l’outil de gestion de paquets utilisé sous SUSE Linux et OpenSUSE. Ses fonctionnalités sont similaires à celles de apt
et yum
, puisqu’il permet d’installer, de mettre à jour et de supprimer des paquets sur un système, avec une résolution automatique des dépendances.
Mettre à jour l’index des paquets
Tout comme d’autres outils de gestion de paquets, zypper
fonctionne avec des dépôts contenant des paquets et des métadonnées. Ces métadonnées doivent être rafraîchies de temps en temps, afin que le gestionnaire soit au courant des derniers paquets disponibles. Pour effectuer un rafraîchissement, tapez simplement :
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
zypper
dispose d’une fonctionnalité de rafraîchissement automatique qui peut être activée individuellement pour chaque dépôt. Autrement dit, certains dépôts peuvent être rafraîchis automatiquement avant une requête ou l’installation d’un paquet, alors que d’autres devront être rafraîchis manuellement. Vous apprendrez bientôt comment vous servir de cette fonctionnalité.
Rechercher des paquets
Pour rechercher un paquet, utilisez la commande search
(ou se
) suivie du nom du paquet :
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
La commande search
peut également être utilisée pour obtenir une liste de tous les paquets installés sur le système. Pour ce faire, utilisez l’option -i
sans nom de paquet, comme dans zypper se -i
.
Pour voir si un paquet spécifique est installé, ajoutez le nom du paquet à la commande ci-dessus. Par exemple, la requête suivante va rechercher parmi les paquets installés tous ceux qui contiennent “firefox” dans leur nom :
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
Pour rechercher uniquement parmi les paquets non installés, ajoutez l’option -u
à l’opérateur se
.
Installer, mettre à jour et supprimer des paquets
Pour installer un paquet logiciel, utilisez la commande install
(ou in
) suivie du nom du paquet. Comme ceci :
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
zypper
peut également être utilisé pour installer un paquet RPM depuis le disque local tout en essayant de satisfaire ses dépendances avec les paquets en provenance des dépôts. Pour ce faire, il suffit de fournir le chemin complet du paquet au lieu d’un nom de paquet, comme zypper in /home/john/nouveaupaquet.rpm
.
Pour mettre à jour les paquets installés sur le système, utilisez zypper update
. Comme pour le processus d’installation, cette opération va afficher une liste de paquets à installer/mettre à jour avant de vous demander si vous voulez continuer.
Si vous souhaitez seulement afficher la liste des mises à jour disponibles sans rien installer, vous pouvez utiliser zypper list-updates
.
Pour supprimer un paquet, utilisez la commande remove
(ou rm
) suivie du nom du paquet :
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
Gardez à l’esprit que la suppression d’un paquet entraîne la suppression de tous les autres paquets qui en dépendent. Par exemple :
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... The following 6 packages are going to be REMOVED: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
Savoir quel paquet fournit un fichier donné
Pour savoir quel paquet contient un fichier donné, utilisez la commande search
suivie de l’option --provides
et du nom du fichier (ou de son chemin complet). Par exemple, si vous voulez savoir quel paquet contient le fichier libgimpmodule-2.0.so.0
dans /usr/lib64/
vous invoquerez :
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
Obtenir des informations sur les paquets
Pour voir les métadonnées associées à un paquet, utilisez la commande info
suivie du nom du paquet. Cela vous indiquera le dépôt d’origine, le nom du paquet, la version, l’architecture, le fabricant, la taille installée, s’il est installé ou non, le statut (s’il est à jour), le paquet source ainsi qu’une description.
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
Gérer les dépôts de logiciels
zypper
peut également être utilisé pour gérer les dépôts de logiciels. Pour voir une liste de tous les dépôts enregistrés sur votre système, utilisez zypper repos
:
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
Dans la colonne Enabled
, notez que certains dépôts sont activés, alors que d’autres ne le sont pas. Vous pouvez changer cela avec la commande modifyrepo
suivie de l’option -e
(enable) ou -d
(disable) et l’alias du dépôt en question (qui figure dans la deuxième colonne dans l’affichage ci-dessus).
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
Nous avons vu précédemment que zypper
a une fonctionnalité de rafraîchissement automatique qui peut être activée individuellement pour chaque dépôt. Lorsqu’il est activé, ce paramètre va faire en sorte que zypper
déclenche une opération de rafraîchissement (la même que l’exécution de zypper refresh
) avant d’interagir avec le dépôt spécifié. Ceci peut être contrôlé avec les options -f
et -F
de la commande modifyrepo
:
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
Ajouter et supprimer des dépôts
Pour ajouter un nouveau dépôt logiciel pour zypper
, utilisez la commande addrepo
suivie de l’URL et du nom du dépôt, comme ci-dessous :
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
Lorsque vous ajoutez un dépôt, vous pouvez activer le rafraîchissement automatique avec l’option -f
. Les dépôts ajoutés sont activés par défaut, mais vous pouvez ajouter et désactiver un dépôt d’une traite en utilisant l’option -d
.
Pour supprimer un dépôt, utilisez la commande removerepo
, suivie du nom du dépôt (Alias). Pour supprimer le dépôt ajouté dans l’exemple ci-dessus, la commande serait :
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
Exercices guidés
-
En utilisant
rpm
sur un système Red Hat Enterprise Linux, comment installeriez-vous le paquetfile-roller-3.28.1-2.el7.x86_64.rpm
en affichant une barre de progression pendant l’installation ? -
En utilisant
rpm
, trouvez le paquet qui contient le fichier/etc/redhat-release
. -
Comment utiliseriez-vous
yum
pour vérifier les mises à jour concernant tous les paquets du système ? -
En utilisant
zypper
, comment feriez-vous pour désactiver un dépôt appelé repo-extras ? -
Si vous avez un fichier
.repo
qui décrit un nouveau dépôt, où devez-vous le ranger pour qu’il soit reconnu par DNF ?
Exercices d’approfondissement
-
Comment utiliseriez-vous
zypper
pour savoir quel paquet détient le fichier/usr/sbin/swapon
? -
Comment peut-on obtenir une liste de tous les paquets installés sur le système en utilisant
dnf
? -
En utilisant
dnf
, quelle est la commande pour ajouter un dépôt disponible à l’adressehttps://www.example.url/home:reponame.repo
au système ? -
Comment pouvez-vous utiliser
zypper
pour vérifier si le paquetunzip
est installé ? -
En utilisant
yum
, trouvez le paquet qui fournit le fichier/bin/wget
.
Résumé
Dans cette leçon, vous avez appris à :
-
Comment utiliser
rpm
pour installer, mettre à jour et supprimer des paquets. -
Comment utiliser
yum
,zypper
etdnf
. -
Comment obtenir des informations sur un paquet.
-
Comment lister le contenu d’un paquet.
-
Comment savoir de quel paquet provient un fichier.
-
Comment lister, ajouter, supprimer, activer ou désactiver des dépôts de logiciels.
Les commandes suivantes ont été abordées :
-
rpm
-
yum
-
dnf
-
zypper
Réponses aux exercices guidés
-
En utilisant
rpm
sur un système Red Hat Enterprise Linux, comment installeriez-vous le paquetfile-roller-3.28.1-2.el7.x86_64.rpm
en affichant une barre de progression pendant l’installation ?Utilisez l’option
-i
pour installer un paquet et l’option-h
pour activer les signes dièse#
(hash marks) qui montrent la progression de l’installation. La réponse est donc :rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
. -
En utilisant
rpm
, trouvez le paquet qui contient le fichier/etc/redhat-release
.Vous demandez des informations sur un fichier, vous devez donc utiliser l’option
-qf
:rpm -qf /etc/redhat-release
. -
Comment utiliseriez-vous
yum
pour vérifier les mises à jour concernant tous les paquets du système ?Utilisez la commande
check-update
sans nom de paquet :yum check-update
. -
En utilisant
zypper
, comment feriez-vous pour désactiver un dépôt appelé repo-extras ?Utilisez la commande
modifyrepo
pour modifier les paramètres d’un dépôt, et l’option-d
pour le désactiver :zypper modifyrepo -d repo-extras
. -
Si vous avez un fichier
.repo
qui décrit un nouveau dépôt, où devez-vous le ranger pour qu’il soit reconnu par DNF ?Les fichiers
.repo
pour DNF doivent être rangés au même endroit que ceux utilisés par YUM, dans/etc/yum.repos.d/
.
Réponses aux exercices d’approfondissement
-
Comment utiliseriez-vous
zypper
pour savoir quel paquet détient le fichier/usr/sbin/swapon
?Utilisez la commande
se
(search
) et l’option--provides
:zypper se --provides /usr/sbin/swapon
. -
Comment peut-on obtenir une liste de tous les paquets installés sur le système en utilisant
dnf
?Utilisez la commande
list
suivie de l’option--installed
:dnf list --installed
. -
En utilisant
dnf
, quelle est la commande pour ajouter un dépôt disponible à l’adressehttps://www.example.url/home:reponame.repo
au système ?Manipuler les dépôts reviens à gérer la configuration, il faut donc utiliser la commande
config-manager
et l’option--add-repo
:dnf config-manager --add-repo https://www.example.url/home:reponame.repo
. -
Comment pouvez-vous utiliser
zypper
pour vérifier si le paquetunzip
est installé ?Vous devez effectuer une recherche (
se
) sur les paquets installés (-i
) :zypper se -i unzip
. -
En utilisant
yum
, trouvez le paquet qui fournit le fichier/bin/wget
.Pour savoir quel paquet fournit un fichier, utilisez
whatprovides
et le nom du fichier :yum whatprovides /bin/wget
.