Ich möchte die Updates meines Linux-Systems auf ähnliche Weise wie Git verwalten , indem ich mich innerhalb von "Revisionen" vor- und zurückbewegen kann. Wie könnte ich das machen?
Ich möchte die Updates meines Linux-Systems auf ähnliche Weise wie Git verwalten , indem ich mich innerhalb von "Revisionen" vor- und zurückbewegen kann. Wie könnte ich das machen?
Antworten:
Sie sollten sich wahrscheinlich NixOS ansehen , das den Nix-Paketmanager verwendet .
NixOS ist eine GNU / Linux-Distribution, die den Stand der Technik im Systemkonfigurationsmanagement verbessern soll. In vorhandenen Distributionen sind Aktionen wie Upgrades gefährlich: Das Upgrade eines Pakets kann dazu führen, dass andere Pakete beschädigt werden. Das Upgrade eines gesamten Systems ist weitaus weniger zuverlässig als eine Neuinstallation von Grund auf. Sie können Änderungen am System usw. nicht einfach rückgängig machen.
Was Sie wahrscheinlich suchen, werden Konfigurationsmanagement-Tools genannt . Es gibt mehrere zur Auswahl, aber es ist sehr subjektiv, welches in jeder Situation am besten ist.
Ich persönlich fand Puppet ziemlich einfach, aber andere beliebte Optionen sind Salt und Ansible .
Dies ist wahrscheinlich zu viel für Ihre Frage, aber der einfachste Weg, um Änderungen auf Systemebene rückgängig zu machen, ist der Schnappschuss:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
Sie haben die Besonderheiten Ihres Rigs nicht erwähnt, aber da Sie mit Git vertraut sind, wäre es nicht allzu schwierig, sich vorzustellen, dass Sie an einem komplexeren Dateisystem interessiert sein könnten. Wenn Sie ein Dateisystem der nächsten Generation verwenden (ignorieren Sie den Click-Bait-Y-Namen), können Sie Ihr gesamtes System mit einem einfachen Befehl "zurückspulen", der in Ihr Terminal eingegeben wird. Alle vorgenommenen Änderungen würden mit sehr geringer Verzögerung / Mühe rückgängig gemacht. ZFS ist die beste Wahl, und Sie können in diesem erstaunlichen Ars-Artikel nachlesen, ob es sich für Sie lohnt (es gibt auch viele, viele andere großartige Funktionen):
Je nachdem, was Sie unter "Updates" verstehen , interessieren Sie sich möglicherweise für Konfigurationsverwaltungstools wie " etckeeper" , mit denen Sie Änderungen an der Systemkonfiguration automatisch aufzeichnen und zu früheren Konfigurationen zurückkehren können.
Wenn Git ein bekanntes Tool ist und Sie unter "Updates" "Updates für die Systemkonfiguration" und nicht "Updates für Systempakete" oder "Updates für alle auf dem Server gespeicherten Dateien" verstehen, ist dies möglicherweise das, wonach Sie suchen zum.
Unabhängig davon, ob Sie Tools wie Puppet, Ansible, Etckeeper usw. verwenden, ist es nicht immer möglich, einen sauberen Rollback ohne Datenverlust durchzuführen, es sei denn, Sie machen den gesamten Vorgang (z. B. Schnappschuss, wie in einer anderen Antwort erwähnt). Die richtige Vorgehensweise hängt von Ihrer Situation ab (z. B. wäre das Erstellen von Snapshots für ein Produktionssystem nicht geeignet, in dem Sie beim Zurücksetzen möglicherweise Kundenaufträge verlieren).
Ich habe in der Vergangenheit OpenVMS verwendet , es wird standardmäßig mit einem Versionsdateisystem geliefert .
Wenn Tools wie Puppet nicht weit genug gehen, ist eine Versionierung von Dateisystemen vielleicht das, wonach Sie suchen.
Wenn Sie wirklich Ihr gesamtes System (einschließlich der Kernel-Version) wie Git verwalten möchten, suchen Sie nach NixOS .
Für eine weniger komplizierte Version können Sie den Paketmanager von NixOS, nix, von fast jedem Unix aus verwenden. Nix kann als einfacher Benutzer installiert werden, es ist jedoch einfacher, es als root zu installieren. Sobald nix installiert ist, können Sie damit Pakete als nicht privilegierter Benutzer installieren und es wird problemlos mit Ihrem vorhandenen Paketmanager ausgeführt, ohne dass Konflikte auftreten. Es ist auch sehr einfach, nix vollständig von Ihrem System zu entfernen. Es gibt also keine Entschuldigung, es nicht auszuprobieren. ;-)
Um Ihre Frage direkt zu beantworten, definiert Nix Ihr gesamtes installiertes System als eine Umgebung, die ähnlich wie ein Git-Commit einen Zeiger auf eine Reihe von Zeigern auf sehr spezifische Versionen aller installierten Pakete darstellt.
Wenn Nix ein Paket aktualisiert, wird eine neue Umgebung erstellt, die auf einen neuen Satz von Zeigern auf Pakete verweist (meist auf vorhandene, für Pakete, die nicht aktualisiert wurden). Dies ähnelt wiederum einem neuen git-Commit, das meistens verwendet wird verweist auf vorherige unveränderte Dateien und einige neue Versionen geänderter Dateien).
Es ist natürlich trivial, zu einer früheren Version der Umgebung zu wechseln und, wie ich glaube, eine Verzweigung (dh eine neue Umgebung zu erstellen, die auf einer älteren als der letzten basiert). Eine Umgebung kann für eine bestimmte Shell geladen werden (es handelt sich tatsächlich um den Satz von Umgebungsvariablen, die für eine Shell verfügbar sind, daher der Name), sodass Sie auch ganz einfach verschiedene Umgebungen für verschiedene Projekte auf demselben Computer haben können. Keine Abhängigkeitsprobleme mehr, da ein nicht verwandtes Projekt eine andere Version einer Bibliothek benötigt!
NixOS bringt das auf die nächste Ebene und verwaltet Ihren gesamten Computer, einschließlich des Kernels, auf ähnliche Weise, sodass Upgrades des gesamten Computers mit sehr geringem Risiko möglich sind.
Ich habe noch nicht alle gelesen, aber ich empfehle Lethalman's Nix Pillen als Einführung in Nix.
Wenn Sie der experimentelle Typ sind, können Sie versuchen, einfach Ihr gesamtes Dateisystem in ein lokales Git-Repository einzuchecken. Das wäre ... interessant, denke ich.
git init
im Stammverzeichnis /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
oder ähnliches hinzuEinige Vorteile wären:
gitk
undgit diff
Einige Kuriositäten könnten sein:
git
Ich hoffe, Sie arbeiten wie erwartet, wenn Sie sich in einem Quellcodeverzeichnis befinden, das im Stammcontainer verschachtelt ist git
.