> For the complete documentation index, see [llms.txt](https://wiki-tech.fikara.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki-tech.fikara.io/administration-linux/gestion-des-paquets.md).

# Gestion des paquets

Quelques notions  et commandes utiles pour la gestion de paquets Linux

La gestion des paquets est essentielle pour installer, mettre à jour et supprimer des logiciels sur votre système. Différentes distributions Linux utilisent différents systèmes de gestion de paquets. Voici un aperçu des principaux gestionnaires sur lesquels nous nous concentrerons :

{% hint style="success" %}

* **APT** : Utilisé principalement par les distributions basées sur Debian, comme Ubuntu.
* **DNF** : Le gestionnaire de paquets par défaut pour Fedora et d'autres distributions basées sur Red Hat.
* **YUM** : Ancien gestionnaire de paquets pour les distributions Red Hat, souvent remplacé par DNF.
* **RPM** : Un format de paquet utilisé par Red Hat et ses dérivés.
  {% endhint %}

## **Gestion avec APT**&#x20;

* **Mettre à jour la liste des paquets :**

  ```bash
  apt update
  ```
* **Mettre à jour tous les paquets :**

  ```bash
  apt upgrade
  ```
* **Chercher un paquet :**

  ```bash
  apt search [nom_du_paquet]
  ```
* **Lister les paquets installés :**

  ```bash
  apt list --installed
  ```
* **Nettoyer le cache :**

  ```bash
  apt clean
  ```
* **Supprimer les paquets inutilisés :**

  ```bash
  apt autoremove
  ```
* **Supprimer un paquet :**

  ```bash
  apt remove [nom_du_paquet]
  ```
* **Réparer un paquet manquant  (** Cette commande est utile lorsque vous rencontrez des problèmes lors de l'installation de paquets, par exemple, si le téléchargement d'un paquet échoue ) **:**

  ```bash
  apt --fix-missing install
  ```
* **Vérifier la liste des paquets installés :**

  ```bash
  dpkg -l
  ```

## **Gestion avec DNF, YUM et RPM**&#x20;

* **Mettre à jour tous les paquets :**

  ```bash
  dnf upgrade
  ```

  ```bash
  yum upgrade
  ```
* **Chercher un paquet :**

  ```bash
  dnf search [nom_du_paquet]
  ```

  ```bash
  yum search [nom_du_paquet]
  ```
* **Lister les paquets installés :**

  ```bash
  dnf list installed
  ```

  ```bash
  yum list installed
  ```
* **Nettoyer le cache :**

  ```sh
  dnf clean all
  ```

  ```bash
  yum clean all
  ```
* **Supprimer les paquets inutilisés :**

  ```bash
  dnf autoremove
  ```

  ```bash
  yum autoremove
  ```
* **Supprimer un paquet :**

  ```bash
  dnf remove [nom_du_paquet]
  ```

  ```bash
  yum remove [nom_du_paquet]
  ```
* **Installer un paquet .rpm :**

  ```bash
  rpm -ivh [paquet.rpm]
  ```
* **Lister tous les paquets installés sur les système RHEL ( RedHat ) :**

  ```bash
  rpm -qa
  ```

## Mises à jour des sources de paquets : APT et YUM <a href="#mises-a-jour-sources-apt-yum" id="mises-a-jour-sources-apt-yum"></a>

Les gestionnaires de paquets APT (pour Debian et ses dérivés) et YUM (pour Red Hat et ses dérivés) sont essentiels pour l'installation, la mise à jour et la gestion des logiciels sur ces systèmes d'exploitation. Ils reposent sur des fichiers de configuration qui définissent les sources de paquets, c'est-à-dire les emplacements où le gestionnaire de paquets peut trouver et télécharger des logiciels.

{% hint style="warning" %}
Site pour sources de dépots :

* Recherche de dépôts et configuration de `sources.list` <https://wiki.debian.org/SourcesList> et <https://debgen.xyz/>  ( sources Debian )
* Pour rechercher des paquets et leurs dépôts associés :<https://manpages.ubuntu.com/manpages/xenial/man5/sources.list.5.html> ( ubuntu manpages )
  {% endhint %}

### **Mise à jour des sources APT**

Les sources de paquets pour APT sont spécifiées dans le fichier `/etc/apt/sources.list` et dans des fichiers situés dans le répertoire `/etc/apt/sources.list.d/`.

* **Fichier `/etc/apt/sources.list` :**
  * Ce fichier principal contient la liste des dépôts par défaut et les miroirs associés. Il est généralement préconfiguré lors de l'installation de la distribution.
  * Chaque ligne de ce fichier représente une source de paquet, qui peut pointer vers un dépôt officiel, un dépôt tiers ou un miroir.
  * Les lignes définissent le type de dépôt (par exemple, `deb` pour les paquets binaires ou `deb-src` pour les paquets source), ainsi que la distribution et la section (comme `main`, `universe`, etc.).
* **Répertoire `/etc/apt/sources.list.d/` :**
  * Ce répertoire peut contenir plusieurs fichiers, chacun spécifiant des sources de paquets additionnelles. C'est une méthode plus modulaire pour gérer les sources, permettant de séparer les dépôts de manière organisée.
  * Les fichiers à l'intérieur de ce répertoire sont souvent utilisés pour des dépôts tiers ou des logiciels spécifiques, facilitant l'ajout et la suppression de sources sans modifier le fichier principal `sources.list`.
  * Chaque fichier doit suivre le même format que celui utilisé dans `sources.list`, ce qui permet une gestion cohérente des sources.

**Exemple de source pour Debian Bullseye**

Pour un système Debian 11 (Bullseye), un exemple typique du fichier `/etc/apt/sources.list` pourrait ressembler à ceci :

```bash
# Dépôts officiels Debian 11 (Bullseye)
deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free

# Mise à jour de sécurité
deb http://deb.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://deb.debian.org/debian-security bullseye-security main contrib non-free

# Dépôts de mise à jour
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
```

Dans cet exemple :

* `deb` : Indique un dépôt de paquets binaires.
* `deb-src` : Indique un dépôt de paquets source.
* `http://deb.debian.org/debian/` : L'URL du dépôt où les paquets sont stockés.
* `bullseye` : La version de Debian (11).
* `main contrib non-free` : Les sections du dépôt, indiquant les types de logiciels inclus.

**Mettre à jour les sources APT**

Après avoir modifié les fichiers de source, utilisez la commande suivante pour mettre à jour la liste des paquets :

```bash
sudo apt update
```

Cette commande télécharge les informations les plus récentes sur les paquets disponibles, garantissant que votre système a accès aux dernières versions et mises à jour de sécurité.

### **Mise à jour des sources YUM**

{% hint style="warning" %}
Site pour sources de dépots :

* Fournisseur de dépôts supplémentaires pour Fedora et Red Hat : <https://rpmfusion.org/> ( RPM )
* Pour explorer les paquets et les sources : <https://src.fedoraproject.org/>&#x20;
  {% endhint %}

Pour les systèmes basés sur Red Hat, les sources de paquets sont spécifiées dans des fichiers de type `*.repo` situés dans le répertoire `/etc/yum.repos.d/`. Comme pour APT, ces fichiers définissent où YUM doit chercher les paquets.&#x20;

Les sources pour YUM sont tout aussi essentielles, car elles déterminent les versions des logiciels que vous pouvez installer. Si un dépôt est obsolète ou incorrect, vous ne pourrez pas accéder aux mises à jour nécessaires.

Le répertoire `/etc/yum.repos.d/` est un emplacement crucial pour la gestion des dépôts de paquets dans les systèmes basés sur Red Hat, tels que CentOS, Fedora et RHEL (Red Hat Enterprise Linux). Ce répertoire contient des fichiers de configuration avec l'extension `.repo`, qui définissent les dépôts que YUM (Yellowdog Updater Modified) utilise pour rechercher et installer des logiciels.

**Structure des Fichiers `.repo`**

Chaque fichier `.repo` dans `/etc/yum.repos.d/` peut contenir plusieurs sections, chacune définissant un dépôt de paquets différent. Voici les éléments typiques que l'on peut retrouver dans un fichier `.repo` ( vous pouvez en retrouvez d'autres )

