Existe-t-il un outil ou même une distribution entière qui prend en charge la restauration des packages modifiés après une mise à jour?
À titre d'exemple: j'ai mis à niveau les packages A, B et C. Après avoir travaillé avec ces packages pendant plusieurs jours, je rencontre un bogue dans B qui brise la donne.
Pendant que je soumettais un rapport de bogue, je devrais également rétrograder B vers la version précédente afin de pouvoir terminer ce que j'allais faire. Pendant ce temps, A dépend de B, il devrait donc être rétrogradé également, mais C est indépendant des deux, il pourrait donc rester à sa version actuelle.
Existe-t-il un outil ou une distribution qui prend en charge cela?
Je sais que la plupart des distributions ont un moyen de rétrograder un paquet mais c'est généralement un peu sommaire ou même pas possible parce que le paquet précédent a été supprimé des référentiels et dans certains cas (par exemple après la mise à niveau du serveur X et de Mesa) ça devient vraiment .. . désordonné.
la source
Réponses:
NixOS prend en charge les annulations de mise à niveau, bien que si je comprends bien, cela ne va pas aussi loin que vous le souhaitez: si vous mettez à niveau A, B et C en une seule opération, vous pouvez annuler cette opération en entier, mais pas seulement A et B. (Vous devriez pouvoir annuler A, B et C, puis mettre à niveau C ...) Cela a du sens d'un point de vue transactionnel.
Debian (en combinaison avec l'archive d'instantanés si vous n'avez plus les anciens paquets) vous permettra de rétrograder B, et des outils comme
apt
ouaptitude
dans de nombreux cas détermineront que A doit également être rétrogradé (une fois que vous les avez convaincus que vous ne veulent pas simplement mettre à niveau B). Mais comme vous le dites, cela a tendance à être un peu compliqué, et les rétrogradations de paquets ne sont de toute façon pas prises en charge dans Debian (ce qui signifie que la plupart du temps elles fonctionnent, mais si elles se cassent, ce n'est pas un bogue).la source
nix-env
, au lieu de cela vous spécifiez des choses dansconfiguration.nix
puis exécuteznixos-rebuild switch
. Cela a l'avantage que toute la configuration de votre système est en un seul endroit, et il est facile de sauvegarder la configuration complète de votre système (il suffit de sauvegarder leconfiguration.nix
fichier).Sur toute
yum
distribution basée (par exemple Red Hat EL , CentOS , etc.), vous pouvez:examiner l'historique des modifications apportées au système à l'aide
sudo yum history list
vérifier les détails, en utilisant
sudo yum history info 10
sudo yum history rollback 9
Attention
Il y a quelques mises en garde évidentes:
Dans mon exemple, cela
<
dans la ligne avec ID4
(dans la dernière colonne), signifie que je ne peux pas revenir en arrière au-delà de ce point.la source
--enablerepo
indicateur pour activer un ancien référentiel autrement désaffecté pour la rétrogradation.yum
simplement soin de garder la liste des packages et des versions installés et vérifie les dépendances lors de la réinstallation des anciennes versions. De toute évidence, vous pouvez le faire à la main .Sur OpenSUSE, vous pouvez facilement utiliser Snapper avec le système de fichiers Btrfs .
Si vous utilisez la configuration standard du système de fichiers pendant l'installation, elle est activée par défaut .
Une fois Snapper activé, il est entièrement intégré à
yast2
etzypper
. Il créera un instantané du système de fichiers chaque fois que vous installez ou mettez à niveau quelque chose (ou créez un utilisateur, etc.).Pour ramener le système à une condition précédente, il vous suffit d'exécuter
yast2 snapper
.la source
/var
, il doit donc être annulé,/
même s'il s'agit d'un fs ou d'un sous-volume distinct. Il est de loin préférable de tester soigneusement une mise à niveau avant de l'appliquer aux serveurs de production que de s'appuyer sur des fonctionnalités telles que la restauration de la mise à niveau du système d'exploitation (ce qui est très facile à faire de manière semi-arsée mais est un problème extrêmement difficile à résoudre correctement )./home
trouve dans un système de fichiers distinct sans snapshot .AIX est très bon pour annuler les mises à jour. Eh bien - nous sommes sur le site Unix / Linux et vous n'avez jamais spécifié que vous vouliez Linux :)
Chaque mise à jour AIX enregistre tous les fichiers modifiés dans un sous-répertoire distinct à l'intérieur du système de fichiers / var. La mise à jour peut être annulée avec une simple commande native, et le retour n'a pas besoin que le réseau soit actif, il n'a besoin d'aucun support / package, il ne réinstalle rien et ne dépend d'aucun technologie d'instantané - l'effet est simplement que les fichiers réapparaissent tels qu'ils étaient avant la mise à jour.
En prime, il existe une commande native triviale
mksysb
pour créer une sauvegarde système autonome amorçable. Le fichier qui peut être simplement démarré sur un système complètement dysfonctionnel qui ne démarre pas en raison d'un dysfonctionnement / d'une corruption.Et c'est une technologie éprouvée avec des décennies d'histoire :)
la source
Dans Fedora (et je suis sûr que dans d'autres distributions aussi), vous pouvez demander à revenir à une version précédente:
vous obtient l'avant-dernière version des packages, et vous pouvez en demander une spécifique en:
Cela ne fonctionne que si le ou les packages sont toujours disponibles dans les référentiels. La fonctionnalité n'est pas du tout inconnue. Il a ses inconvénients, si une partie de la mise à niveau consistait à modifier les configurations, le retour en arrière ne sera pas nécessairement à la version antérieure exacte.
la source
This only works if the package(s) are still available in the repositories.
yup, c'est exactement le problème. Je suis un peu surpris qu'il ne semble pas y avoir de solution «plus large» pour cela, en particulier avec le nombre de distributions à diffusion continue. À l'heure actuelle, il semble que NixOS soit ma meilleure option, ou j'aurais besoin d'une sorte d'outil de création d'image système qui ne fonctionne que sur les différences et peut restaurer le système à un moment précis au cours des 20 dernières mises à jour.Arch Linux prend également en charge la mise à niveau des packages et du noyau. Vous pouvez également installer les outils
downgrader
etdowngrade
pour automatiser le processus. La solution btrfs fonctionne également, je l'ai déjà utilisée pour faire une restauration manuelle.Comment je fais reculer mon système:
Un des avantages de btrfs est que vous pouvez utiliser des sous-volumes et des "partitions" dynamiques. Par exemple, j'ai un sous-volume pour / (appelé @), / tmp (@tmp) et / home (@home). Il est ensuite facile de sauvegarder et de restaurer n'importe lequel de ces éléments. J'ai / tmp dans un sous-volume séparé car le sauvegarder avec le reste du système semble inutile, car il est effacé à presque chaque redémarrage.
la source
J'utilise Arch Linux et il stocke tous les packages téléchargés sur
/var/cache/pacman/pkg/
afin que vous puissiez rétrograder n'importe quel package à tout moment (vous ne pouvez pas démarrer, utilisez une clé USB en direct). De Arch Wiki :Pour empêcher la mise à niveau du package, incluez le nom du package dans
/etc/pacman.conf
, par exemple:Pour économiser de l'espace, vous pouvez effacer le dossier de cache avec:
Ce qui supprimera tous les anciens paquets et conservera le plus récent, ou utilisera
-Scc
pour tout supprimer.la source