Existe-t-il un moyen d'annuler la mise à niveau la plus récente?


55

Cela m'est arrivé à plusieurs reprises au cours des 5 dernières années: une mise à niveau a endommagé mon système. Chaque fois que je me retrouve dans cette situation, je dois réinstaller tout le système, ce qui est vraiment ennuyant.

Existe-t-il un moyen d'annuler la mise à niveau la plus récente pour pouvoir disposer d'un système fonctionnel sans avoir à le réinstaller? Si non, quel est le meilleur moyen de suggérer cela comme une idée prioritaire?

J'ai lu que cette idée avait été décrite dans brainstorm.ubuntu.com, mais elle a le sentiment qu'elle est morte ... et les forums regorgent d'exemples de mises à niveau qui ont permis de casser des choses, c'est pourquoi je pense qu'il faut faire quelque chose à ce sujet. Merci!


17
Je me connecte juste pour voter cette question. L'absence d'un outil de restauration cohérent dans un système d'exploitation bureautique 2011 est pathétique. La restauration du système Windows a eu lieu il y a plus de 5 ans , ce qui est loin derrière la courbe. Les utilisateurs ont été ( correctement ) formés pour installer les mises à jour de sécurité, mais nous sommes constamment punis pour cela par des pilotes défaillants.
Gates VP

@GatesVP Ce point que vous avez mentionné il y a plus de 8 ans continue de tourmenter Ubuntu (vous ne pouvez pas parler pour d'autres distributions, mais elles ne sont probablement pas meilleures). Je trouve cela totalement frustrant. Quelqu'un devrait avoir vos mots imprimés avec une police de caractère de 64 points et être placés devant tous les débutants sur le point de plonger dans le monde de Linux.
HoraceT

Je dois convenir qu'une image de sauvegarde est la voie à suivre. Il n'est pas précisé s'il s'agit d'un système de «production». S'il est et reste faisable d'avoir un système de test de clonage, alors c'est avec la sauvegarde par image que c'est la voie à suivre. S'il ne s'agit que d'une mise à jour d'application, la solution la plus rapide consiste à rétrograder avec ou sans l'option 'forcer'.
JHPArizona

Réponses:


14

Dans Synaptics, vous pouvez au moins contrôler les dernières mises à jour: menu Fichier, historique.

(si synaptic est démarrable, avec le système cassé). Donc, avec une commande apt -...-, pour annuler leur mise à jour, cela ne devrait pas être trop difficile.

Je suppose qu'il y a aussi une commande historique pour la ligne de commande.

Peut-être devrez-vous supprimer tout le paquet et installer une version spécifique. Après tout, il est possible d'installer une version spécifique, mais je n'ai jamais eu besoin de le faire.

update: regardé comment faire avec apt:

Trouver les paquets installés dans la dernière 3x24h:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

Avec apt-cache policy, vous voyez les versions disponibles d'un programme:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

ici 3.6.7 et 3.6.3. Maintenant, vous savez quelle version antérieure peut être installée (souvent pas le prédécesseur immédiat):

sudo apt-get install PROGRAM=3.6.3

Ensuite, vous devez faire un apt-pinning, pour empêcher les futures mises à jour:

Créez un nouveau fichier dans /etc/apt/preferences.d/ (si> = 10.4) nommé d'après votre programme,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000

Merci à tous pour l'info. Je ne peux pas attendre pour Ubuntu pour gérer zfs hors de la boîte!
Marcelo Ruiz

Je suis désolé - qu'est-ce que cela a à voir avec zfs? Zfs gère-t-il les annulations? Ou est-ce que les mises à jour cassent votre zfs-install? Ou est-ce que zfs-update casse quelque chose?
utilisateur inconnu

Et si la version est 1.0.2g-1ubuntu4.12conforme à apt? Il refuse cependant de l'accepter comme numéro de version. Je veux déclasser la forme 1.0.2g-1ubuntu4.13à1.0.2g-1ubuntu4.12
Csaba Toth

merci, suuuuuuuuuuuuuch une douleur cependant. ma dernière mise à jour, qui contient une entrée complètement détruite, contient exactement 80 paquets répertoriés find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' à ce stade, il est moins fastidieux de réinstaller tout mon système
tatsu

7

La plupart du temps, vous pouvez consulter les /var/log/apt/history.logmodifications apportées par apt / synaptic. C'est juste un peu de médecine légale et beaucoup de couper / coller à faire.

Retournez à la date à laquelle votre système fonctionnait toujours bien.

Prenez d’abord tous les paquets qui ont été installés depuis et mettez-les ensemble dans un script de désinstallation. Une fois le script terminé, recommencez l'ajout de tous les packages supprimés.

Un exemple de cas:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

tu peux voir,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

se sont installés par Synaptic. comme a libfglrx:amd64été enlevé par Synaptic.

Nous sommes passés dans l'ordre inverse, nous avons donc d'abord supprimé les packages nouvellement installés et ajouté à nouveau les packages supprimés.

Une commande de travail pour ce cas pourrait ressembler à:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

Peut-être que ce ne serait pas la meilleure idée de se passer de l’ -yinterrupteur - d’avoir plus de contrôle sur le processus (pour éviter les dépendances brisées). La plupart d'entre vous ne se casseraient pas le doigt tout en faisant quelques vérifications "y"

Dans la plupart des cas, une restauration est possible de cette façon, mais si les dépendances sont déjà brisées, vous pouvez rencontrer un problème encore plus important.


6

La plupart du temps, si votre système est en panne, il s'agit d'un problème de noyau .

Démarrez simplement un noyau plus ancien et réinstallez les paquetages les plus récents (en particulier les paquetages du noyau) qui ne se sont probablement pas mis à jour correctement. Quelques notes:

/var/log/dpkg.log

est votre ami pour vérifier quelle est la liste des paquets récemment mis à jour / installés

sudo apt-get -f install

peut la plupart du temps réparer des paquets à moitié installés


4

Malheureusement, il n'y a pas encore moyen de le faire. L’instantané / restauration au niveau du système de fichiers est l’une des fonctionnalités de la prochaine version de btrfs, mais il existe encore un moyen de la rendre suffisamment complète et suffisamment stable pour l’utiliser comme système de fichiers par défaut.


1
Pour les instantanés du système de fichiers, vous pouvez utiliser LVM à la place, avec ext3 ou ext4.
Flimm

@ Flimm, vous pouvez le faire maintenant, même si cela ne fonctionne pas très bien et vous oblige à configurer LVM lors de l'installation.
Psusi

3

Lors d'une mise à niveau majeure, je clone le disque à l'aide de Clonezilla . Gravez-le sur un CD, disposez d’un disque dur de secours (externe) et suivez les instructions du Clonezilla LiveCD. Choisissez le partition-imagemode, cela utilise le moins d'espace.

Si vous pensez que votre système est en panne (ou si vous souhaitez annuler les modifications), démarrez simplement le LiveCD Clonezilla, sélectionnez l'image sur votre disque dur (externe) et restaurez-la. Comme ces images sont une copie littérale de chaque bit de votre disque, cela peut prendre quelques heures en fonction de la vitesse de votre disque et de la vitesse de connexion (la connexion entre les données, généralement un disque dur USB externe, et l'ordinateur).

