Jak mogę usunąć wszystkie aktualizacje zainstalowane po określonej dacie?

12

Pozwoliłem menedżerowi aktualizacji zainstalować 200 Mib aktualizacji i myślę, że te aktualizacje powodują problem ze sterownikiem karty graficznej. Potrzebuję więc sposobu na usunięcie aktualizacji zainstalowanych na przykład od 30 maja do 12 maja (lub innej daty). Jeśli muszę je usunąć ręcznie (w przypadku ich odinstalowywania jeden po drugim), uprzejmie prosimy o podanie instrukcji, jak to zrobić.

twórczy
źródło

Odpowiedzi:

8

Istnieje alternatywne podejście do pobierania historii instalacji z wiersza poleceń.

aptWygląda na to, że menedżer pakietów rejestruje wszystko /var/log/apt/history.logi /var/log/apt/term.log, w tym wszystko oddziela od znaczników danych. Oba zawierają podobne, użyteczne informacje, ale term.logoba są bardziej szczegółowe i nie wskazują wprost, co zainicjowało operację.

Dziennik historii

/var/log/apt/history.logprzechowuje zwięzłe podsumowanie każdego aptprzebiegu. Oto mój fragment do ręcznej instalacji:

Start-Date: 2014-08-22  17:17:52
Commandline: apt-get install nautilus-dropbox
Install: nautilus-dropbox:amd64 (1.6.1-1), python-gpgme:amd64 (0.3-0ubuntu3, automatic)
End-Date: 2014-08-22  17:19:13

Commandline:Pole wskazuje co spowodowało bieg, aw przypadku instalacji wykonanych przez menedżera aktualizacji powinno to wyglądać mniej więcej tak:

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'

... i twoja lista pakietów, posortowana według daty, metody i działania (zainstaluj / uaktualnij / usuń). Pamiętaj, że jeśli chcesz przekazać te pakiety z powrotem do apt-get remove ...:

  • Jak wspomniano , powoduje to całkowite usunięcie pakietów zamiast ich przywracania. Informacje w dziennikach można z pewnością wykorzystać do sprawdzenia zaktualizowanych pakietów, choć ich wycofanie to inna sprawa.
  • Trzeba rozebrać się nawiasów ich treści i Separator z listy poprzez preferowanej metody manipulacji tekstu (na przykład sed, vimetc.). Więc jeśli chcę usunąć pakiety z powyższego fragmentu, mogę użyć linii stosunkowo bezpośrednio:

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    

Dziennik terminali

Zasadniczo /var/log/apt/term.logma mniej dogodną strukturę, ale dla kompletności możesz uzyskać te same informacje. Wyjście terminala jest ponownie ograniczane znacznikami czasu, a instalacje pakietów można uzyskać z wierszy o następującej formie:

Selecting previously unselected package nautilus-dropbox.

Oto jeden ze sposobów drukowania listy zainstalowanych pakietów do terminala dla całego dziennika:

$ awk '/^Selecting/ {gsub(/\./,""); print $5}' /var/log/apt/term.log

Można to dostosować lub rozszerzyć, aby uzyskać instalacje w zakresie dat.

Głowica elektryczna
źródło
1
Jeśli to może czyjeś życie łatwiejszym, oto sed snippet użyłem do usunięcia parens i przecinki od /var/log/apt/history.log wymienione opakowania, tak że mogę karmić je do apt-get remove: sed 's/ ([^)]*)//g' | sed 's/,//g').
Apteryx
4

Uwaga: W przeciwieństwie do systemu Windows, usunięcie aktualizacji w Ubuntu zwykle odinstalowuje ten pakiet / program i nie przywraca go (ani nie obniża) do poprzedniej wersji.

Możesz otworzyć Centrum oprogramowania Ubuntu i kliknąć historię

wprowadź opis zdjęcia tutaj

Gdy to zrobisz, kliknij na aktualizacje, a to pokaże wszystkie aktualizacje, które są zainstalowane w twoim systemie. Gdy znajdziesz aktualizacje, które chcesz usunąć, musisz to zrobić ręcznie.

wprowadź opis zdjęcia tutaj

Aby usunąć, możesz użyć Menedżera pakietów Synaptic. Jeśli nie masz go zainstalowanego, możesz go zainstalować z

Mitch
źródło
dzięki. Czy do tego potrzebne są jakieś polecenia na terminalu?
twórczy