Jak mogę cofnąć lub wycofać polecenie „apt-get upgrade” na Ubuntu?

26

Czy w Ubuntu istnieje sposób na przywrócenie lub cofnięcie ostatniej aktualizacji po wykonaniu, apt-get upgradejeśli nie podoba ci się wyniki?

jjclarkson
źródło
Nie bez dużo pracy, nie byłoby tego warte. Czy możesz zapisać swój dom / dom i zacząć od nowa? Co ci się nie podobało
user10547,
Jeszcze tego nie zrobiłem, ale jest to serwer produkcyjny i muszę upewnić się, że nie ma niezgodności z naszą niestandardową konfiguracją PHP / MySQL / Apache2, i w razie potrzeby szybko wrócę. Chciałbym zaktualizować, ponieważ myślę, że rozwiąże to inny problem, który mam.
jjclarkson
O ile nie dokonałeś aktualizacji, nie widzę, jakie wyniki nie podobają się, ponieważ są to najprawdopodobniej aktualizacje bezpieczeństwa .
LiraNuna,
Jeśli masz instalację niestandardową, Twoim obowiązkiem jest zapisywanie poprawek i stosowanie ich w stosunku do bieżącej wersji.
LiraNuna,
2
Jeśli jest to serwer, wypróbuj serwer
deweloperski

Odpowiedzi:

5

aptitudedaje dostęp do wszystkich wersji pakietu, jeśli są one dostępne zgodnie z zarządzaniem pakietami Debiana .

użytkownik 28725
źródło
2.7.3 może pomóc w obniżeniu wersji do stabilnej. 2.7.16 wyjaśnia zapisywanie i przywracanie stanu dpkg. dpkg-repack pozwala „skompresować” pojedynczy pakiet.
joeytwiddle
5

Natknąłem się na Blogstatic Blog Hartmana: Jak cofnąć aktualizację w Ubuntu Lucid

Pierwszym krokiem do cofnięcia niepoprawnej aktualizacji było sprawdzenie, jakie dokładnie były aktualizacje. Po przeszukaniu niektórych forów znalazłem sposób, aby zobaczyć moją historię aktualizacji: Otwórz menedżera pakietów synaptic („sudo synaptic” w terminalu). Na pasku menu kliknij Plik -> Historia, a zobaczysz wszystkie aktualizacje posortowane według daty.

Niestety zainstalowałem dziś około 20 aktualizacji i nie wiedziałem, która z nich spowodowała problem. Przeszukując każdy z pakietów wymienionych na liście historii, mogłem obniżyć liczbę kilku jednocześnie, aż problem został rozwiązany i zidentyfikowałem niepoprawną aktualizację. Aby to zrobić:

Użyj paska wyszukiwania, aby znaleźć pakiet, który chcesz obniżyć. Po znalezieniu tego, czego szukasz, kliknij pakiet, aby go wybrać. Na pasku menu kliknij Pakiet -> Wymuś wersję i wybierz poprzednią wersję pakietu z menu rozwijanego. Kliknij przycisk „Zastosuj”, aby zastosować obniżenie wersji.

Manav Brar
źródło
1
Oczekuję, że wszyscy tutaj poznają podstawy wyszukiwania ostatniej obraźliwej aktualizacji:
Manav Brar,
2
O czym była ta edycja? Czy masz inne pytanie? Chcesz, żebyśmy zagrali w zgadywanie?
slhck
5

Musiałem to zrobić dzisiaj w moim systemie Debian. Najpierw zidentyfikowałem przedział czasowy, w którym nastąpiło obraźliwe uaktualnienie, i pobrałem wpisy dziennika, podając stare i nowe numery wersji uaktualnionych pakietów:

$ 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

Następnie próbowałem znaleźć nadal buforowane pliki pakietów na dysku (na szczęście dla mnie nie uruchomiłem automatycznego czyszczenia):

$ 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

Wygląda na to, że z jakiegoś powodu nie mam starszego pakietu ethtool. Nadal kontynuujmy, wymuszając instalację starszych plików pakietów:

$ 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

Jak napisano w komunikacie o błędzie, jeden z moich pakietów zależał od zwykłego pakietu tuż przed aktualizacją, ale aktualizacja go usunęła (a apt-get nie może go już znaleźć). Na szczęście plik pakietu nadal znajduje się w katalogu / var / cache / apt, więc mogę po prostu dodać go do listy i spróbować ponownie:

$ 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

Sukces! Właściwie to nie rozwiązało mojego problemu. Ale z powodzeniem obniżyło pakiety, QED.

Aecolley
źródło
3

Musiałem też dziś cofnąć aktualizację pakietu na kilku serwerach Debiana. Pomyślnie przywróciłem pakiety do ostatniej wersji przy użyciu aptifier, podczas gdy następująca komenda awk była bardzo pomocna.

