Comment annuler ou annuler une commande "apt-get upgrade" sur Ubuntu?

Existe-t-il un moyen dans Ubuntu de renverser ou de défaire la dernière mise à niveau après avoir effectué une mise à niveau apt-get upgrade si vous n'aimez pas les résultats?

aptitude vous donne accès à toutes les versions d'un package si disponible selon la gestion des paquets Debian .

J'ai rencontré BlogBlogstatic de Hartman: Comment annuler une mise à jour dans Ubuntu Lucid

La première étape pour annuler la mise à jour offensante était de savoir quelles mises à jour il était exactement. Après avoir parcouru certains forums, j'ai rencontré un moyen de voir mon historique de mise à jour: Open synaptic package manager ("sudo synaptic" dans le terminal). Dans la barre de menus, cliquez sur Fichier -> Historique et vous verrez toutes vos mises à jour triées par date.

Malheureusement, j'avais installé environ 20 mises à jour aujourd'hui, et je ne savais pas lequel avait causé le problème. En parcourant chacun des paquetages nommés dans la liste Historique, j'ai réussi à dégrader quelques-uns à la fois jusqu'à ce que le problème soit résolu et j'ai identifié la mise à jour offensante. Pour faire ça:

Utilisez la barre de recherche pour trouver le paquet que vous voulez dégrader. Une fois que vous avez trouvé ce que vous recherchez, cliquez sur le package pour le sélectionner. Dans la barre de menus, cliquez sur Package -> Force Version et sélectionnez la version précédente du package dans le menu déroulant. Cliquez sur le bouton "Appliquer" pour appliquer le dégradé.

Je devais le faire aujourd'hui sur mon système Debian. Tout d'abord, j'ai identifié la plage de temps lorsque la mise à jour offensive s'est produite et récupéré les entrées de journal donnant les anciens et les nouveaux numéros de version des paquets améliorés:

 $ awk '$1=="2016-03-20" && $3=="upgrade"' /var/log/dpkg.log 2016-03-20 16:58:22 upgrade libwebkitgtk-3.0-0:amd64 2.4.9-3 2.4.10-1 2016-03-20 16:58:24 upgrade libjavascriptcoregtk-3.0-0:amd64 2.4.9-3 2.4.10-1 2016-03-20 16:58:26 upgrade traceroute:amd64 1:2.0.22-1 1:2.1.0-1 2016-03-20 16:58:33 upgrade ethtool:amd64 1:4.2-1 1:4.5-1 2016-03-20 16:58:34 upgrade libsdl1.2debian:amd64 1.2.15+dfsg1-3 1.2.15+dfsg1-4 2016-03-20 16:58:34 upgrade subversion:amd64 1.9.3-2+b1 1.9.3-3 2016-03-20 16:58:36 upgrade libsvn1:amd64 1.9.3-2+b1 1.9.3-3 2016-03-20 16:58:56 upgrade linux-image-amd64:amd64 4.3+70 4.4+71 2016-03-20 16:58:56 upgrade linux-libc-dev:amd64 4.3.5-1 4.4.6-1 2016-03-20 16:59:03 upgrade amd64-microcode:amd64 2.20141028.1 2.20160316.1 

Ensuite, j'ai essayé de trouver les fichiers de paquets mis en cache sur le disque (heureusement pour moi, je n'avais pas exécuté autoclean):

 $ awk '$1=="2016-03-20" && $3=="upgrade" {gsub(/:/, "%3a", $5); split($4, f, ":"); print "/var/cache/apt/archives/" f[1] "_" $5 "_" f[2] ".deb"}' /var/log/dpkg.log | xargs -r ls -ld ls: cannot access '/var/cache/apt/archives/ethtool_1%3a4.2-1_amd64.deb': No such file or directory -rw-r--r-- 1 root root 28820 Dec 18 2014 /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb -rw-r--r-- 1 root root 1978874 Dec 10 18:22 /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb -rw-r--r-- 1 root root 185006 Mar 12 00:41 /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb -rw-r--r-- 1 root root 1317644 Mar 3 11:30 /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb -rw-r--r-- 1 root root 7679400 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb -rw-r--r-- 1 root root 6108 Dec 14 06:59 /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb -rw-r--r-- 1 root root 1075506 Feb 7 21:36 /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb -rw-r--r-- 1 root root 983174 Mar 3 11:30 /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb -rw-r--r-- 1 root root 53376 Feb 28 18:35 /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb 

