Scénario: dans la configuration de système contrôlée par la version et basée sur Puppet, Chef, etc., il est nécessaire de reproduire un certain état du système. Ceci est fait en spécifiant explicitement les versions de package système.
Récemment, nous avons rencontré un problème où certaines versions de paquet manquaient dans les référentiels Debian. Un exemple: le package "patch" était requis dans la version 2.7.5-1 + deb9u1, mais seul 2.7.5-1 + deb9u2 était disponible. Un autre exemple encore plus sévère: "linux-headers-4.9.0-9-common" est requis (en raison de l'installation du noyau associé) et seul "linux-headers-4.9.0-11-common" est disponible.
Cela rend impossible la reproduction d'un certain état d'un système.
Les packages ci-dessus ne sont que des exemples (que j'ai en fait rencontrés). Je suis intéressé à comprendre et à résoudre le problème général.
Quelle est l'idée derrière ces mises à jour, packages "disparus" et versions de packages?
Où puis-je obtenir les versions précédentes (pas vraiment les anciennes versions, mais des versions vieilles de quelques semaines) de paquets Debian? Il devrait être possible d'automatiser le processus d'installation de manière générale.
stable
reste cohérent, au moins jusqu'à la prochaine publication. stable-updates, testing et unstable ne contiennent que la dernière version d'un paquet donné. Pour toute autre chose, vous devrez regarder sur archive.debian.org (ou snapshot.debian.org comme mentionné dans la réponse de SK)linux
nom pkg est une exception: en général, les paquets de Debian stable portent le même nom et changent seulement de numéro de version.linux-image-amd64
ne change jamais de nom et dépend toujours du dernierlinux-image-4.9.0-*
. Le nouveaulinux-image-4.9.0-*
nom pkg marque les modifications ABI du noyau incompatibles requises pour sauvegarder certaines corrections de bugs et permet de gérer la recompilation nécessaire des modules personnalisés (dkms, etc.). De même pourlinux-headers-*
.apt-get changelog packagename
Réponses:
Etre capable de reproduire une configuration spécifique, jusqu’à la version exacte, est votre exigence, pas celle de Debian.
Debian ne prend en charge qu'une seule version de chaque paquet binaire dans une version donnée. La contrepartie est que nous prenons grand soin de veiller à ce que les mises à jour de paquetages dans une version donnée n'introduisent pas de régressions, et lorsque de tels soins ne sont pas possibles, de documenter ce fait. Conserver plusieurs versions d'un paquet donné ne ferait qu'augmenter la charge de support et les exigences de test: par exemple, les responsables de paquet devraient tester les paquets mis à jour par rapport à toutes les versions disponibles des bibliothèques qu'ils utilisent, au lieu des seules versions actuellement prises en charge ... Les packages ne sont mis à jour dans une version stable que lorsque cela est vraiment nécessaire, c'est-à - direpour corriger un bug sérieux (y compris des problèmes de sécurité). Dans le cas du noyau, cela signifie parfois que l’ABI du noyau change et que le nom du paquet change par la suite (pour forcer la reconstruction de paquets dépendants); il y a des méta-paquets que vous pouvez tirer au lieu de coder en dur l'ABI (
linux-image-amd64
,linux-headers-amd64
, etc.).Il existe toutefois une solution de contournement à votre situation: chaque source publiée et chaque package binaire sont archivés sur snapshot.debian.org . Lorsque vous créez une configuration versionnée, vous pouvez sélectionner l'instantané correspondant (par exemple, l'un des instantanés de septembre 2019 ) et l'utiliser comme URL de référentiel:
Si vous finissez par vous en remettre à cela, veuillez utiliser un miroir de mise en cache, par exemple Apt-Cacher NG . Cela réduira non seulement la charge sur le serveur d'instantanés, mais garantira également que vous disposez d'une copie locale de tous les packages dont vous avez besoin.
(La situation en ce qui concerne les paquets source est un peu plus complexe et les archives portent plusieurs versions de certains paquets source dans une version donnée, en raison des dépendances de licence. Mais ce n'est pas pertinent ici. À proprement parler, Debian fournit plusieurs versions de certains binaires dans les versions prises en charge: la version actuelle de la version ponctuelle actuelle, ainsi que les éventuelles mises à jour des référentiels de sécurité et des référentiels de mise à jour, ces derniers étant repliés lors de la prochaine publication ponctuelle. le recours à des instantanés, à condition de le mettre à jour chaque fois qu'une publication ponctuelle est faite.)
la source
apt-cache madison packagename
Elles afficheront toutes les versionsapt
pouvant être visualisées via des référentiels configurés.Ne comptez pas sur des serveurs qui ne sont pas sous votre contrôle pour reproduire un état spécifique du système. Même si les serveurs Debian sont assez fiables, vous ne savez jamais ce qui pourrait arriver dans le futur. Ceci est particulièrement pertinent avec les autres référentiels que vous pourriez utiliser.
Vous devez conserver votre propre miroir pour pouvoir reproduire les états du système. De cette façon, vous pouvez même avoir un état de production pour vos systèmes normaux et plusieurs états de test pour de nouvelles configurations.
L'outil de gestion du référentiel porte bien est capable de créer des miroirs de dépôts. Vous pouvez choisir les packages à mettre en miroir, créer des instantanés du contenu du référentiel à un moment donné et combiner plusieurs miroirs ou instantanés dans un référentiel. De cette façon, vous pouvez avoir une reproduction complète des états du système.
la source
Bien que la réponse de Stephen Kitt soit certainement une solution possible, je pense qu’il serait plus prudent de conserver vos propres copies des paquets nécessaires.
Lorsque vous enregistrez une configuration système, veillez à enregistrer des copies des
.deb
fichiers/var/cache/apt/archives/
. Vous pouvez également utiliserapt-get download
.Lors de la restauration d'une configuration système, vous devez être très strict
apt
pour éviter de déclencher des actions automatiques potentiellement dangereuses.Il sera probablement plus facile d’utiliser
dpkg
directement pour installer exactement ce que vous voulez.la source
/var/cache/apt
.pkgs-20190501
, puis publiez le répertoire de capture sous forme de référentiel. Au moment de la construction, placez l’URL du référentiel versionné (par exemplehttp://debmirror/pkgs-20190501/...
) dans le fichier sources.list, puis lancez apt-get update, apt-get install $ pkgs, etc.