Guide des technologies

Introduction à l'apt-pinning

5 min read Administration système Mis à jour 22 Oct 2025
Guide pratique : apt-pinning sur Debian
Guide pratique : apt-pinning sur Debian

Apt-pinning permet d’utiliser simultanément plusieurs suites (stable, testing, unstable) sur Debian et dérivés, et de contrôler quelle version d’un paquet proviendra de quelle suite. Suivez une méthodologie simple : ajouter les dépôts nécessaires, définir les priorités dans /etc/apt/preferences (ou via /etc/apt/preferences.d/), puis tester avec apt-cache policy avant d’installer.

Version 1.0
Auteur : Falko Timme

Un bref aperçu de l’apt-pinning

Cet article est un aperçu court de l’utilisation de l’apt-pinning sur Debian et distributions basées sur Debian (comme Ubuntu). L’apt-pinning vous permet d’utiliser plusieurs versions de distribution (par exemple stable, testing et unstable) sur le même système et de préciser pour chaque paquet de quelle distribution il doit être installé. Ainsi, vous pouvez exécuter un système principalement basé sur la branche stable, tout en installant certains paquets plus récents depuis testing, unstable ou des dépôts tiers.

Important : je ne garantis pas que cela fonctionnera parfaitement dans votre environnement.

1 Note préliminaire

J’utilise ici un système Debian Lenny (stable). J’explique l’apt-pinning à partir de l’exemple du paquet phpmyadmin qui, au moment de la rédaction, est disponible en trois versions différentes dans les dépôts stable, testing et unstable — voir http://packages.debian.org/search?keywords=phpmyadmin&searchon=names&suite=all§ion=all :

  • lenny (stable) : version 4:2.11.8.1-5
  • squeeze (testing) : version 4:3.1.2-2
  • sid (unstable) : version 4:3.1.3-1

2 Mon sources.list

J’ajoute les dépôts testing et unstable à mon /etc/apt/sources.list pour qu’il ressemble à ce qui suit :

vi /etc/apt/sources.list

| deb http://volatile.debian.org/debian-volatile lenny/volatile main deb-src http://volatile.debian.org/debian-volatile lenny/volatile main ## Lenny / Stable deb http://ftp2.de.debian.org/debian/ lenny main deb-src http://ftp2.de.debian.org/debian/ lenny main deb http://security.debian.org/ lenny/updates main deb-src http://security.debian.org/ lenny/updates main ## Squeeze / Testing deb http://ftp2.de.debian.org/debian/ squeeze main deb-src http://ftp2.de.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main ## Sid / Unstable deb http://ftp2.de.debian.org/debian/ sid main deb-src http://ftp2.de.debian.org/debian/ sid main |

Ouvrez /etc/apt/apt.conf :

vi /etc/apt/apt.conf

… et insérez la ligne suivante :

| APT::Cache-Limit "100000000"; |

(Remarque : sinon vous pourriez obtenir une erreur comme celle-ci lors d’un apt-get update :

E: Dynamic MMap ran out of room

)

Ensuite, exécutez :

apt-get update

pour mettre à jour la base de paquets.

Avec la configuration par défaut, apt tenterait toujours d’installer la version la plus récente d’un paquet — qui provient généralement d’un dépôt unstable ou testing — ce qui peut rendre le système instable. Avec l’apt-pinning, on définit des priorités afin qu’un paquet soit installé depuis unstable ou testing seulement si aucune version depuis stable n’est disponible.

Nous pouvons vérifier les priorités apt ainsi :

apt-cache policy
server1:~# apt-cache policy  
 Package files:  
  100 /var/lib/dpkg/status  
      release a=now  
  500 http://volatile.debian.org lenny/volatile/main Packages  
      release o=volatile.debian.org,a=stable,l=debian-volatile,c=main  
      origin volatile.debian.org  
  500 http://ftp2.de.debian.org sid/main Packages  
      release o=Debian,a=unstable,l=Debian,c=main  
      origin ftp2.de.debian.org  
  500 http://security.debian.org squeeze/updates/main Packages  
      release v=None,o=Debian,a=testing,l=Debian-Security,c=main  
      origin security.debian.org  
  500 http://ftp2.de.debian.org squeeze/main Packages  
      release o=Debian,a=testing,l=Debian,c=main  
      origin ftp2.de.debian.org  
  500 http://security.debian.org lenny/updates/main Packages  
      release v=5.0,o=Debian,a=stable,l=Debian-Security,c=main  
      origin security.debian.org  
  500 http://ftp2.de.debian.org lenny/main Packages  
      release v=5.0,o=Debian,a=stable,l=Debian,c=main  
      origin ftp2.de.debian.org  
 Pinned packages:  
 server1:~#

Comme vous le voyez, stable, testing et unstable ont la même priorité (500) ; cela signifie que la version la plus récente d’un paquet serait installée. Dans le cas de notre paquet phpmyadmin, il s’agit de la version 4:3.1.3-1 provenant d’unstable :

apt-cache policy phpmyadmin

