apt changelog : vérifier si une mise à jour corrige une faille

apt list --upgradable affiche une ligne par paquet en attente, et le champ placé après la barre oblique nomme la suite d’origine : quand cette suite est une suite de sécurité, la mise à jour attendue est une mise à jour de sécurité. Le journal du paquet tranche : apt changelog bash=5.2.15-2+deb12u3 télécharge le journal du paquet source et l’ouvre dans le pagineur, où l’entrée de tête décrit les corrections de la version publiée. Les valeurs citées viennent de Debian 12 (bookworm) avec APT 2.6.1 : le fichier Release de l’archive porte la version 12.15 et la date du 11 juillet 2026, celui de bookworm-security la date du 19 septembre 2026.
Sommaire
- apt changelog lit le journal du paquet source, pas la fiche de la faille
- Quatre commandes mènent d’une mise à jour en attente au journal de la version qui arrive
- Le fichier Release de bookworm-security n’annonce aucune URL de journal, et la requête finit en 404
- Cinq lectures du même journal, cinq portées différentes
- apt-listchanges 3.24 rejoue les journaux au moment de la mise à niveau
- La version installée et la version candidate n’ont pas le même journal
apt changelog lit le journal du paquet source, pas la fiche de la faille
Aucune base de vulnérabilités n’est interrogée. La commande récupère le fichier changelog du paquet source, celui que le responsable rédige à chaque publication, et l’affiche avec sensible-pager. La page apt-get(8) de l’APT 2.6.1 livrée avec Debian 12, datée du 25 janvier 2023, écrit que changelog tries to download the changelog of a package and displays it through sensible-pager. Le nom cherché est celui du paquet source, pas celui du paquet binaire installé, et la version visée se choisit avec la même syntaxe que apt install.
L’adresse du fichier ne vient pas de la ligne de commande mais du fichier Release du dépôt, récupéré lors de apt update. Extrait du Release de bookworm publié le 11 juillet 2026 :
Origin: Debian
Label: Debian
Suite: oldstable
Version: 12.15
Codename: bookworm
Changelogs: https://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog
Date: Sat, 11 Jul 2026 10:16:37 UTC
Le paramètre @CHANGEPATH@ est remplacé selon la règle décrite dans apt.conf(5) : le composant (main, contrib, non-free-firmware), la première lettre du nom du paquet source, ses quatre premières lettres quand il commence par lib, le nom du paquet source répété deux fois, puis un souligné et la version. Pour bash 5.2.15-2 sous bookworm, l’adresse produite est https://metadata.ftp-master.debian.org/changelogs/main/b/bash/bash_5.2.15-2_changelog. Une copie locale existe dans /usr/share/doc/paquet/changelog.Debian.gz, mais elle décrit la version installée, jamais celle qui attend dans le dépôt.
Quatre commandes mènent d’une mise à jour en attente au journal de la version qui arrive
-
Rafraîchir les index du dépôt.
sudo apt updateÀ l’écran : une ligne de récupération par dépôt, puis le retour du shell. Une signature invalide apparaîtrait sur une ligne
E:et laisserait l’index précédent en place. -
Lister ce qui attend une installation.
apt list --upgradableÀ l’écran : une ligne par paquet, de la forme
nom/suite version architecture [upgradable from: version installée], et aucune ligne si le système est à jour. La suite de sécurité se reconnaît à son nom, du typebookworm-security, qui correspond à une entrée des dépôts APT ; le fichier Release publié par cette suite sous Debian 12 porteLabel: Debian-Security,Suite: oldstable-securityetCodename: bookworm-security. Une version plus récente venue de la suite principale n’est pas une correction de sécurité. -
Confirmer l’origine de la version candidate.
apt policy bashÀ l’écran : la version installée, la version candidate, puis la table des versions disponibles avec, pour chacune, la priorité, l’adresse du dépôt et le nom de la suite. L’écart entre les deux premières lignes est ce qui rend le journal utile : la candidate contient la correction qui n’est pas encore sur le disque.
-
Lire le journal de la version candidate, en la nommant.
apt changelog bash=5.2.15-2+deb12u3À l’écran : le pagineur s’ouvre sur l’entrée de tête, au format
paquet (version) distribution; urgency=niveau, suivie des puces de correction et des références de bogues ; la toucheqreferme. Sans version précisée, la page apt-get(8) annonce le journal de la version installée, donc nommer la candidate évite toute ambiguïté ; aucun droit particulier n’est nécessaire.
Le fichier Release de bookworm-security n’annonce aucune URL de journal, et la requête finit en 404
L’archive principale déclare le champ Changelogs, l’archive de sécurité non. Le Release de bookworm-security, daté du 19 septembre 2026, porte Origin: Debian, Label: Debian-Security, Suite: oldstable-security, Codename: bookworm-security et Valid-Until: Sat, 26 Sep 2026 07:25:46 UTC, sans ligne Changelogs. Ce manque est suivi sous le numéro 1040529 du système de suivi des bogues Debian, dont le titre a été reformulé le 7 juillet 2023 en « stable-{security,updates} miss Changelogs field in Release file ». apt.conf(5) décrit la conséquence : à défaut de champ dans le Release, l’adresse est cherchée dans les options Acquire::Changelogs::URI::Label::LABEL, puis Acquire::Changelogs::URI::Origin::ORIGINE ; sans ces options, il n’existe aucune adresse à ouvrir.
Quand l’adresse existe mais que le fichier correspondant n’a pas été fabriqué pour la version demandée, la commande échoue sur un 404. Sortie relevée sous Debian sur libreoffice 2:7.4.4-5, le 23 janvier 2023 :
Err:1 https://metadata.ftp-master.debian.org libreoffice 2:7.4.4-5 Changelog
Changelog unavailable for libreoffice=2:7.4.4-5 (404 Not Found [IP: 151.101.122.132 443])
E: Failed to fetch https://metadata.ftp-master.debian.org/changelogs/main/l/libreoffice/libreoffice_2:7.4.4-5_changelog Changelog unavailable for libreoffice=2:7.4.4-5 (404 Not Found [IP: 151.101.122.132 443])
- Cause : le service de journaux fabrique un fichier par version de source publiée dans l’archive, et la version réclamée n’en a pas. Une version absente du pool de l’archive, ou un paquet dont le fichier n’est pas encore généré, produit ce 404, et la sortie ne dit pas pourquoi le fichier manque.
- Remède 1 : lister les fichiers réellement présents dans le répertoire du paquet source, par exemple https://metadata.ftp-master.debian.org/changelogs/main/b/bash/, qui affiche pour chaque fichier un nom, une date de modification et une taille.
- Remède 2 : viser une version existante, relevée avec
apt policy, ou lire le fichier nommé d’après la suite (oldstable_changelog,stable_changelog), qui n’est pas figé sur une version. - Remède 3 : voir l’adresse qui sera tentée avant tout téléchargement, puis décider.
apt-get changelog --print-uris libreoffice=2:7.4.4-5
À l’écran : une ligne qui commence par l’adresse du journal entre apostrophes, suivie du nom du fichier local, et rien n’est téléchargé. Quand la récupération échoue, cette sortie détaillée est le seul diagnostic : la commande ne se replie pas sur le journal local du paquet, ce que le titre initial du bogue 1040529 proposait justement de changer.
Cinq lectures du même journal, cinq portées différentes
| Commande | Version couverte | Accès réseau | Droits | Ce qui s’affiche |
|---|---|---|---|---|
apt changelog paquet |
la version installée, d’après apt-get(8) | oui, vers le service de journaux | aucun | le journal dans sensible-pager |
apt changelog paquet=version |
la version nommée, par exemple la candidate | oui | aucun | le journal dans sensible-pager, plusieurs paquets acceptés |
apt-get changelog --download-only paquet=version |
la version nommée | oui | écriture dans le répertoire courant | un fichier texte, sans pagineur ; option absente de la page apt-get(8) |
zcat /usr/share/doc/paquet/changelog.Debian.gz |
la version installée seulement | non | aucun | le journal local, muet sur les versions non installées |
apt-listchanges |
les versions en cours d’installation | oui, désactivable avec --no-network |
configuration par root, exécution déclenchée par apt | les nouveautés NEWS.Debian par défaut, les journaux avec which=changelogs |
apt-listchanges 3.24 rejoue les journaux au moment de la mise à niveau
Le paquet apt-listchanges s’installe comme greffon d’APT : le fichier /etc/apt/apt.conf.d/20listchanges l’enregistre, et la page apt-listchanges(1) de la version 3.24 livrée avec bookworm précise que l’affichage par défaut se limite aux nouveautés NEWS.Debian. Deux réglages rendent le greffon utile pour une mise à jour de sécurité : which=changelogs, ou which=both, dans la section [apt] de /etc/apt/listchanges.conf. La page de manuel cite aussi /etc/apt/listchanges.conf.d/*.conf, le journal /var/log/apt/listchanges.log et la base /var/lib/apt/listchanges.db.
sudo apt install apt-listchanges
sudo dpkg-reconfigure apt-listchanges
À l’écran : les écrans debconf du paquet, dont le mode d’affichage et les rubriques à afficher ; les réponses sont reportées dans /etc/apt/listchanges.conf. Aux mises à niveau suivantes, décrites dans installer et mettre à jour Debian, les entrées des paquets dont la version change passent avant la confirmation d’apt, et le réglage --save-seen évite de relire deux fois la même version. La gestion courante du système, entre deux mises à niveau, se poursuit avec administration Debian.
La version installée et la version candidate n’ont pas le même journal
Combien de données et de temps coûte la lecture de plusieurs journaux ?
Chaque journal est un fichier texte unique, dont le service Debian affiche la taille : 110 Ko pour bash 5.2.15-2 et 113 Ko pour bash 5.3-4. La commande accepte plusieurs paquets d’un coup, apt changelog bash openssl dpkg, et la récupération se compte en secondes sur une connexion ordinaire. Avec apt-get changelog --download-only, les fichiers restent dans le répertoire courant au lieu de défiler dans le pagineur.
Faut-il écrire apt changelog ou apt-get changelog ?
Les deux formes aboutissent au même code de récupération. Sous Debian 12, la page apt(8) d’APT 2.6.1 ne cite pas la commande changelog, alors que apt-get(8) la documente ; sous Debian 13, la page apt(8) d’APT 3.0.3 la renvoie vers apt-get(8). La même page apt(8) prévient que l’interface d’apt peut changer entre versions et conseille les outils spécialisés pour les scripts, ce qui tranche en faveur de apt-get changelog dans un enchaînement automatisé.
Comment récupérer le journal dans un fichier plutôt que dans le pagineur ?
apt-get changelog --download-only paquet=version écrit le journal dans le répertoire courant et rend la main aussitôt. L’option n’est pas documentée dans la page apt-get(8) ; le code de la commande écrit dans le répertoire courant quand APT::Get::Download-Only est actif. Pour connaître l’adresse avant tout téléchargement, apt-get changelog --print-uris paquet=version affiche l’URL et le nom de fichier attendus.
Que signifie l’erreur Changelog unavailable for un paquet en 404 Not Found ?
Le service de journaux n’a pas de fichier pour la version demandée : il en fabrique un par version de source publiée dans l’archive, et une version absente du pool n’en a pas. Cas relevé sur libreoffice 2:7.4.4-5 le 23 janvier 2023, où la commande s’arrête sur E: Failed to fetch. Vérifier la version avec apt policy, viser une version présente dans le répertoire du paquet source, ou lire le fichier de suite sont les trois issues possibles.
Le fichier local suffit-il après l’installation ?
/usr/share/doc/paquet/changelog.Debian.gz contient le journal de la version installée, sans réseau et sans droits particuliers : pratique pour relire après coup ce qui a été corrigé. Il ne dit rien de la version qui attend, puisque la copie est figée au moment de l’installation du paquet. Quand un paquet ne contient aucun fichier de journal, la page apt-listchanges(1) prévoit que le greffon appelle apt-get changelog pour le télécharger.
Un dépôt interne sans champ Changelogs peut-il fournir des journaux ?
Seulement si l’adresse est déclarée ailleurs. apt.conf(5) prévoit le repli sur Acquire::Changelogs::URI::Label::LABEL et Acquire::Changelogs::URI::Origin::ORIGINE, avec le paramètre @CHANGEPATH@ à recopier tel quel, par exemple dans un fichier /etc/apt/apt.conf.d/99changelog : Acquire::Changelogs::URI::Origin::MonDepot "https://journaux.exemple/@CHANGEPATH@_changelog";. La valeur spéciale no déclare au contraire qu’une source ne fournit aucun journal, et apt en cherche alors une autre.
apt changelog bash=5.2.15-2+deb12u3