Gibt es eine Möglichkeit, das letzte Upgrade zurückzusetzen?

54

Dies ist mir in den letzten 5 Jahren oft passiert: Ein Upgrade hat mein System beschädigt. Jedes Mal, wenn ich in diese Situation gerate, muss ich das gesamte System neu installieren, was wirklich ärgerlich ist.

Gibt es eine Möglichkeit, ein Rollback des letzten Upgrades durchzuführen, um ein funktionsfähiges System ohne Neuinstallation zu erhalten? Wenn nicht, welcher Weg ist der beste, um dies als Idee mit höchster Priorität vorzuschlagen?

Ich habe gelesen, dass diese Idee in brainstorm.ubuntu.com beschrieben wurde, aber es fühlt sich tot an ... und die Foren sind voller Beispiele für Upgrades, die Dinge kaputt machen. Aus diesem Grund muss etwas in Bezug auf dieses Thema unternommen werden. Vielen Dank!

Marcelo Ruiz
quelle
17
Ich melde mich an, um über diese Frage abzustimmen. Das Fehlen eines kohärenten Rollback-Tools in einem 2011 Desktop-Betriebssystem ist erbärmlich. Windows hatte vor über 5 Jahren die Systemwiederherstellung , das ist ein langer Weg hinter der Kurve. Die Benutzer wurden ( korrekt ) für die Installation von Sicherheitsupdates geschult, aber wir werden ständig dafür bestraft, dass Treiber ausgefallen sind.
Gates VP
@GatesVP Dieser Punkt, den du vor über 8 Jahren gemacht hast, plagt immer noch Ubuntu (kann nicht für andere Distributionen sprechen, aber sie sind wahrscheinlich nicht besser). Ich finde das total frustrierend. Jemand sollte Ihre Wörter in 64-Punkt-Schrift drucken lassen und sich vor jedem Neuling aufhalten, der in die Welt von Linux eintauchen möchte.
HoraceT
Ich muss zustimmen, dass ein Backup-Image der richtige Weg ist. Es wird nicht angegeben, ob es sich um ein Produktionssystem handelt. Wenn es möglich und machbar ist, ein Klontestsystem zu haben, ist dies mit Imagesicherung der richtige Weg. Wenn es sich nur um ein App-Update handelt, besteht die schnellste Lösung darin, ein Downgrade mit oder ohne Force-Option durchzuführen.
JHPArizona

Antworten:

14

In synaptics können Sie zumindest steuern, was die letzten Aktualisierungen waren: Datei-Menü, Verlauf.

(wenn synaptic startbar ist, mit dem kaputten System). Mit dem Befehl apt -...- sollte es also nicht allzu schwierig sein, das Update zurückzusetzen.

Ich denke, es gibt auch einen History-Befehl für die Kommandozeile.

Möglicherweise müssen Sie das gesamte Paket löschen und eine bestimmte Version installieren. Afaik, es ist möglich, eine bestimmte Version zu installieren, aber ich hatte nie die Notwendigkeit, dies zu tun.

Update: Nachgeschlagen, wie man mit apt umgeht:

In den letzten 3x24h installierte Pakete suchen:

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

Mit der apt-cache-Richtlinie sehen Sie verfügbare Versionen eines Programms:

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

hier 3.6.7 und 3.6.3. Jetzt wissen Sie, welche frühere Version möglicherweise installiert ist (häufig nicht die unmittelbare Vorgängerversion):

sudo apt-get install PROGRAM=3.6.3

Dann müssen Sie ein Apt-Pinning durchführen, um zukünftige Updates zu verhindern:

Erstellen Sie eine neue Datei in /etc/apt/preferences.d/ (if> = 10.4), die nach Ihrem Programm benannt ist.

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000
Benutzer unbekannt
quelle
Danke an alle für die Infos. Ich kann es kaum erwarten, dass Ubuntu ZFS aus der Box verwaltet!
Marcelo Ruiz
Es tut mir leid - was hat das mit zfs zu tun? Verwaltet zfs Rollbacks? Oder brechen die Updates Ihre zfs-Installation? Oder bricht das zfs-update etwas?
Benutzer unbekannt
Was ist, wenn die Version 1.0.2g-1ubuntu4.12laut Apt ist? Es lehnt jedoch ab, dies als Versionsnummer zu akzeptieren. Ich möchte ein Downgrade 1.0.2g-1ubuntu4.13auf1.0.2g-1ubuntu4.12
Csaba Toth
danke aber suuuuuuuuuuuuch ein schmerz. Bei meinem letzten Update, bei dem der Controller-Eingang vollständig zerstört wurde und genau 80 Pakete aufgeführt sind, find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' ist es weniger
mühsam,
7

Meistens können Sie sich /var/log/apt/history.logüber Änderungen informieren, die von apt / synaptic vorgenommen wurden. Es ist nur ein bisschen forensisch und viel zu tun.

Gehen Sie zurück zu dem Datum, an dem Ihr System noch einwandfrei funktionierte.

Nehmen Sie zuerst alle Pakete, die seitdem installiert wurden, und fügen Sie sie in einem Deinstallationsskript zusammen. Wenn das Skript beendet ist, fügen Sie alle entfernten Pakete erneut hinzu.

Ein Beispielfall:
Logdatei:

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

du kannst sehen,

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

wurde von Synaptic installiert. wurde libfglrx:amd64von Synaptic entfernt.

Wir sind in umgekehrter Reihenfolge vorgegangen, also entfernen wir zuerst die neu installierten Pakete und fügen die entfernten Pakete erneut hinzu.

Ein funktionierender Befehl für diesen Fall könnte folgendermaßen aussehen:

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