* **\[nom\_du\_dépôt]** : C'est un identifiant unique pour le dépôt. Il est utilisé par YUM pour référencer ce dépôt.
* **name=description** : Une description du dépôt, qui peut être utile pour identifier rapidement son contenu.
* **baseurl=URL** : L'URL de base où YUM peut trouver les paquets. C'est l'endroit où YUM va chercher les fichiers RPM. Par exemple, cela peut pointer vers un serveur FTP ou HTTP où les paquets sont hébergés.
* **enabled=1** : Cette option indique si le dépôt est activé (`1`) ou désactivé (`0`). Si un dépôt est désactivé, YUM ne l'inclura pas lors de la recherche de mises à jour ou d'installations de paquets.
* **gpgcheck=1** : Cette option active la vérification des signatures GPG des paquets téléchargés. Cela permet de s'assurer que les paquets proviennent d'une source fiable et qu'ils n'ont pas été altérés.

**Importance des Fichiers de Dépôt**

Les fichiers de dépôt dans `/etc/yum.repos.d/` sont essentiels pour plusieurs raisons :

1. **Gestion des Versions** : Ils définissent les versions des paquets que vous pouvez installer et mettre à jour. Cela permet de maintenir votre système à jour avec les dernières versions logicielles.
2. **Sécurité** : En utilisant `gpgcheck`, vous pouvez vérifier l'intégrité des paquets et vous assurer qu'ils n'ont pas été compromis.
3. **Flexibilité** : Vous pouvez ajouter, modifier ou supprimer des fichiers de dépôt facilement, ce qui permet de gérer rapidement les sources de logiciels.
4. **Accès à des Logiciels Variés** : Les fichiers `.repo` permettent d'accéder à une grande variété de logiciels, allant des paquets officiels de la distribution aux dépôts tiers, en passant par des dépôts spécialisés.

