Ce didacticiel explique comment vous pouvez annuler les opérations apt ayant échoué (comme apt-get upgrade) et revenir à l'état système précédent avec apt-btrfs-snapshot sur un système Ubuntu 12.10 qui utilise le système de fichiers btrfs. apt-btrfs-snapshot crée un instantané du système avant l'opération apt. Pouvoir restaurer facilement l'état précédent du système après l'échec d'une opération apt élimine une grande partie de la douleur que les administrateurs système doivent normalement gérer et constitue l'une des plus grandes fonctionnalités du système de fichiers btrfs.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Remarque préliminaire
Dans ce tutoriel, j'ai installé l'ensemble du système sur un système de fichiers btrfs, c'est-à-dire qu'il n'y a pas de partition /boot séparée sur un système de fichiers ext. Si vous utilisez une partition /boot séparée et qu'apt installe quoi que ce soit dans cette partition (comme un nouveau noyau), vous ne pouvez pas annuler les modifications apportées à la partition /boot avec apt-btrfs-snapshot - seules les modifications sur la partition btrfs peuvent être annulées.
Mon disque dur s'appelle /dev/sda dans ce tutoriel, ma partition système est /dev/sda1.
Remarque pour les utilisateurs d'Ubuntu :
Étant donné que nous devons exécuter toutes les étapes de ce didacticiel avec les privilèges root, nous pouvons soit ajouter la chaîne sudo à toutes les commandes de ce didacticiel, soit nous devenons root dès maintenant en tapant
sudo su
2 Installer apt-btrfs-snapshot
apt-btrfs-snapshot peut être installé comme suit :
apt-get install apt-btrfs-snapshot
Pour vérifier si apt-btrfs-snapshot est capable de créer des instantanés sur les opérations apt, exécutez
apt-btrfs-snapshot pris en charge
Il devrait afficher :
[email protected] :~# apt-btrfs-snapshot pris en charge
Pris en charge
[email protected] :~#
Si ce n'est pas le cas, la disposition de votre sous-volume btrfs diffère probablement de la disposition par défaut d'Ubuntu, qui est la suivante :
- @ sous-volume :monté sur /.
- Sous-volume @home :monté sur /home.
Il s'agit de la disposition par défaut du sous-volume Ubuntu :
liste des sous-volumes btrfs /
[email protected] :~# btrfs subvolume list /
ID 256 top level 5 path @
ID 258 top level 5 path @home
[email protected] :~#Si apt-btrfs-snapshot prend en charge votre système, vous pouvez passer au chapitre 3.
3 Faire une opération apt
Faisons maintenant une opération apt comme apt-get upgrade pour tester si nous pouvons revenir à l'état précédent.
Mettez à jour votre base de données de paquets...
apt-obtenir la mise à jour... et mettez à jour votre système :
apt-get upgrade[email protected] :~# apt-get upgrade
Lecture des listes de paquets ... Terminé
Création de l'arborescence de dépendances
Lecture des informations sur l'état ... Terminé
Les paquets suivants ont été conservés back :
linux-headers-generic linux-image-generic
Les packages suivants seront mis à jour :
apport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19 mis à jour, 0 nouvellement installés, 0 à supprimer et 2 non mis à niveau.
Besoin d'obtenir 14,4 Mo d'archives.
Après cette opération, 3 072 B d'espace disque supplémentaire seront utilisés.
Ne vous voulez continuer [O/n] ? <-- ENTER
Obtenir :1 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main base-files amd64 6.5ubuntu12 [69,6 kB]
Obtenir :2 http:/ /de.archive.ubuntu.com/ubuntu/ quantal-updates/main whoopsie amd64 0.2.7 [25,1 kB]
Obtenir : 3 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/ main libwhoopsie0 amd64 0.2.7 [7 054 B]
Obtenir : 4 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main lsb-base all 4.0-0ubuntu26.1 [10,3 kB]
Obtenir :5 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-client amd64 4.2.4-1ubuntu10.1 [775 ko]
Obtenir :6 http ://de.archive.ubuntu.com/ubuntu/ quantal-updates/main isc-dhcp-common amd64 4.2.4-1ubuntu10.1 [836 kB]
Obtenez :7 http://de.archive. ubuntu.com/ubuntu/ quantal-updates/main lsb-release all 4.0-0ubuntu26.1 [10,7 kB]
Obtenir : 8 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2 amd64 3.2.3-6ubuntu3.1 [2 585 ko]
Obtenir : 9 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3.2-minimal amd64 3.2.3 -6ubuntu3.1 [1 798 ko]
Obtenir : 10 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim amd64 2:7.3.547-4ubuntu1.1 [1 051 ko]
Obtenir :11 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main vim-tiny amd64 2:7.3.547-4ubuntu1.1 [413 kB]
Obtenir :12 http://de .archive.ubuntu.com/ubuntu/ quantal-updates/main vim-runtime all 2:7.3.547-4ubuntu1.1 [6 317 ko]
Obtenir : 13 http://de.archive.ubuntu.com/ ubuntu/ quantal-updates/main vim-common amd64 2:7.3.547-4ubuntu1.1 [85,7 kB]
Obtenir : 14 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main ubuntu-release-upgrader-core all 1:0.190.4 [27,7 kB]
Obtenir : 15 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-distupgrade all 1:0.190 .4 [141 ko]
Obtenez :16 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-problem-report all 2.6.1-0ubuntu6 [9 578 B]
Obtenir :17 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main python3-apport all 2.6.1-0ubuntu6 [85,7 kB]
Obtenir :18 http://de.archive .ubuntu.com/ubuntu/ quan tal-updates/main apport all 2.6.1-0ubuntu6 [164 kB]
Obtenez :19 http://de.archive.ubuntu.com/ubuntu/ quantal-updates/main linux-generic amd64 3.5.0.18. 21 [1 714 B]
Récupéré 14,4 Mo en 2 s (5 465 kB/s)
Pris en charge
Créer un instantané de '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@' dans '/tmp/apt-btrfs-snapshot-mp-jnW7I_/@apt-snapshot-2012-11-22_11:50:38'
(Lecture de la base de données ... 52 666 fichiers et répertoires actuellement installés.)
Préparation pour remplacer les fichiers de base 6.5ubuntu11 (à l'aide de .../base-files_6.5ubuntu12_amd64.deb) ...
Déballage des fichiers de base de remplacement ...
Traitement des déclencheurs pour man-db .. .
Traitement des déclencheurs pour les informations d'installation ...
Traitement des déclencheurs pour plymouth-theme-ubuntu-text ...
update-initramfs : différer la mise à jour (déclencheur activé)
Traitement déclencheurs pour initramfs-tools ...
update-initramfs : Génération /boot/initrd.img-3.5.0-17-generic
Configuration des fichiers de base (6.5ubuntu12) ...
(Lecture base de données ... 52 666 fichiers et répertoires cu actuellement installé.)
Préparation pour remplacer whoopsie 0.2.5 (à l'aide de .../whoopsie_0.2.7_amd64.deb) ...
whoopsie stop/waiting
Déballage de remplacement whoopsie ...
Préparation pour remplacer libwhoopsie0 0.2.5 (à l'aide de .../libwhoopsie0_0.2.7_amd64.deb) ...
Déballage du remplacement libwhoopsie0 ...
Préparation pour remplacer lsb-base 4.0-0ubuntu26 ( using .../lsb-base_4.0-0ubuntu26.1_all.deb) ...
Déballage du remplacement lsb-base ...
Traitement des déclencheurs pour ureadahead ...
ureadahead sera reprofilé au prochain démarrage
Configuration de lsb-base (4.0-0ubuntu26.1) ...
(Lecture de la base de données ... 52 666 fichiers et répertoires actuellement installés.)
Préparation pour remplacer isc- dhcp-client 4.2.4-1ubuntu10 (using .../isc-dhcp-client_4.2.4-1ubuntu10.1_amd64.deb) ...
Déballage du remplacement isc-dhcp-client ...
Préparation pour remplacer isc-dhcp-common 4.2.4-1ubuntu10 (en utilisant .../isc-dhcp-common_4.2.4-1ubuntu10.1_amd64.deb) ...
Déballage de remplacement isc-dhcp-common ...
Préparer ing pour remplacer lsb-release 4.0-0ubuntu26 (using .../lsb-release_4.0-0ubuntu26.1_all.deb) ...
Déballage de remplacement lsb-release ...
Préparation pour remplacer python3 .2 3.2.3-6ubuntu3 (using .../python3.2_3.2.3-6ubuntu3.1_amd64.deb) ...
Déballage de remplacement python3.2 ...
Préparation pour remplacer python3.2 -minimal 3.2.3-6ubuntu3 (using .../python3.2-minimal_3.2.3-6ubuntu3.1_amd64.deb) ...
Déballage du remplacement python3.2-minimal ...
Préparation à replace vim 2:7.3.547-4ubuntu1 (using .../vim_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Déballage de remplacement vim ...
Préparation pour remplacer vim-tiny 2:7.3.547-4ubuntu1 (using .../vim-tiny_2%3a7.3.547-4ubuntu1.1_amd64.deb) ...
Déballage du remplacement vim-tiny ...
Préparation pour remplacer vim -runtime 2:7.3.547-4ubuntu1 (using .../vim-runtime_2%3a7.3.547-4ubuntu1.1_all.deb) ...
Déballage du remplacement vim-runtime ...
Préparation à remplacer vim-common 2:7.3.547-4ubuntu1 (en utilisant .../vim-common_2%3a7.3.547-4ubuntu1.1_a md64.deb) ...
Déballage du remplacement vim-common ...
Préparation pour remplacer ubuntu-release-upgrader-core 1:0.190.1 (à l'aide de .../ubuntu-release-upgrader- core_1%3a0.190.4_all.deb) ...
Déballage du remplacement ubuntu-release-upgrader-core ...
Préparation pour remplacer python3-distupgrade 1:0.190.1 (à l'aide de .../python3 -distupgrade_1%3a0.190.4_all.deb) ...
Déballage du remplacement python3-distupgrade ...
Préparation pour remplacer python3-problem-report 2.6.1-0ubuntu3 (à l'aide de .../python3- problem-report_2.6.1-0ubuntu6_all.deb) ...
Déballage du remplacement python3-problem-report ...
Préparation pour remplacer python3-apport 2.6.1-0ubuntu3 (à l'aide de .../python3- apport_2.6.1-0ubuntu6_all.deb) ...
Déballage du remplacement python3-apport ...
Préparation pour remplacer apport 2.6.1-0ubuntu3 (à l'aide de .../apport_2.6.1-0ubuntu6_all.deb) ...
apport stop/waiting
Déballage remplacement apport ...
Préparation pour remplacer linux-generic 3.5.0.17.19 (using .../linux-generic_3.5.0.18.21_amd64 .deb ) ...
Déballage du remplacement linux-generic ...
Traitement des déclencheurs pour man-db ...
Traitement des déclencheurs pour mime-support ...
Traitement des déclencheurs pour ureadahead ...
Configuration libwhoopsie0 (0.2.7) ...
Configuration de whoopsie (0.2.7) ...
whoopsie start/running, process 7859
Configuration isc-dhcp-common (4.2.4-1ubuntu10.1) ...
Configuration isc-dhcp-client (4.2.4-1ubuntu10.1) ...
Configuration lsb-release ( 4.0-0ubuntu26.1) ...
Configuration python3.2-minimal (3.2.3-6ubuntu3.1) ...
Configuration python3.2 (3.2.3-6ubuntu3.1) ...
Configuration de vim-common (2:7.3.547-4ubuntu1.1) ...
Configuration de vim-runtime (2:7.3.547-4ubuntu1.1) ...
Traitement /usr/share/vim/addons/doc
Configuration de vim (2:7.3.547-4ubuntu1.1) ...
Configuration de vim-tiny (2:7.3.547 -4ubuntu1.1) ...
Configuration de python3-distupgrade (1:0.190.4) ...
Configuration d'ubuntu-release-upgrader-core (1:0.190.4) ...
Configuration de python3-problem-report (2.6.1-0ubuntu6) ...
Définir ting up python3-apport (2.6.1-0ubuntu6) ...
Configuration up apport (2.6.1-0ubuntu6) ...
apport start/running
Setup up linux-generic ( 3.5.0.18.21) ...
Traitement des déclencheurs pour libc-bin ...
ldconfig traitement différé en cours actuellement en cours
[email protected] :~#Comme vous le voyez, apt-btrfs-snapshot a été automatiquement créé comme instantané de notre système (appelé @apt-snapshot-2012-11-22_11:50:38 dans cet exemple) avant la mise à niveau. Vous pouvez vérifier cela avec...
liste des sous-volumes btrfs /[email protected] :~# btrfs subvolume list /
ID 256 chemin supérieur de niveau 5 @
ID 258 chemin supérieur de niveau 5 @home
ID 260 chemin supérieur de niveau 5 @apt- snapshot-2012-11-22_11:50:38
[email protected] :~#... et :
liste apt-btrfs-snapshot[email protected] :~# apt-btrfs-snapshot list
Instantanés disponibles :
@apt-snapshot-2012-11-22_11:50:38
[email protected] :~#
4 Restauration
Supposons maintenant que la dernière opération apt ait transformé notre système de travail en un système qui ne fonctionne plus comme prévu. C'est pourquoi nous voulons restaurer l'état précédent du système, c'est-à-dire que nous voulons faire une restauration.
Par conséquent, nous montons le système de fichiers btrfs dans un emplacement séparé, par ex. /mnt :
monter /dev/sda1 /mntNous pouvons maintenant voir nos sous-volumes dans la sortie de :
ls -l /mnt/[email protected] :~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @apt-snapshot-2012-11-22_11:50:38
drwxr-xr-x 1 root root 26 Nov 22 10:57 @home
[email protected ] :~#@apt-snapshot-2012-11-22_11:50:38 est un instantané de notre système de fichiers racine de travail (@) avant l'opération apt. Afin de faire démarrer le système à partir de cet instantané de travail au lieu du sous-volume actuel, nous renommons @ en quelque chose d'autre, puis @apt-snapshot-2012-11-22_11:50:38 en @ :
mv /mnt/@ /mnt/@_badroot
mv /mnt/@apt-snapshot-2012-11-22_11:50:38 /mnt/@Redémarrez maintenant :
redémarrer
5 Vérifier si la restauration a réussi
Après le redémarrage, nous devons vérifier si la restauration a réussi. Pour ce faire, nous répétons l'opération apt qui a rendu notre système inutilisable, par exemple :
apt-obtenir la mise à jourapt-get upgradeSi la restauration a réussi, apt-get upgrade devrait afficher les mêmes packages disponibles pour la mise à jour qu'auparavant (car il s'agit simplement de vérifier si la restauration a réussi, ne réinstallez pas les mises à jour) :
[email protected] :~# apt-get upgrade
Lecture des listes de paquets ... Terminé
Création de l'arborescence de dépendances
Lecture des informations sur l'état ... Terminé
Les paquets suivants ont été conservés back :
linux-headers-generic linux-image-generic
Les packages suivants seront mis à jour :
apport base-files isc-dhcp-client isc-dhcp-common libwhoopsie0 linux-generic lsb -base lsb-release python3-apport python3-distupgrade python3-problem-report python3.2 python3.2-minimal
ubuntu-release-upgrader-core vim vim-common vim-runtime vim-tiny whoopsie
19 mis à niveau, 0 nouvellement installés, 0 à supprimer et 2 non mis à niveau.
Besoin d'obtenir 0 B/14,4 Mo d'archives.
Après cette opération, 3 072 B d'espace disque supplémentaire seront utilisés.
Voulez-vous continuer [O/n] ? <-- n
6 Supprimer le sous-volume @ (facultatif)
Si vous êtes sûr que la restauration a réussi et que vous n'avez plus besoin de l'ancien sous-volume @ (maintenant nommé @_badroot), vous pouvez le supprimer pour libérer de l'espace.
monter /dev/sda1 /mntls -l /mnt/[email protected] :~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 230 Nov 22 10:46 @
drwxr-xr-x 1 root root 230 Nov 22 10:46 @_badroot
drwxr-xr-x 1 root root 26 Nov 22 10:57 @home
[email protected] :~#supprimer le sous-volume btrfs /mnt/@_badrootumount /mnt
7 liens
- btrfs :https://btrfs.wiki.kernel.org/index.php/Main_Page
- Ubuntu :http://www.ubuntu.com/