La ligne Candidate montre la version qui serait installée :

server1:~# apt-cache policy phpmyadmin  
 phpmyadmin:  
   Installed: (none)  
   Candidate: 4:3.1.3-1  
   Version table:  
    4:3.1.3-1 0  
       500 http://ftp2.de.debian.org sid/main Packages  
    4:3.1.2-2 0  
       500 http://ftp2.de.debian.org squeeze/main Packages  
    4:2.11.8.1-5 0  
       500 http://ftp2.de.debian.org lenny/main Packages  
 server1:~#

Voici comment les priorités sont définies (voir aussi :

man 5 apt_preferences

) :

  • P > 1000
    provoque l’installation d’une version même si cela constitue un rétrogradage du paquet

  • 990 < P <= 1000
    provoque l’installation d’une version même si elle ne provient pas de la release cible, sauf si la version installée est plus récente

  • 500 < P <= 990
    provoque l’installation d’une version à moins qu’il n’y ait une version appartenant à la release cible ou que la version installée soit plus récente

  • 100 < P <= 500
    provoque l’installation d’une version à moins qu’il n’y ait une version disponible appartenant à une autre distribution ou que la version installée soit plus récente

  • 0 < P <= 100
    provoque l’installation d’une version seulement s’il n’existe aucune version installée du paquet

  • P < 0
    empêche l’installation de la version

Méthodologie recommandée (mini-méthode)

  1. Sauvegarder /etc/apt/sources.list et /etc/apt/sources.list.d/*
  2. Ajouter les dépôts souhaités dans sources.list (testing/unstable) sans activer la mise à niveau automatique
  3. Définir une taille de cache suffisante dans /etc/apt/apt.conf
  4. Définir des priorités dans /etc/apt/preferences ou /etc/apt/preferences.d/ (pinning par paquet si besoin)
  5. Exécuter apt-get update puis apt-cache policy pour vérifier la candidate
  6. Installer avec prudence, tester dans un environnement non productif

Important : testez toujours sur une machine non critique avant de déployer en production.

Exemple de checklist par rôle

  • Administrateur système : vérifier sauvegardes, modifier preferences.d, exécuter apt-get update, vérifier politiques apt-cache
  • Développeur : valider que la version ciblée compile/semble fonctionner avec l’environnement applicatif
  • Responsable sécurité : vérifier les dépôts tiers et politiques de signature

Approches alternatives

  • Utiliser les backports officiels lorsque disponibles (plus sûr que tester/unstable).
  • Installer un paquet spécifique depuis une autre release avec apt-get install -t testing (moins persistant que pinning global).
  • Construire un paquet local (.deb) à partir des sources pour garantir compatibilité.

Quand l’apt-pinning peut échouer (contre-exemples)

  • Dépendances croisées complexes : un paquet plus récent peut exiger des versions de bibliothèques indisponibles sur stable.
  • Mises à jour de sécurité non appliquées si vous retenez trop de versions.
  • Paquets tiers non signés ou incompatibles provoquant des conflits.

Fact box — points clés

  • But : contrôler la source des paquets entre plusieurs suites.
  • Fichier principal : /etc/apt/preferences ou /etc/apt/preferences.d/*.
  • Commandes utiles : apt-get update, apt-cache policy, apt-get install -t .

Glossaire (une ligne)

  • apt-pinning : mécanisme pour définir des priorités (pins) afin de choisir quelle version d’un paquet installer.
  • sources.list : fichier listant les dépôts APT.
  • Candidate : version qu’APT considère pour installation.

Remarques de sécurité et bonnes pratiques

  • Préférez des pins par paquet plutôt qu’un pin global pour testing/unstable.
  • Documentez toute exception (quelle version, pourquoi, date).
  • Surveillez les mises à jour de sécurité pour les paquets retenus.

Résumé

L’apt-pinning est un outil puissant pour mélanger des paquets issus de plusieurs suites dans Debian. Employé avec une méthodologie claire, il permet d’obtenir des paquets plus récents sans basculer entièrement vers une distribution instable. Testez, documentez et limitez les pins au strict nécessaire.

Important : adaptez ces instructions à votre version de Debian/Ubuntu et à vos contraintes opérationnelles.

Auteur
Édition

Matériaux similaires

Installer et utiliser Podman sur Debian 11
Conteneurs

Installer et utiliser Podman sur Debian 11

Guide pratique : apt-pinning sur Debian
Administration système

Guide pratique : apt-pinning sur Debian

OptiScaler : activer FSR 4 dans n'importe quel jeu
Jeux PC

OptiScaler : activer FSR 4 dans n'importe quel jeu

Dansguardian + Squid NTLM sur Debian Etch
réseau

Dansguardian + Squid NTLM sur Debian Etch

Corriger l'erreur d'installation Android sur SD
Android, Dépannage

Corriger l'erreur d'installation Android sur SD

KNetAttach et remote:/ — Dossiers réseau KDE
Tutoriel

KNetAttach et remote:/ — Dossiers réseau KDE