Gibt es ein Tool oder sogar eine gesamte Distribution, die das Zurücksetzen geänderter Pakete nach einem Update unterstützt?
Als Beispiel: Ich habe die Pakete A, B und C aktualisiert. Nachdem ich einige Tage mit diesen Paketen gearbeitet habe, stoße ich auf einen Fehler in B, der einen Deal bricht.
Während ich einen Fehlerbericht einreiche, muss ich auch B auf die vorherige Version zurückstufen, damit ich meine geplanten Aufgaben abschließen kann. Während A von B abhängig ist, muss es ebenfalls herabgestuft werden, aber C ist von beiden unabhängig, sodass es bei seiner aktuellen Version bleiben kann.
Gibt es ein Tool oder eine Distribution, die dies unterstützt?
Ich weiß, dass die meisten Distributionen die Möglichkeit haben, ein Paket zu downgraden, aber das ist normalerweise etwas skizzenhaft oder gar nicht möglich, da das vorherige Paket aus den Repositorys entfernt wurde und es in einigen Fällen (zum Beispiel nach dem Upgrade des X-Servers und von Mesa) wirklich zu Problemen kommt. unordentlich.
quelle
Antworten:
NixOS unterstützt Upgrade-Rollbacks, obwohl es meines Wissens nicht ganz so weit geht, wie Sie möchten: Wenn Sie A, B und C in einem Vorgang aktualisieren, können Sie den gesamten Vorgang zurücksetzen, aber nicht nur A und B. (Sie sollten in der Lage sein, A, B und C rückgängig zu machen und dann C zu aktualisieren ...) Aus transaktioneller Sicht ist dies jedoch sinnvoll.
Debian (in Kombination mit dem Snapshot-Archiv, wenn Sie nicht mehr über die alten Pakete verfügen) ermöglicht Ihnen das Downgrade von B, und Tools wie
apt
oderaptitude
werden in vielen Fällen feststellen, dass auch A heruntergestuft werden muss (sobald Sie sie davon überzeugt haben) Ich möchte nicht einfach ein Upgrade durchführen. B). Aber wie Sie sagen, ist das etwas chaotisch und Paket-Downgrades werden in Debian sowieso nicht unterstützt (was bedeutet, dass sie die meiste Zeit funktionieren, aber wenn sie kaputt gehen, ist es kein Fehler).quelle
nix-env
, sondern geben Dinge in anconfiguration.nix
und führen sie dann ausnixos-rebuild switch
. Dies hat den Vorteil, dass sich die gesamte Systemkonfiguration an einem Ort befindet und die gesamte Systemkonfiguration leicht gesichert werden kann (sichern Sie einfach dieconfiguration.nix
Datei).Auf jeder
yum
basierten Distribution (z. B. Red Hat EL , CentOS usw.) können Sie:Untersuchen Sie den Verlauf von Systemänderungen mit
sudo yum history list
Überprüfen Sie die Details mit
sudo yum history info 10
sudo yum history rollback 9
Warnung
Es gibt einige offensichtliche Einschränkungen:
In meinem Beispiel bedeutet dies, dass ich
<
in der Zeile mit der ID4
(in der letzten Spalte) kein Rollback über diesen Punkt durchführen kann.quelle
--enablerepo
Repositorys durchaus praktikabel, da Sie immer über die alten Pakete verfügen, auch wenn Sie ein Flag verwenden müssen, um ein ansonsten nicht mehr verwendetes altes Repository für das Downgrade zu aktivieren.yum
einfach um die Liste der installierten Pakete und Versionen und prüft auf Abhängigkeiten, wenn alte Versionen erneut installiert werden . Natürlich können Sie es von Hand machen .Unter OpenSUSE können Sie Snapper problemlos mit dem Btrfs-Dateisystem verwenden .
Wenn Sie während der Installation die Standard- Dateisystemkonfiguration verwenden, ist diese standardmäßig aktiviert .
Sobald Snapper aktiviert ist, wird es vollständig integriert mit
yast2
undzypper
. Jedes Mal, wenn Sie etwas installieren oder aktualisieren (oder einen Benutzer erstellen usw.), wird ein Dateisystem-Snapshot erstellt.Um das System auf einen früheren Zustand zurückzusetzen, müssen Sie nur ausführen
yast2 snapper
.quelle
/var
sodass/
ein Rollback durchgeführt werden muss, auch wenn es sich um ein separates fs oder Subvolume handelt. Es ist viel besser, gründlich ein Upgrade zu testen , bevor sie auf Produktionsserver Anwendung als zu verlassen sich auf Funktionen wie OS - Rollback - Upgrade (was trivial einfach ist in einer Halb arsed Weise zu tun , sondern ist ein äußerst schwieriges Problem zu lösen richtig )./home
es sich in einem separaten Dateisystem befindet , das kein Snapshot ist .AIX ist sehr gut darin, Updates zurückzusetzen. Nun - wir sind auf der Unix / Linux-Site und Sie haben nie angegeben, dass Sie Linux wollen :)
Jedes einzelne AIX-Update speichert alle geänderten Dateien in einem separaten Unterverzeichnis im Dateisystem / var. Das Update kann mit einem einfachen nativen Befehl rückgängig gemacht werden, und die revert nicht das Netz sein muß , bis es nicht braucht keine Medien / packages, es nicht wieder installieren nichts und es hängt nicht von irgend Snapshot-Technologie - der Effekt ist einfach, dass die Dateien wieder so angezeigt werden, wie sie vor dem Update waren.
Als Bonus gibt es einen einfachen nativen Befehl
mksysb
zum Erstellen einer bootfähigen eigenständigen Systemsicherung. Die Datei, die einfach auf einem vollständig funktionsgestörten System gestartet werden kann, das aufgrund einer Fehlfunktion / Beschädigung nicht startet.Und es ist alles bewährte Technologie mit jahrzehntelanger Geschichte :)
quelle
In Fedora (und ich bin mir sicher auch in anderen Distributionen) können Sie darum bitten, zu einer früheren Version zurückzukehren:
Sie erhalten die vorletzte Version der Pakete, und Sie können nach einer bestimmten Version fragen, indem Sie:
Dies funktioniert nur, wenn die Pakete noch in den Repositorys verfügbar sind. Die Funktionalität ist in keiner Weise unerhört. Es hat seine Nachteile, wenn ein Teil des Upgrades darin bestand, Konfigurationen zu ändern, wird das Rollback nicht unbedingt genau auf die frühere Version zurückgesetzt.
quelle
This only works if the package(s) are still available in the repositories.
Ja, das ist genau das Problem. Ich bin ein bisschen überrascht, dass es dafür keine "umfassendere" Lösung zu geben scheint, insbesondere bei der Menge der Rolling-Release-Distributionen. Ab sofort scheint NixOS meine beste Option zu sein, oder ich benötige eine Art System-Imaging-Tool, das nur Unterschiede bearbeitet und das System zu einem bestimmten Zeitpunkt in den letzten 20 (?) Aktualisierungen wiederherstellen kann.Arch Linux unterstützt auch das Downgrade von Paketen und des Kernels. Sie können auch die Tools
downgrader
und installierendowngrade
, um den Prozess zu automatisieren. Die btrfs-Lösung funktioniert auch, ich habe sie zuvor verwendet, um ein manuelles Rollback durchzuführen.So mache ich ein Rollback meines Systems:
Ein Vorteil von btrfs ist, dass Sie Subvolumes und dynamische "Partitionen" verwenden können. Zum Beispiel habe ich ein Subvolume für / (mit dem Namen @), / tmp (@tmp) und / home (@home). Es ist dann einfach, diese zu sichern und zurückzusetzen. Ich habe / tmp in einem separaten Subvolume, weil das Sichern mit dem Rest des Systems sinnlos erscheint, da es bei fast jedem Neustart gelöscht wird.
quelle
Ich verwende Arch Linux und es speichert alle heruntergeladenen Pakete,
/var/cache/pacman/pkg/
so dass Sie jedes Paket jederzeit downgraden können (wenn Sie nicht booten können, verwenden Sie einen Live-USB). Aus Arch Wiki :Um zu verhindern, dass ein Upgrade des Pakets durchgeführt wird, geben Sie den Paketnamen
/etc/pacman.conf
wie folgt ein:Um Platz zu sparen, können Sie den Cache-Ordner löschen mit:
Damit werden alle älteren Pakete gelöscht und das neueste beibehalten, oder es wird verwendet
-Scc
, um alle zu entfernen.quelle