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 des tâches sudo apt-get update 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?

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 montre 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 kernel root=/dev/vg0/root-snap (par exemple), puis utiliser rsync pour synchroniser l’instantané /dev/vg0/root-snap sur 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 à la production pour Linux (oui, je suis au courant de zfsonlinux.org et de ZFS-FUSE), donc à moins de jouer, c’est pas vraiment une option réaliste vous.

UPDATE: il semble que nous puissions maintenant restaurer 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 
  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 une 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 instantané 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 une mauvaise idée , et comme Flash ne casse généralement rien d’autre que lui-même, je vous recommande de le garder à jour ou de le supprimer complètement.