Come posso rimuovere tutti gli aggiornamenti installati dopo una data specifica?


12

Ho permesso al gestore aggiornamenti di installare 200 Mib di aggiornamenti e penso che questi aggiornamenti facciano guastare il mio driver grafico. Quindi, ho bisogno di un modo per rimuovere gli aggiornamenti che sono stati installati dal 30 maggio 12 ad esempio (o qualsiasi altra data). Se devo rimuoverli manualmente (nel caso di disinstallarli uno per uno), siete pregati di darmi le istruzioni su come farlo.

Risposte:


8

Esiste un approccio alternativo da riga di comando per ottenere la cronologia di installazione.

Il gestore dei pacchetti aptsembra accedere a tutto /var/log/apt/history.loge /var/log/apt/term.log, inclusa la separazione di tutto da datestamp. Entrambi contengono informazioni simili e utilizzabili, ma term.logsono entrambi più dettagliati e non indicano esplicitamente ciò che ha avviato l'operazione.

Registro cronologico

/var/log/apt/history.logmemorizza un breve riepilogo di ogni aptcorsa. Ecco un mio frammento per un'installazione manuale:

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

Il Commandline:campo indica cosa ha attivato l'esecuzione e, nel caso di installazioni eseguite dal gestore aggiornamenti, dovrebbe apparire come:

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

... e c'è la tua lista di pacchetti, ordinati per data, metodo e azione (installa / aggiorna / rimuovi). Nota che se vuoi restituire questi pacchetti a apt-get remove ...:

  • Come accennato , questo rimuove completamente i pacchetti anziché ripristinarli. Le informazioni nei registri potrebbero certamente essere utilizzate per esaminare i pacchetti aggiornati, anche se il loro rollback è un'altra questione.
  • Dovrai eliminare le parentesi, il loro contenuto e il separatore di virgole dall'elenco tramite il tuo metodo preferito di manipolazione del testo (ad esempio sed, vimecc.). Quindi, se volessi rimuovere i pacchetti nello snippet sopra, posso usare la linea relativamente direttamente:

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

Registro terminale

Generalmente /var/log/apt/term.logè meno convenientemente strutturato ma, per completezza, è possibile ottenere le stesse informazioni. L'output del terminale è nuovamente delimitato da timestamp e le installazioni dei pacchetti possono essere ottenute da righe nel seguente formato:

Selecting previously unselected package nautilus-dropbox.

Di seguito è riportato un modo per stampare un elenco di pacchetti installati sul terminale per l'intero registro:

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

Questo può essere adattato o esteso per ottenere installazioni in un intervallo di date.


1
Se questo può rendere più facile la vita di qualcuno, ecco la sed snippet ho usato per rimuovere le parentesi e le virgole dal pacchetto /var/log/apt/history.log elencato in modo che io potessi mangiare a apt-get remove: sed 's/ ([^)]*)//g' | sed 's/,//g').
Apteryx,

4

Nota: a differenza di Windows, la rimozione di un aggiornamento in Ubuntu normalmente disinstallerà quel pacchetto / programma e non lo ripristinerà (o eseguirà il downgrade) alla versione precedente.

Puoi aprire Ubuntu Software Center e fare clic su Cronologia

inserisci qui la descrizione dell'immagine

Una volta fatto questo, fai clic su aggiornamenti e questo ti mostrerà tutti gli aggiornamenti installati sul tuo sistema. Dopo aver scoperto gli aggiornamenti che è necessario rimuovere, è necessario farlo manualmente.

inserisci qui la descrizione dell'immagine

Per rimuovere, è possibile utilizzare Synaptic Package Manager. Se non lo hai installato, puoi installarlo da


grazie. Ci sono dei comandi sul terminale per farlo?
creativo il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.