À propos, cela s'appelle une méthode de sauvegarde.


3

Vous pouvez installer facilement une ancienne version d'un paquet donné (rétrogradation) avec apt ou dpkg . Le problème est de trouver une ancienne version du paquet, car celles-ci disparaissent souvent du pool et des miroirs au fur et à mesure que les mises à jour arrivent.

Si vous installez le package à partir d'un CD d'installation, d'un miroir obsolète ou d'un cache, vous devez également le conserver épinglé à l'ancienne version afin qu'il ne soit pas mis à niveau jusqu'à ce que vous le permettiez. Ce qui signifie que vous devez surveiller les mises à jour et les tester jusqu'à ce que votre problème soit résolu. Ceci est bien sûr un problème puisque pendant ce temps (peut-être pour toujours), vous resterez avec le paquet non corrigé, probablement non sécurisé. Cela signifie que chaque utilisateur présentant un problème système sera laissé dans un état aléatoire jusqu'à ce qu'il puisse le résoudre.

De plus, tous les logiciels ne sont pas compatibles avec la transmission, de sorte qu'une ancienne version de quelque chose peut ne pas se comporter correctement si vous utilisez des fichiers de configuration ou de données plus récents. Évidemment, cela est impossible à résoudre à moins que vous ne restauriez toutes les données utilisateur à un état antérieur à la mise à niveau.

Ce serait bien s'il y avait un moyen de le faire, mais c'est extrêmement problématique. Toute personne qui pense qu'il existe une solution cohérente doit rédiger une proposition et inviter les commentaires ou, mieux encore, créer une solution de validation du concept (code, script, document). Trolling and gémissements n'est pas constructif.

Comme il n’existe pas de solution technique propre, la plupart des logiciels sont développés (et intégrés) avec la mentalité «le seul moyen est d’avancer». Essayer de gérer des versions obsolètes est une perte de temps pour tout le monde. Les problèmes trouvés sont résolus dans les versions les plus récentes dès que possible. En guise de solution mineure, j'aimerais conserver une archive des versions de paquetages précédentes quelque part pour la solution de contournement temporaire occasionnelle.

En attendant, vous pouvez signaler des bogues sans vous attendre à ce que les logiciels à la pointe de la technologie n'échouent jamais. Une solution, une fois trouvée, devrait figurer dans la prochaine mise à jour. Les développeurs sont des humains (la plupart du temps) et sont donc faillibles. Les ordinateurs sont délicats et pleins de variété et de détails insensés. Les systèmes entretenus de manière défensive utilisant des composants bien pris en charge et une distribution logicielle intégrée stable peuvent être très stables sans pour autant devenir non sécurisés ou non évolutifs.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.