( W poniższym poleceniu zastąp ciąg daty datą dnia, od którego chcesz przywrócić aktualizacje )

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

przejrzyj dane wyjściowe, aby sprawdzić, czy są to pakiety i wersje do przywrócenia. Następnie użyj programu aptifier, aby dokonać obniżenia wersji wymienionych pakietów:

aptitute install [paste output here]

Mam nadzieję, że jest to również przydatna oszczędność czasu dla innych.

Andreas Kohlbecker
źródło
2

I nie wierzę, oprócz biorąc pełną kopię zapasową odpowiednich systemów plików (te, które zawierają /, /bin, /lib, /sbin, /usr, /var, /etci /boot(co może być na wszystko na systemie plików) a rekord rozruchowy), dzięki czemu można toczyć maszynę z powrotem później.

David Spillett
źródło
Mógłbym (i prawdopodobnie zrobię) kopię zapasową bez systemu operacyjnego, ale chciałem opcji oprogramowania, która pozwoliłaby mi cofnąć aktualizację w szybszym czasie. Przywracanie z kopii zapasowej bez systemu operacyjnego może potrwać kilka godzin.
jjclarkson
1
Możesz upewnić się, że masz kopie wszystkich pakietów, które zamierzasz zaktualizować w ich poprzednich wersjach (prawdopodobnie nadal znajdują się gdzieś w apt cache /var) i wszelkie odpowiednie pliki konfiguracyjne przechowywane. Możesz wtedy spróbować wymusić wycofanie, wyraźnie mówiąc, dpkgaby zainstalować te wersje. Być może będziesz miał trochę pracy do wykonania, jeśli chcesz, aby nastąpiły normalne aktualizacje, więc nie polecam tego.
David Spillett,
Kopię zapasową utworzoną za pomocą rsync (z włączonym znacznikiem czasu) można przywrócić dość szybko, w porównaniu do kopii zapasowej wykonanej za pomocą tar
joeytwiddle
2

Pracuję z moimi serwerami Linux w środowisku zwirtualizowanym i uruchamiam shapshot tuż przed aktualizacją apt-get lub innymi ważnymi aktualizacjami / aktualizacjami innych firm.

Potem, jeśli coś pójdzie nie tak, po prostu cofa się i życie toczy się dalej, dopóki nie znajdę więcej informacji.

Udało się to bardzo dobrze, kiedy zaktualizowałem moje Ubuntu do wersji 12.04, a MySQL po aktualizacji całkowicie przestał działać. Cofnąłem się, znalazłem odpowiedź później, przebudowałem aktualizację, naprawiłem MySQL i życie było dobre.

Brain2000
źródło
1

Możesz spróbować checkinstall

Po tobie ./configure; uczyń swój program, CheckInstall uruchomi make install (lub cokolwiek mu powiesz, aby uruchomić) i będzie śledzić każdy plik zmodyfikowany przez tę instalację, korzystając z doskonałego programu instalacyjnego ...

Więc może mógłbyś polecić uruchomienie bezpiecznej aktualizacji aptitude i śledziłby każdą modyfikację dokonaną przez aktualizację.

solarc
źródło
1

Istnieje projekt o nazwie Nexenta, który łączy jądro OpenSolaris z przestrzenią użytkownika Ubuntu. Zapewnia narzędzie do integracji ZFS Solaris i apt Debiana w celu zapewnienia przycisku cofania aktualizacji. Zobacz tutaj: http://www.nexenta.org/os/TransactionalZFSUpgrades

Mówiąc bardziej ogólnie, potrzebny jest system plików z wersjami. Btrfs dla systemu Linux jest w fazie rozwoju.

Ryan C. Thompson
źródło
0

Zrobiłem to kilka razy, ale nie polecam tego. Oto co zrobiłem (jeśli dobrze pamiętam):

1) Usuń wszelkie nieoficjalne oprogramowanie, które nie jest zawarte w domyślnych repozytoriach ubuntu (może nie być wymagane, ale sugeruję, ponieważ mogą one stanąć na twojej drodze).

2) Zmień /etc/apt/sources.list (i sources.list.d / *) na poprzednią wersję (skomentuj wszystkie nieoficjalne repozytoria).

3) apt-get update / aptitude update

4) Korzystając z aptitude, obniż wersję podstawowych pakietów (takich jak X11, biblioteki itp.). Zacznie strzelać wiele zepsutych pakietów ... więc będziesz musiał rozwiązać każdą sprawę (musisz wiedzieć, jak to zrobić w aptitude). Sposób obniżenia wersji to przejście do panelu opisu i zainstalowanie wersji (naciskając +) na dole.

