Existe-t-il un moyen, avant de commencer un aptitude upgrade
ou apt-get upgrade
, de configurer quelque chose de manière à pouvoir restaurer facilement votre système à l'état "apt" qu'il était avant la mise à niveau proprement dite, en cas de problème?
C’est-à-dire, par exemple, réinstallez l’ancienne version des packages mis à niveau au cours du processus.
(EDIT) Quelques astuces : Je sais que, etckeeper
par exemple, utilise un système d’accroché apt
pour qu’il soit averti chaque fois qu’il apt
installe ou désinstalle un paquet. Je suppose qu’il pourrait exister une sorte de script permettant de sauvegarder la liste des paquetages nouvellement installés et leur numéro de version précédent afin de pouvoir les réinstaller à partir du apt
cache ( /var/cache/apt/archives
). Il y a aussi checkinstall
qui peut garder une trace des modifications de fichiers ...
Des détails sur comment y parvenir correctement?
Réponses:
Je venais juste de trouver une réponse à cette question, car le dernier
apt-get upgrade
sur un serveur Debian ne permettait pas de démarrer le noyau le plus récent au-delà d’une busybox, sans monter la partition racine zfs. Au moins un noyau plus ancien pouvait toujours démarrer, mais était incompatible avec d'autres logiciels. D'où la nécessité d'un retour en arrière.La réponse courte - vous pouvez utiliser la commande suivante:
s'il fait ce que vous voulez, supprimez-le
-s
et exécutez-le à nouveau. Voici les étapes que j'ai prises pour que cela fonctionne correctement:J'ai temporairement coupé mon
/var/log/dpkg.log
pour laisser juste la mise à jour d'aujourd'huiJ'ai installé le script minuscule
apt-history
d' ici dans~/.bashrc
et couruCeci fournit une liste joliment formatée de paquets versionnés à restaurer en l’alimentant
apt-get install
. Coupez cette liste au besoin dans un éditeur de texte, puis exécutez-la (avec d'abord-s
pour un essai à sec):Apt avertira des dégradations attendues. Pour éviter que cette restauration ne soit écrasée lors de la prochaine mise à niveau, les packages devront être épinglés jusqu'à la résolution du problème d'origine. Par exemple avec:
apt-mark hold zfsutils libzfs2 ...
la source
apt-history rollback
commande peut être remplacée par quelque chose commeawk '$3 ~ /upgrade/ {print $4"="$5}' dpkg.log
.awk '$1 == "2018-09-07" && $3 == "upgrade" {print $4"="$5}' /var/log/dpkg.log
E: Version '5.24.1-3+deb9u3' for 'libperl5.24' was not found
. J'utilise Debian Stretch pour Raspian.Les fichiers journaux
/var/log/apt/history.log
et/var/log/apt/term.log
sont les éléments les plus proches disponibles pour votre description:history.log
donne une liste récapitulative de chaque action effectuéeapt
dans le format suivant:En particulier, il fournit une liste des packages nouvellement installés ou des packages supprimés. De plus,
term.log
montre ce qui est réellement apparu sur le terminal pendant l'action, de sorte que l'ancienne et la nouvelle version des paquets soient affichées. Un échantillon aléatoire de monhistory.log
:Il
apt
est déconseillé d’ essayer de revenir en arrière automatiquement, mais si vous utilisez les journaux, il devrait être possible de le faire manuellement à moins que l’action échouée ait cassé quelque chose qui interfère avecapt
les actions de, comme une base de données dpkg incohérente. Dans ce cas, vous devrez résoudre le problème avant de continuer.la source
Non, apt ne rend pas cela facile.
La meilleure option est un type d'instantané. Soit des instantanés du système de fichiers via lvm / zfs / btrfs, soit des instantanés d’instance si vous utilisez une machine virtuelle.
La seule autre option consiste à dresser l'inventaire des packages installés (dpkg -l) avant et après. Si vous souhaitez "restaurer", vous devez installer explicitement la version précédente.
la source
apt install openssl=1.0.2g-1ubuntu4.12
résultats inE: Version '1.0.2g-1ubuntu4.12' for 'openssl' was not found
. Je viens de passer à1.0.2g-1ubuntu4.13
et je me demande si cela cause des problèmes avec la SCRO / CSP maintenant