web-dev-qa-db-fra.com

Comment annuler une mise à jour d'apt-get à partir d'une ligne de commande?

J'administre à distance un poste de travail 12.04 LTS et effectue régulièrement la mise à jour de Sudo apt-get Sudo apt-get upgrade

Cependant, si la mise à niveau installe quelque chose qui cause un problème de système, j'aimerais revenir à la version précédente.

  1. Existe-t-il un moyen de savoir quels éléments seront mis à niveau, ainsi que les versions from/to?
  2. Une fois la mise à niveau terminée, existe-t-il un moyen de restaurer la version précédente (et toutes ses dépendances).

Par exemple, je vois sur ma machine locale qu’il existe une version plus récente du lecteur flash. Historiquement, j'ai eu de nombreux problèmes avec le flash, alors je suis vraiment préoccupé par la mise à jour aveuglément sur ce système distant et par l'impossibilité de l'annuler.

Pensées/suggestions?

5
pcm

Vous pouvez afficher les packages qui vont être mis à niveau et les modifications de version avec:

Sudo apt-get update
Sudo apt-get -V upgrade

Le drapeau '-V' vous indique les informations supplémentaires. En ce qui concerne les instantanés - vous devez rouler les vôtres ici.

Ma méthode préférée pour avoir la capacité de retour arrière consiste à utiliser LVM avec des instantanés sous Linux - mais la dernière fois que j'ai vérifié, il n'y avait aucun progrès sur le retour automatique à l'instantané choisi. Cela a peut-être changé depuis (je serais heureux que quelqu'un me corrige), mais vous pouvez toujours démarrer à l'aide du paramètre de noyau root=/dev/vg0/root-snap (par exemple), puis utiliser rsync pour synchroniser l'instantané /dev/vg0/root-snap avec le volume d'origine /dev/vg0/root puis supprimez l'instantané. Pas idéal mais peut être automatisé.

Bien sûr, les instantanés ZFS font sensation mais il n’existe pas de support ZFS officiel et prêt pour la production pour Linux (oui, je suis au courant de zfsonlinux.org et de ZFS-Fuse), donc à moins que vous ne jouiez, ce n'est pas vraiment une option réalisable pour vous.

UPDATE: il semble que nous pouvons maintenant annuler les instantanés (fusion dans le jargon de LVM2). Donc, la mise à jour prendrait la forme suivante avec LVM2:

  1. Créez un instantané de 5 Go de votre LV racine:

    lvcreate -s/dev/vg0/root -L5G -n root-snap

  2. Mettez à jour le package (comme ci-dessus).

  3. Reculez si nécessaire en exécutant:

    lvconvert --merge/dev/vg0/root-snap

Et parce que/dev/vg0/root (le fichier LV d'origine) est ouvert, lvconvert vous informera que le fichier/dev/vg0/root sera restauré sur/dev/vg0/root-snap lors de la prochaine activation de ce volume. Cela arrive quand tu cours

lvchange -ay /dev/vg0/root

pendant que ce LV est fermé, c'est-à-dire au prochain démarrage ou après avoir exécuté:

lvchange -an /dev/vg0/root
5
Marcin Kaminski
  1. Exécutez Sudo apt-get update && Sudo apt-get -s dist-upgrade pour voir ce qui va être installé et mis à jour (dist-upgrade ne fera pas de mise à jour de version!). La commande est un essai à blanc, de sorte que rien ne soit réellement installé.

  2. Assurez-vous qu'il y a un capture instantanée du système à restaurer. Il n'est pas possible de lancer/tomber/marcher/sauter/etc en arrière d'une commande apt-get.

Ne pas mettre à jour Adobe Flash est un mauvaise idée , et comme Flash ne casse pas autre chose que lui-même, je vous recommande de le garder à jour ou de le supprimer complètement.

1
mikewhatever