Esiste un modo per ripristinare l'aggiornamento più recente?


55

Questo mi è successo molte volte negli ultimi 5 anni: un aggiornamento ha rotto il mio sistema. Ogni volta che finisco con questa situazione, devo reinstallare l'intero sistema, il che è davvero fastidioso.

Esiste un modo per ripristinare l'aggiornamento più recente per poter disporre di un sistema funzionale senza reinstallare? In caso contrario, qual è il modo migliore per suggerirlo come idea prioritaria?

Ho letto che questa idea è stata descritta in brainstorm.ubuntu.com, ma sembra che sia morta ... e i forum sono pieni di esempi di aggiornamenti che rompono le cose, ecco perché sento che bisogna fare qualcosa su questo argomento. Grazie!


17
Eseguo l'accesso solo per votare questa domanda. La mancanza di uno strumento di rollback coerente in un sistema operativo desktop 2011 è patetica. Windows ha avuto Ripristino configurazione di sistema 5+ anni fa, che è molto indietro rispetto alla curva. Gli utenti sono stati ( correttamente ) addestrati per installare gli aggiornamenti di sicurezza, ma siamo costantemente puniti per aver fallito i driver.
Gates VP

@GatesVP Questo punto che hai fatto più di 8 anni fa sta ancora affliggendo Ubuntu (non posso parlare per altre distro ma probabilmente non sono migliori). Lo trovo totalmente frustrante. Qualcuno dovrebbe avere le tue parole stampate in caratteri a 64 pt e appendere di fronte a ogni novizio che sta per immergersi nel mondo di Linux.
horaceT

Devo concordare che un'immagine di backup è la strada da percorrere. Non si afferma se si tratta di un sistema di "produzione". Se è ed è fattibile avere un sistema di test del clone, allora quello con il backup delle immagini è la strada da percorrere. Se si tratta solo di un aggiornamento dell'app, la soluzione più rapida è eseguire il downgrade con o senza un'opzione 'force'.
JHPArizona,

Risposte:


14

In synaptics, puoi almeno controllare quali sono stati gli aggiornamenti recenti: menu File, cronologia.

(se sinaptico è avviabile, con il sistema rotto). Quindi, con un comando apt -...-, per ripristinare il loro aggiornamento, non dovrebbe essere troppo difficile.

Immagino che ci sia un comando history anche per la riga di comando.

Forse devi eliminare l'intero pacchetto e installare una versione specifica. Dopo tutto, è possibile installare una versione specifica, ma non ho mai avuto la necessità di farlo.

aggiornamento: ho cercato come fare con apt:

Trova i pacchetti installati nelle ultime 3x24h:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

Con la politica di apt-cache, vedi le versioni disponibili di un programma:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

qui 3.6.7 e 3.6.3. Ora sai quale versione precedente potrebbe essere installata (spesso non il predecessore immediato):

sudo apt-get install PROGRAM=3.6.3

Quindi è necessario eseguire un'app-pin per impedire futuri aggiornamenti:

Crea un nuovo file in /etc/apt/preferences.d/ (if> = 10.4) che prende il nome dal tuo programma,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000

Grazie a tutti per le informazioni. Non vedo l'ora che Ubuntu gestisca immediatamente zfs!
Marcelo Ruiz,

Mi dispiace: cosa c'entra con zfs? Zfs gestisce i rollback? O gli aggiornamenti interrompono l'installazione di zfs? O l'aggiornamento zfs rompe qualcosa?
utente sconosciuto

Cosa succede se la versione è 1.0.2g-1ubuntu4.12conforme a apt? Si rifiuta di accettarlo come numero di versione. Voglio effettuare il downgrade del modulo 1.0.2g-1ubuntu4.13a1.0.2g-1ubuntu4.12
Csaba Toth,

grazie, suuuuuuuuuuuuuch comunque un dolore. il mio ultimo aggiornamento che ha distrutto completamente l'input del controller ha esattamente 80 pacchetti elencati find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' a questo punto, è meno complicato reinstallare il mio intero sistema
tatsu,

7

Principalmente puoi consultare le /var/log/apt/history.logmodifiche apportate da apt / synaptic. È solo un po 'forense e un sacco di taglia / incolla da fare.

Torna alla data in cui il tuo sistema funzionava ancora bene.

Prima prendi tutti i pacchetti che sono stati installati da allora e mettili insieme in uno script di disinstallazione. Al termine dello script, iniziare ad aggiungere nuovamente tutti i pacchetti rimossi.

Un esempio:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

Puoi vedere,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

installato da Synaptic. come se fosse libfglrx:amd64stato rimosso da Synaptic.

Abbiamo eseguito l'ordine inverso, quindi prima rimuoviamo i pacchetti appena installati e aggiungiamo nuovamente i pacchetti rimossi.

