Je gère un certain nombre de serveurs Debian et je suis généralement le dépôt stable de Debian, mais j'installe occasionnellement à partir du dépôt de test de Debian ou de sources tierces. À des fins d'audit, sur chaque machine, pour tous les paquets actuellement installés, je voudrais comparer la version du paquet installé avec la version du paquet dans un dépôt particulier, c'est-à-dire le dépôt stable de Debian.
En utilisant les modèles de recherche d'aptitude, je peux identifier les paquets installés qui sont ou ne sont pas disponibles dans le dépôt stable de Debian :
aptitude search "?installed?origin(Debian)?archive(stable)"
aptitude search "?installed?not(?origin(Debian)?archive(stable))"
Mais pour les paquets disponibles dans le dépôt stable de Debian, je ne suis pas en mesure de déterminer si la version installée correspond à la version du dépôt.
Je suppose qu'il serait possible d'utiliser l'épinglage apt pour forcer une mise à niveau :
Package: *
Pin: release n=stable, o=Debian
Pin-Priority: 1001
Et ensuite utiliser le mode de fonctionnement à sec pour vérifier quels paquets seraient affectés :
apt-get update
apt-get --dry-run upgrade
Mais pour atténuer les risques liés à l'utilisation de l'épinglage d'apt sur 1000, il faudrait une configuration distincte pour apt, ce qui semble plus compliqué que nécessaire.
Une possibilité pour l'avenir serait de mettre en place un dépôt privé, et de n'installer qu'à partir du dépôt stable de Debian ou du dépôt privé. Ainsi, si un paquet était disponible dans le dépôt privé, on pourrait supposer (à des fins d'audit) qu'il n'a pas été installé à partir du dépôt stable de Debian. Tant que les paquets ne sont jamais installés manuellement, cela pourrait fonctionner raisonnablement bien. Mais mettre en place un dépôt privé semble un peu exagéré pour ce qui pourrait être une simple commande.
Existe-t-il un meilleur moyen de vérifier les versions des paquets ? Ou mieux encore, d'auditer les signatures de paquets ?