Il me semble que je n'ai pas l'ancien paquet ethtool pour une raison quelconque. Pourtant, continuons par la force – en installant les anciens fichiers de paquets:

 $ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb dpkg: warning: downgrading amd64-microcode from 2.20160316.1 to 2.20141028.1 (Reading database ... 139632 files and directories currently installed.) Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ... Unpacking amd64-microcode (2.20141028.1) over (2.20160316.1) ... dpkg: warning: downgrading libjavascriptcoregtk-3.0-0:amd64 from 2.4.10-1 to 2.4.9-3 Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.10-1) ... dpkg: warning: downgrading libsdl1.2debian:amd64 from 1.2.15+dfsg1-4 to 1.2.15+dfsg1-3 Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ... Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-4) ... dpkg: warning: downgrading libsvn1:amd64 from 1.9.3-3 to 1.9.3-2+b1 Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ... Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-3) ... Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... dpkg: warning: downgrading linux-image-amd64 from 4.4+71 to 4.3+70 Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ... Unpacking linux-image-amd64 (4.3+70) over (4.4+71) ... dpkg: warning: downgrading linux-libc-dev:amd64 from 4.4.6-1 to 4.3.5-1 Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.4.6-1) ... dpkg: warning: downgrading subversion from 1.9.3-3 to 1.9.3-2+b1 Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ... Unpacking subversion (1.9.3-2+b1) over (1.9.3-3) ... dpkg: warning: downgrading traceroute from 1:2.1.0-1 to 1:2.0.22-1 Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ... Unpacking traceroute (1:2.0.22-1) over (1:2.1.0-1) ... Setting up amd64-microcode (2.20141028.1) ... update-initramfs: deferring update (trigger activated) amd64-microcode: microcode will be updated at next boot Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ... Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ... Setting up libsvn1:amd64 (1.9.3-2+b1) ... dpkg: dependency problems prevent configuration of libwebkitgtk-3.0-0:amd64: libwebkitgtk-3.0-0:amd64 depends on libwebkitgtk-3.0-common (>= 2.4.9); however: Package libwebkitgtk-3.0-common is not installed. dpkg: error processing package libwebkitgtk-3.0-0:amd64 (--install): dependency problems - leaving unconfigured Setting up linux-image-amd64 (4.3+70) ... Setting up linux-libc-dev:amd64 (4.3.5-1) ... Setting up subversion (1.9.3-2+b1) ... Setting up traceroute (1:2.0.22-1) ... update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode Processing triggers for libc-bin (2.22-3) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for initramfs-tools (0.123) ... update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64 Errors were encountered while processing: libwebkitgtk-3.0-0:amd64 

Comme l'a indiqué le message d'erreur, l'un de mes paquets dépendait d'un package commun avant la mise à niveau, mais la mise à niveau l'a supprimé (et apt-get ne peut plus le trouver). Heureusement, son fichier de paquet est toujours dans / var / cache / apt afin que je puisse l'ajouter à la liste et réessayer:

 $ ls -ld /var/cache/apt/archives/libwebkitgtk-3.0-common* -rw-r--r-- 1 root root 452278 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb $ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb (Reading database ... 139632 files and directories currently installed.) Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ... Unpacking amd64-microcode (2.20141028.1) over (2.20141028.1) ... Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ... Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-3) ... Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ... Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-2+b1) ... Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ... Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ... Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ... Unpacking linux-image-amd64 (4.3+70) over (4.3+70) ... Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.3.5-1) ... Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ... Unpacking subversion (1.9.3-2+b1) over (1.9.3-2+b1) ... Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ... Unpacking traceroute (1:2.0.22-1) over (1:2.0.22-1) ... Selecting previously unselected package libwebkitgtk-3.0-common. Preparing to unpack .../libwebkitgtk-3.0-common_2.4.9-3_all.deb ... Unpacking libwebkitgtk-3.0-common (2.4.9-3) ... Setting up amd64-microcode (2.20141028.1) ... update-initramfs: deferring update (trigger activated) amd64-microcode: microcode will be updated at next boot Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ... Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ... Setting up libsvn1:amd64 (1.9.3-2+b1) ... Setting up linux-image-amd64 (4.3+70) ... Setting up linux-libc-dev:amd64 (4.3.5-1) ... Setting up subversion (1.9.3-2+b1) ... Setting up traceroute (1:2.0.22-1) ... update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode Setting up libwebkitgtk-3.0-common (2.4.9-3) ... Setting up libwebkitgtk-3.0-0:amd64 (2.4.9-3) ... Processing triggers for libc-bin (2.22-3) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for initramfs-tools (0.123) ... update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64 

Succès! En fait, cela n'a pas résolu mon problème. Mais il a réussi à rabaisser les paquets, QED.

Je ne le crois pas, en dehors de la sauvegarde complète des systèmes de fichiers concernés (ceux qui contiennent / , /bin , /lib , /sbin , /usr , /var , /etc et /boot (qui peuvent tous être sur le système de fichiers) et Votre enregistrement de démarrage) afin que vous puissiez rouler la machine par la suite.