Un comando funzionante per questo caso potrebbe apparire come:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

Forse non sarebbe la migliore idea di andare senza l' -yinterruttore - per avere un maggiore controllo sul processo (per evitare dipendenze interrotte). Molti di voi non si rompono il dito mentre fanno qualche verifica "y"

Nella maggior parte dei casi è possibile un rollback in questo modo, ma se le dipendenze sono già interrotte, è possibile che si verifichi un problema ancora più grande.


6

Il più delle volte se il tuo sistema è guasto, si tratta di un problema del kernel .

È sufficiente avviare un kernel più vecchio e reinstallare i pacchetti più recenti (in particolare i pacchetti del kernel) che probabilmente non si sono aggiornati correttamente. Alcune note:

/var/log/dpkg.log

è tuo amico per verificare qual è l'elenco dei pacchetti aggiornati / installati di recente

sudo apt-get -f install

la maggior parte delle volte può riparare pacchetti installati a metà


4

Sfortunatamente non c'è ancora modo di farlo. L'istantanea / rollback a livello di filesystem è una delle caratteristiche del prossimo btrfs, ma ha ancora dei modi per diventare una funzionalità completa e abbastanza stabile da usare come filesystem predefinito.


1
Per le istantanee del file system, è possibile utilizzare LVM invece con ext3 o ext4.
Flimm,

@Flimm, ora puoi farlo, anche se non funziona molto bene e richiede di impostare LVM al momento dell'installazione.
psusi,

3

Quando eseguo un aggiornamento importante, clonerò il disco usando Clonezilla . Masterizzalo su un CD, disponi di un HDD (esterno) di riserva e segui le istruzioni sul LiveCD di Clonezilla. Scegli la partition-imagemodalità, questa utilizza il minimo spazio.

Se ritieni di aver rotto il tuo sistema (o desideri annullare qualsiasi modifica), avvia semplicemente il LiveCD Clonezilla, seleziona l'immagine sul tuo HDD (esterno) e ripristinalo. Poiché queste immagini sono una copia letterale di ogni bit sul disco, potrebbero essere necessarie alcune ore a seconda della velocità del disco e della velocità di connessione (la connessione tra i dati, di solito un HDD USB esterno e il computer).

A proposito, questo si chiama metodo di backup.


3

È possibile installare facilmente una versione precedente di un determinato pacchetto (downgrade) con apt o dpkg . Trovare una versione precedente del pacchetto è il problema in quanto spesso scompaiono dal pool e dai mirror man mano che arrivano gli aggiornamenti.

Se installi il pacchetto da un CD di installazione o da un mirror obsoleto o da una cache, dovrai anche tenerlo bloccato sulla versione precedente in modo che non venga aggiornato fino a quando non lo consenti. Ciò significa che devi cercare gli aggiornamenti e testarli fino a quando il problema non viene risolto. Questo è ovviamente un problema poiché nel frattempo (forse per sempre) rimarrai con il pacchetto non fissato, forse insicuro. Ciò significa che ogni utente con qualche tipo di problema di sistema verrà lasciato in uno stato casuale fino a quando non sarà in grado di risolverlo.

Inoltre, tutto il software non è compatibile in avanti, quindi una versione precedente di qualcosa potrebbe non funzionare correttamente se alimentata con file di dati o configurazione più recenti. Ovviamente questo è impossibile da risolvere a meno che non si ripristini anche tutti i dati utente a uno stato prima che l'aggiornamento fosse eseguito.

Sarebbe bello se ci fosse un modo per farlo, ma è enormemente problematico. Chiunque pensi che esista una soluzione coerente dovrebbe scrivere una proposta e invitare commenti o, meglio ancora, fare una soluzione di prova del concetto (codice, script, documento). Trollare e piagnucolare non è costruttivo.

Poiché non esiste una soluzione tecnica pulita, la maggior parte dei software è sviluppata (e integrata) con una mentalità "l'unica via è avanti". Cercare di gestire versioni obsolete è una perdita di tempo per tutti. I problemi riscontrati vengono risolti al più presto nelle versioni più recenti. Come soluzione minore, vorrei vedere un archivio delle precedenti versioni del pacchetto tenuto da qualche parte per la soluzione temporanea occasionale.

Nel frattempo puoi segnalare bug e non aspettarti che il software bleeding edge non fallisca mai. Una correzione, una volta trovata, dovrebbe essere nel prossimo aggiornamento. Gli sviluppatori sono umani (per lo più) e quindi fallibili. I computer sono complicati e pieni di varietà e dettagli folli. I sistemi di manutenzione difensiva che utilizzano componenti ben supportati e una distribuzione software integrata stabile possono essere molto stabili senza diventare insicuri o non aggiornabili.

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.