📄 contenu.md 🔒 7af559c7…0f6561fc Se connecter pour télécharger ← Retour
# 11. Gestion de paquets

Cette section couvre les deux grandes familles de gestion de paquets
Linux, la résolution de dépendances, et les approches plus récentes qui
cherchent à s'en affranchir partiellement.

## Les deux familles historiques

- **dpkg/apt** (Debian et dérivés) : `dpkg` installe/retire un paquet
  `.deb` individuel sans résoudre ses dépendances ; `apt` (couche
  supérieure) interroge un ou plusieurs **dépôts** distants, résout
  l'arbre de dépendances complet, télécharge et invoque `dpkg` dans le bon
  ordre.
- **rpm/dnf** (Fedora, RHEL et dérivés) : même séparation de
  responsabilités — `rpm` opère sur un paquet unique, `dnf` (successeur de
  `yum`) gère les dépôts et la résolution de dépendances.

## Anatomie d'un paquet

Un paquet binaire embarque généralement : les fichiers à installer, des
métadonnées (nom, version, dépendances déclarées, checksums), et des
**scripts de maintenance** exécutés à des étapes précises du cycle de vie
(avant/après installation, avant/après suppression) — par exemple pour
créer un utilisateur système dédié ou enregistrer un service auprès de
systemd. Ces scripts s'exécutent avec les privilèges de l'installation
elle-même (généralement root) : la confiance accordée à un dépôt de
paquets est donc une confiance d'exécution de code arbitraire, pas
seulement de fichiers statiques — d'où l'importance des signatures
cryptographiques de dépôt vérifiées avant toute installation.

## Résolution de dépendances

Un paquet déclare les versions de ses dépendances qu'il requiert (parfois
avec des bornes : `>= 2.0`, `< 3.0`). Le gestionnaire doit trouver un
ensemble de versions **mutuellement compatibles** pour tous les paquets
concernés — un problème de satisfaction de contraintes NP-difficile en
théorie, résolu en pratique par des heuristiques efficaces sur les tailles
de dépôts réels. Un conflit de versions irrésolvable entre deux paquets
demandés (ex. deux paquets exigeant chacun une version incompatible d'une
même dépendance commune) est signalé plutôt que résolu silencieusement par
un choix arbitraire.

## Dépôts et confiance

Chaque dépôt publie un index signé cryptographiquement (clé publique du
mainteneur du dépôt, importée une fois et vérifiée ensuite à chaque mise à
jour de l'index) — sans cette signature, un serveur de dépôt compromis ou
un homme du milieu pourrait distribuer un paquet malveillant sous un nom
légitime. `apt-key`/`dnf`+GPG vérifient cette chaîne de confiance avant
d'autoriser toute installation depuis un dépôt donné.

## Approches plus récentes

- **Paquets universels** (Flatpak, Snap, AppImage selon la distribution) :
  embarquent leurs propres dépendances, isolés du reste du système via les
  mêmes primitives que les conteneurs (section 7) — résout les conflits de
  version au prix d'une duplication de bibliothèques sur disque.
- **Gestionnaires immuables/déclaratifs** : décrivent l'état complet du
  système souhaité dans un fichier de configuration versionné, appliqué
  de façon atomique (bascule complète ou aucune modification), permettant
  un retour en arrière instantané vers l'état précédent en cas de
  problème après une mise à jour.

*(Schéma disponible : `schema.svg`, dans ce dossier.)*
3.2 Ko BLAKE3 : 7af559c7…0f6561fc