J'ai également dû annuler une mise à jour du package aujourd'hui sur quelques serveurs Debian. J'ai réussi à renvoyer les paquets à la dernière version en utilisant aptitute, alors que la commande awk suivante était très utile.

( Dans la commande ci-dessous, remplacez la chaîne de date par la date du jour à partir de laquelle vous souhaitez revenir aux mises à niveau )

 awk 'BEGIN{ start="0" } { if($0 ~ /Log started: 2017-06-20/) { start="1"} if ( start == "1" && $0 ~ /Unpacking.*over/) {gsub(/[\s\t)( ]+/,"",$5); printf("%s=%s ", $2 , $5)}}' /var/log/apt/term.log 

Examinez la sortie pour vérifier que ces paquets et versions doivent être inversés. Ensuite, utilisez aptitute pour effectuer la dégradation des paquets répertoriés:

 aptitute install [paste output here] 

J'espère que c'est aussi un économiseur de temps utile pour les autres.

Vous pouvez essayer checkinstall

Après vous ./configure; Créez votre programme, CheckInstall fonctionnera, effectuez l'installation (ou tout ce que vous lui dites pour l'exécuter) et faites le suivi de chaque fichier modifié par cette installation, en utilisant l'excellent montage d'installation …

Donc, peut-être que vous pourriez lui dire de faire fonctionner la mise à niveau sécurisée aptitude et cela permettrait de suivre toutes les modifications apportées par la mise à niveau.

Il existe un projet appelé Nexenta qui combine le noyau OpenSolaris avec l'espace utilisateur Ubuntu. Il fournit un outil pour intégrer le ZFS de Solaris et l'apt Debian afin de fournir un bouton d'annulation pour les mises à niveau. Voir ici: http://www.nexenta.org/os/TransactionalZFSUpgrades

Plus généralement, ce dont vous avez besoin, c'est un système de fichiers de version. Btrfs pour Linux est en développement.

Je gère mes serveurs linux dans un environnement virtualisé et lance un instantané juste avant une mise à niveau apt-get, ou toutes les mises à jour / mises à niveau majeures de tiers pour cette question.

Ensuite, si quelque chose ne va pas, je reviens simplement et la vie continue jusqu'à ce que je puisse trouver plus d'informations.

Cela s'est bien déroulé lorsque j'ai mis à niveau ma boîte Ubuntu vers 12.04, et de toute façon MySQL était complètement non fonctionnel après la mise à niveau. Je me suis retourné, j'ai trouvé la réponse plus tard, réexécutez la mise à niveau, fixé MySQL et la vie était bonne.

L'utilisation d' Apt-Undo est une option possible, mais elle ne peut fonctionner que si vous l'utilisez pour installer et désinstaller des packages. Cela ne vous aidera pas si vous avez déjà désinstallé le logiciel de manière normale.

http://www.ubuntugeek.com/apt-undo-a-simple-way-of-undoing-apt-actions.html http://lkubuntu.wordpress.com/2011/07/27/apt-undo-a -simple-way-of-anting-apt-actions /

J'ai réussi à le faire à plusieurs reprises, mais je ne l'ai pas recommandé. C'est ce que j'ai fait (si je me souviens bien):

1) Supprimez tous les logiciels non officiels qui ne sont pas inclus dans les dépôts ubuntu par défaut (il se peut que cela ne soit pas nécessaire, mais je le suggère car ils peuvent vous gêner).

2) Modifiez votre /etc/apt/sources.list (et sources.list.d / *) à la version précédente (commentez tous les référentiels non officiels).

3) apt-get update / aptitude update

4) En utilisant aptitude, dégrade les paquets principaux (comme X11, les bibliothèques, etc.). Il va commencer à tirer beaucoup de paquets cassés … alors vous devrez résoudre chaque cas (vous devez savoir comment faire cela dans aptitude). La façon dont vous le dégrader est en allant au panneau de description et en installant la version (en appuyant sur +) en bas.

5) Répétez # 4 jusqu'à ce que tous les logiciels appartiennent à votre version cible (cochez la colonne de la version dans aptitude).

C'est la raison pour laquelle je ne recommande pas cette méthode:

  • Cela prend beaucoup de temps (c'est un processus douloureux)
  • Certaines applications peuvent ne pas fonctionner correctement (car elles peuvent toujours avoir la configuration la plus récente). Dans ce cas, vous devrez "purger" et réinstaller.
  • Il existe des mises à jour liées au système qui ne fonctionneront pas après le déclassement
  • Il est très risqué car vous pouvez vous retrouver avec un système inutilisable

Je recommande fortement de faire une installation propre et de déplacer votre configuration peu à peu. Cela prend aussi du temps, mais à la fin, vous avez une version stable.

La raison pour laquelle je l'ai fait était principalement comme une expérimentation et par un désespoir.