CyberSDF

Reprenez la main sur votre numérique

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

une machine de bureau ouverte posee sur un etabli, cables ranges, tournevis pose a plat

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
  1. apt changelog lit le journal du paquet source, pas la fiche de la faille
  2. Quatre commandes mènent d’une mise à jour en attente au journal de la version qui arrive
  3. Le fichier Release de bookworm-security n’annonce aucune URL de journal, et la requête finit en 404
  4. Cinq lectures du même journal, cinq portées différentes
  5. apt-listchanges 3.24 rejoue les journaux au moment de la mise à niveau
  6. 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

  1. 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.

  2. 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 type bookworm-security, qui correspond à une entrée des dépôts APT ; le fichier Release publié par cette suite sous Debian 12 porte Label: Debian-Security, Suite: oldstable-security et Codename: bookworm-security. Une version plus récente venue de la suite principale n’est pas une correction de sécurité.

  3. 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.

  4. 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 touche q referme. 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])
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