**Exemples de Fichiers `.repo`**

Voici un exemple d'un fichier `monrepo.repo` que vous pourriez trouver dans `/etc/yum.repos.d/` :

```makefile
[monrepo]
name=Mon dépôt
baseurl=http://repo.example.com/centos/7/x86_64/
enabled=1
gpgcheck=1
```

Dans cet exemple :

* **\[monrepo]** : Identifiant unique du dépôt.
* **name=Mon dépôt** : Description du dépôt.
* **baseurl** : URL où se trouvent les paquets.
* **enabled** : Le dépôt est actif.
* **gpgcheck** : Vérification des signatures activée pour assurer la sécurité.

Autre exemple de repos dans un centos&#x20;

<figure><img src="https://2235951167-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqXheLLg8O1zDqqPLS2Nd%2Fuploads%2FZ1xvZ20zybtQx45fKcGE%2FCapture%20d'%C3%A9cran%202024-10-25%20174717.png?alt=media&amp;token=cc3da277-4409-4ab6-baf3-20c188a9fdb9" alt=""><figcaption></figcaption></figure>

### Erreurs qui pourraient vous pousser à revoir ou modifier vos sources

#### **1. Dépôt obsolète**

* **Erreur typique** : `The repository 'http://deb.debian.org/debian <distribution> Release' does not have a Release file.`
* **Ce que cela signifie** : Le dépôt que vous utilisez est obsolète ou n'est plus maintenu.
* **Action recommandée** : Remplacez l'ancienne version de la distribution (par exemple, `stretch`, `buster`) par une version plus récente (par exemple, `bullseye`).

#### **2. Problèmes de mise à jour de sécurité**

* **Erreur typique** : `Failed to fetch http://deb.debian.org/debian-security/...`
* **Ce que cela signifie** : Les mises à jour de sécurité ne peuvent pas être récupérées.
* **Action recommandée** : Vérifiez si le dépôt de sécurité est correctement configuré dans votre `sources.list`. Ajoutez-le si nécessaire.
