Wie kann ich alle Updates entfernen, die nach einem bestimmten Datum installiert wurden?

12

Ich habe dem Update-Manager die Installation von 200 Mib-Updates gestattet, und ich denke, dass bei diesem Update mein Grafiktreiber auf ein Problem stößt. Ich brauche also eine Möglichkeit, um die seit dem 30. Mai 12 installierten Updates (oder ein anderes Datum) zu entfernen. Wenn ich sie manuell entfernen muss (im Fall der Deinstallation nacheinander), werden Sie gebeten, mir die entsprechenden Anweisungen zu geben.

kreativ
quelle

Antworten:

8

Es gibt eine alternative Befehlszeilenmethode zum Abrufen des Installationsverlaufs.

Der Paketmanager aptscheint alles einzuloggen /var/log/apt/history.logund /var/log/apt/term.logauch alles durch Datenstempel zu trennen. Beide enthalten ähnliche, verwendbare Informationen, term.logsind jedoch ausführlicher und geben nicht explizit an, was den Vorgang initiiert hat.

Verlaufsprotokoll

/var/log/apt/history.logSpeichert eine kurze Zusammenfassung jedes aptLaufs. Hier ist ein Ausschnitt von mir für eine manuelle Installation:

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

Das Commandline:Feld gibt an, was den Lauf ausgelöst hat. Bei Installationen durch den Update-Manager sollte es ungefähr so ​​aussehen:

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

... und es gibt eine Liste der Pakete, sortiert nach Datum, Methode und Aktion (installieren / aktualisieren / entfernen). Beachten Sie Folgendes, wenn Sie diese Pakete zurückgeben möchten apt-get remove ...:

  • Wie bereits erwähnt , werden Pakete vollständig entfernt, anstatt zurückgesetzt zu werden. Die Informationen in den Protokollen könnten sicherlich verwendet werden, um aktualisierte Pakete zu betrachten, ein Rollback ist jedoch eine andere Angelegenheit.
  • Hier finden Sie die Klammern Streifen aus müssen, deren Inhalt und Kommaseparator aus der Liste über Ihre bevorzugte Methode der Textbearbeitung (zB sed, vimetc.). Wenn ich also die Pakete aus dem obigen Snippet entfernen möchte, kann ich die Zeile relativ direkt verwenden:

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

Terminal-Protokoll

Im Allgemeinen /var/log/apt/term.logist die Struktur weniger komfortabel, der Vollständigkeit halber können Sie jedoch die gleichen Informationen erhalten. Die Terminalausgabe wird wieder durch Zeitstempel begrenzt, und Paketinstallationen können aus Zeilen der folgenden Form abgerufen werden:

Selecting previously unselected package nautilus-dropbox.

Das Folgende ist eine Möglichkeit, eine Liste der installierten Pakete für das gesamte Protokoll auf dem Terminal zu drucken:

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

Dies kann angepasst oder erweitert werden, um Installationen in einem Datumsbereich zu erhalten.

Elektrischer Kopf
quelle
1
Wenn dies jemand das Leben leichter machen, hier ist der sed Snippet ich verwendet , um die Pars und Komma aus /var/log/apt/history.log aufgelistet Paket zu entfernen , so dass ich sie füttern könnten apt-get remove: sed 's/ ([^)]*)//g' | sed 's/,//g').
Apteryx
4

Hinweis: Im Gegensatz zu Windows wird beim Entfernen eines Updates in Ubuntu dieses Paket / Programm normalerweise deinstalliert und nicht einfach auf die vorherige Version zurückgesetzt (oder zurückgestuft).

Sie können Ubuntu Software Center öffnen und auf Verlauf klicken

Bildbeschreibung hier eingeben

Sobald Sie dies getan haben, klicken Sie auf Aktualisierungen. Daraufhin werden alle Aktualisierungen angezeigt, die auf Ihrem System installiert sind. Sobald Sie herausgefunden haben, welche Updates entfernt werden müssen, müssen Sie dies manuell tun.

Bildbeschreibung hier eingeben

Zum Entfernen können Sie den Synaptic Package Manager verwenden. Wenn Sie es nicht installiert haben, können Sie es von installieren

Mitch
quelle
Danke. Beinhaltet es irgendwelche Befehle auf dem Terminal, um dies zu tun?
Creative