Vielleicht wäre es nicht die beste Idee, auf den -ySwitch zu verzichten - um mehr Kontrolle über den Prozess zu haben (um kaputte Abhängigkeiten zu vermeiden). Die meisten von euch würden sich nicht den Finger brechen, wenn sie ein paar Überprüfungen "y" machen.

In den meisten Fällen ist ein Rollback auf diese Weise möglich, aber wenn Abhängigkeiten bereits unterbrochen sind, können Sie auf ein noch größeres Problem stoßen.

Matt
quelle
6

Die meiste Zeit, wenn Ihr System kaputt ist, ist es ein Kernel- Problem.

Starten Sie einfach einen älteren Kernel und installieren Sie die neuesten Pakete (insbesondere die Kernelpakete) neu, die möglicherweise nicht korrekt aktualisiert wurden. Einige Anmerkungen:

/var/log/dpkg.log

Ist Ihr Freund zu überprüfen, was die Liste der kürzlich aktualisierten / installierten Pakete ist

sudo apt-get -f install

kann die meiste Zeit halb installierte Pakete reparieren

Giordano Battilana
quelle
4

Leider ist dies noch nicht möglich. Snapshot / Rollback auf Dateisystemebene ist eine der Funktionen des kommenden BTRFS, es gibt jedoch noch Möglichkeiten, die Funktionen vollständig und stabil genug zu machen, um sie als Standarddateisystem zu verwenden.

Psusi
quelle
1
Für Dateisystem-Snapshots können Sie stattdessen LVM mit ext3 oder ext4 verwenden.
Flimm,
@Flimm, jetzt können Sie, obwohl es nicht sehr gut funktioniert und erfordert, dass Sie LVM einrichten, wenn Sie in erster Linie installieren.
Psusi
3

Bei einem größeren Upgrade klone ich die Festplatte mit Clonezilla . Brennen Sie es auf eine CD, halten Sie eine (externe) Ersatzfestplatte bereit und befolgen Sie die Anweisungen auf der Clonezilla LiveCD. Wählen Sie den partition-imageModus, der am wenigsten Platz beansprucht.

Wenn Sie der Meinung sind, dass Sie Ihr System beschädigt haben (oder Änderungen rückgängig machen möchten), starten Sie einfach die Clonezilla LiveCD, wählen Sie das Image auf Ihrer (externen) Festplatte aus und stellen Sie es wieder her. Da diese Bilder eine wörtliche Kopie jedes Bits auf Ihrer Festplatte sind, kann dies abhängig von Ihrer Festplatten- und Verbindungsgeschwindigkeit (der Verbindung zwischen den Daten, normalerweise einer externen USB-Festplatte, und dem Computer) einige Stunden dauern.

Dies wird übrigens als Sicherungsmethode bezeichnet.

Lekensteyn
quelle
3

Sie können problemlos eine ältere Version eines bestimmten Pakets (Downgrade) mit apt oder dpkg installieren . Die Suche nach einer älteren Version des Pakets ist das Problem, da diese häufig aus dem Pool verschwinden und beim Einspielen von Updates gespiegelt werden.

Wenn Sie das Paket von einer Installations-CD, einem veralteten Spiegel oder einem Cache installieren, müssen Sie es auch auf der alten Version belassen, damit es erst aktualisiert wird, wenn Sie dies zulassen. Das heißt, Sie müssen nach Updates suchen und diese testen, bis Ihr Problem behoben ist. Dies ist natürlich ein Problem, da Sie in der Zwischenzeit (möglicherweise für immer) mit dem nicht festgelegten, möglicherweise unsicheren Paket zurückbleiben. Das bedeutet, dass jeder Benutzer mit einem Systemproblem in einem zufälligen Zustand verbleibt, bis er es beheben kann.

Jede Software ist auch nicht vorwärtskompatibel, daher verhält sich eine ältere Version von etwas möglicherweise nicht richtig, wenn sie mit neueren Konfigurations- oder Datendateien gespeist wird. Offensichtlich ist dies nur zu lösen, wenn Sie auch alle Benutzerdaten in einen Zustand zurückversetzen, bevor das Upgrade durchgeführt wurde.

Es wäre toll, wenn es einen Weg gäbe, dies zu tun, aber es ist massiv problematisch. Wer glaubt, dass es eine kohärente Lösung gibt, sollte einen Vorschlag schreiben und Kommentare einladen oder noch besser eine Proof-of-Concept-Lösung (Code, Skript, Dokument) erstellen. Trolling und Jammern ist nicht konstruktiv.

Da es keine saubere technische Lösung gibt, wird die meiste Software mit der Mentalität "der einzige Weg ist vorwärts" entwickelt (und integriert). Der Versuch, veraltete Versionen zu verwalten, ist Zeitverschwendung. Gefundene Probleme werden in neueren Versionen so schnell wie möglich behoben. Als kleinere Lösung würde ich gerne ein Archiv früherer Paketversionen sehen, das gelegentlich zur vorübergehenden Behebung aufbewahrt wird.

In der Zwischenzeit können Sie Fehler melden und erwarten, dass die neueste Software niemals ausfällt. Ein gefundener Fix sollte im nächsten Update enthalten sein. Entwickler sind (meistens) Menschen und daher fehlbar. Computer sind fummelig und voller verrückter Abwechslung und Details. Defensiv gewartete Systeme, die gut unterstützte Komponenten und eine stabile integrierte Softwareverteilung verwenden, können sehr stabil sein, ohne dass sie unsicher werden oder trotzdem nicht aufgerüstet werden können.

XTL
quelle