5) Powtarzaj # 4, aż całe oprogramowanie należy do wersji docelowej (sprawdź kolumnę wersji w aptitude).

Oto powód, dla którego nie polecam tej metody:

  • To zajmuje dużo czasu (jest to proces boleśnie)
  • Niektóre aplikacje mogą nie działać poprawnie (ponieważ mogą nadal mieć najnowszą konfigurację). W takim przypadku musisz „wyczyścić” i zainstalować ponownie.
  • Istnieją aktualizacje systemowe, które nie będą działać po starszej wersji
  • Jest to bardzo ryzykowne, ponieważ możesz skończyć z bezużytecznym systemem

Zdecydowanie zaleciłbym przeprowadzenie czystej instalacji i stopniowe przenoszenie konfiguracji. To także wymaga czasu, ale na końcu masz stabilną wersję.

Powodem, dla którego to zrobiłem, były głównie eksperymenty i desperacja.

lepe
źródło
0

DPkg :: Pre-Install-Pkgs i ZFS w migawkach systemu Linux

Jeśli zainstalowałeś swój system operacyjny w systemie plików ZFS (np. ZFS w systemie Linux ), możesz skonfigurować apt-getdziałanie tak, aby zfs snapshotinstalował lub aktualizował cokolwiek, co natychmiast utworzy kopię zapasową systemu plików. Może działać z mechanizmami tworzenia kopii zapasowych innymi niż migawki ZFS, ale pozostawiam to testowanie innym.

Scenariusz

Utwórz plik podobny do

/etc/apt/apt.conf.d/71backup

z zawartością

// Tell `apt-get' to take a ZFS snapshot before installing or upgrading a
// set of packages:
DPkg::Pre-Install-Pkgs {"/sbin/zfs snapshot rpool/ROOT/debian@apt-get_$(date '+%Y-%m-%d-%H%M')";};

gdzie rpool/ROOT/debiannależy zastąpić nazwą systemu plików ZFS, do którego jest podłączony system operacyjny. Nazwa ta została nadana NAMEprzy pierwszej instalacji systemu operacyjnego i można ją znaleźć w atrybucie za pomocą polecenia

# zfs list -t filesystem
NAME ...
...
rpool/ROOT/debian ...
...

Ale czy to działa?

Lepiej zrób migawkę przed skorzystaniem z porady konfiguracji przypadkowej osoby internetowej:

# zfs snapshot rpool/ROOT/debian@$(date '+%Y-%m-%d-%H%M%S')_test
# zfs list -t snapshot | grep rpool
...
rpool/ROOT/debian@2018-08-01-230001_test

Tu jest. Jeśli error: fn_borkedwkrótce to nastąpi, możesz przywrócić swój system do błogiego obecnego stanu za pomocą

# zfs rollback rpool/ROOT/debian@2018-08-01-230001_test

Wypróbuj teraz, instalując dwie małe gry, które prawdopodobnie są dostępne w twoim repozytorium:

# apt-get install tanglet sudoku
...
# zfs list -t snapshot | grep apt\-get
rpool/ROOT/debian@apt-get_2018-08-02-033614

Ta migawka zawiera system plików taki, jaki był przed zainstalowaniem dwóch gier.

# exit
$ sudoku

Czas zabawy dla babci, ale nienawidzisz sudoku.

$ sudo -i
# zfs rollback rpool/ROOT/debian@apt-get_2018-08-02-033614
# exit
$ sudoku
-bash: /usr/games/sudoku: No such file or directory
$ tanglet
-bash: tanglet: command not found

Po zrobieniu wielu migawek możesz cofnąć się do dowolnej wcześniejszej, dodając -rflagę. Na przykład w naszym przypadku spróbuj

# zfs -r rollback rpool/ROOT/debian@2018-08-01-230001_test

Ostrzegamy jednak, że nie tylko przywróci to system plików do stanu, w jakim był w momencie rpool/ROOT/debian@2018-08-01-230001_testwykonania, ale nieodwracalnie usunie wszystkie późniejsze migawki. Jeśli śledziłeś ten post, migawkarpool/ROOT/debian@apt-get_2018-08-02-033614 zniknie.

Testowałem apt-get upgradena Debian GNU / Linux z

# apt-get -t=oldstable install tanglet sudoku
...
# apt-get upgrade
...
# zfs list -t snapshot | grep apt\-get

To działa. Jedna migawka została utworzona dla installpolecenia, a druga dla upgradepolecenia.

Uwaga : przetestowałem to po raz pierwszy dzisiaj i bardzo mało wiem o wewnętrznych działaniach apt. Jeśli to coś dla ciebie złamie lub pociągnie za sobą ryzyko, których mój łagodny umysł nie wziął pod uwagę, proszę o komentarz poniżej.

LaTeX2enub1336
źródło