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.
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.
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.
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:
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.
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 )
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.
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.
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.
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ę.
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.
Użycie Apt-Undo jest możliwą opcją, ale może działać tylko wtedy, gdy używasz jej do instalowania i odinstalowywania pakietów. To nie pomoże, jeśli już odinstalowałeś oprogramowanie w normalny sposób.
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.
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:
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
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.
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.
Odpowiedzi:
aptitude
daje dostęp do wszystkich wersji pakietu, jeśli są one dostępne zgodnie z zarządzaniem pakietami Debiana .źródło
Natknąłem się na Blogstatic Blog Hartmana: Jak cofnąć aktualizację w Ubuntu Lucid
źródło
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:
Następnie próbowałem znaleźć nadal buforowane pliki pakietów na dysku (na szczęście dla mnie nie uruchomiłem automatycznego czyszczenia):
Wygląda na to, że z jakiegoś powodu nie mam starszego pakietu ethtool. Nadal kontynuujmy, wymuszając instalację starszych plików pakietów:
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:
Sukces! Właściwie to nie rozwiązało mojego problemu. Ale z powodzeniem obniżyło pakiety, QED.
źródło
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 )
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:
Mam nadzieję, że jest to również przydatna oszczędność czasu dla innych.
źródło
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
,/etc
i/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.źródło
/var
) i wszelkie odpowiednie pliki konfiguracyjne przechowywane. Możesz wtedy spróbować wymusić wycofanie, wyraźnie mówiąc,dpkg
aby 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.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.
źródło
Możesz spróbować checkinstall
Więc może mógłbyś polecić uruchomienie bezpiecznej aktualizacji aptitude i śledziłby każdą modyfikację dokonaną przez aktualizację.
źródło
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.
źródło
Użycie Apt-Undo jest możliwą opcją, ale może działać tylko wtedy, gdy używasz jej do instalowania i odinstalowywania pakietów. To nie pomoże, jeśli już odinstalowałeś oprogramowanie w normalny sposób.
http://www.ubuntugeek.com/apt-undo-a-simple-way-of-undoing-apt-actions.html http://lkubuntu.wordpress.com/2011/07/27/apt-undo-a -simple-way-of-undoing-apt-actions /
źródło
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:
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.
źródło
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-get
działanie tak, abyzfs snapshot
instalował 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
z zawartością
gdzie
rpool/ROOT/debian
należy zastąpić nazwą systemu plików ZFS, do którego jest podłączony system operacyjny. Nazwa ta została nadanaNAME
przy pierwszej instalacji systemu operacyjnego i można ją znaleźć w atrybucie za pomocą poleceniaAle czy to działa?
Lepiej zrób migawkę przed skorzystaniem z porady konfiguracji przypadkowej osoby internetowej:
Tu jest. Jeśli
error: fn_borked
wkrótce to nastąpi, możesz przywrócić swój system do błogiego obecnego stanu za pomocąWypróbuj teraz, instalując dwie małe gry, które prawdopodobnie są dostępne w twoim repozytorium:
Ta migawka zawiera system plików taki, jaki był przed zainstalowaniem dwóch gier.
Czas zabawy dla babci, ale nienawidzisz sudoku.
Po zrobieniu wielu migawek możesz cofnąć się do dowolnej wcześniejszej, dodając
-r
flagę. Na przykład w naszym przypadku spróbujOstrzegamy jednak, że nie tylko przywróci to system plików do stanu, w jakim był w momencie
rpool/ROOT/debian@2018-08-01-230001_test
wykonania, 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 upgrade
na Debian GNU / Linux zTo działa. Jedna migawka została utworzona dla
install
polecenia, a druga dlaupgrade
polecenia.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.
źródło