OpenZFS und Btrfs können Schnappschüsse eines Dateisystems erzeugen. Doch das ist nicht der einzige Weg, um mit Software zu spielen: Wir zeigen Ihnen, welche Möglichkeiten es gibt.
Es macht Spaß, freie Software auszuprobieren. Die Paketverwaltungen, die in den unterschiedlichen Distributionen zum Einsatz kommen, sind mittlerweile so weit ausgefeilt. Was Sie darüber installieren, bekommen Sie in der Regel auch wieder problemlos von der Platte oder SSD gekratzt, ohne dass Rückstände bleiben.
In der Regel – das heißt aber auch: Es klappt nicht immer. Schlägt der Hausputz fehl, wird das schnell zum Ärgernis. Die Rückkehr zum ursprünglichen Systemzustand vor dem Ausprobieren der Software bedeutet viel Arbeit. Sie müssen zunächst herausfinden, was sich wo geändert hat.
Verwaiste Software (“Paketwaisen”) lässt sich dabei noch relativ schnell und problemlos manuell aufspüren und anschließend von der Platte schubsen. Die Paketverwaltung benachrichtigt Sie direkt in Form einer Statusmeldung und bringt dafür auch passende Werkzeuge mit. Dazu zählen unter anderem Deborphan [1] und Debfoster [2] für DEB-basierte Distributionen sowie Rpmorphan [3] für RPM-basierte Systeme [4].
Die Werkzeuge versetzen Sie in die Lage, die Dateien aufzuräumen, die sich im verwaisten Paket befunden haben. Als Basis dafür dient die Liste der Dateien, die das Installationspaket beinhaltet. Bei der Paketinstallation oder während der Benutzung der Software angelegte Dateien kann die Paketverwaltung jedoch nicht erahnen und somit auch nicht wegräumen.
Geänderte Konfigurationsdateien verursachen mitunter noch weitaus mehr Kopfschmerzen, da man nur selten deren vorherigen Zustand kennt. Hier kommt das Werkzeug Etckeeper [5] ins Spiel, auf das wir im Folgenden noch ausführlicher eingehen.
Für eine verpfuschte Softwareinstallation sind manchmal aber auch andere Gründe ausschlaggebend. Möglicherweise zieht eine Software beispielsweise zu viele Abhängigkeiten nach sich, sodass die Platte vollläuft. Hin und wieder schlägt die Einrichtung eines Programms schlicht fehl. Eventuell haben Sie weder Zeit noch Lust für ein komplettes Setup, weil Sie die Software nur ein einziges Mal benötigen: Sie möchten einfach nur schnell eine Aufgabe erledigen, wissen genau, was Sie an Werkzeugen brauchen, und möchten Ihr bestehendes Environment nicht erst komplett umbauen.
Es bleibt die berechtigte Frage, wie man mit neuer Software herumspielen kann, ohne potenziell das System zu beschädigen. Wir besprechen nachfolgend, welche erprobten Wege es gibt, um mit solchen Situationen umzugehen. Anhand von ausgewählten Beispielen zeigen wir, was möglich ist. Betrachten Sie diese Ausführungen bitte als Vorschläge, die Sie noch für Ihre Situation prüfen und anpassen müssen.
Versionieren und Sichern
Eine gute Idee ist es, den aktuellen Zustand des Systems vor einer Veränderung zu sichern. Geht beim nachfolgenden Ausprobieren doch etwas schief, stellen Sie anschließend den alten Zustand problemlos wieder her, indem Sie die Sicherung wieder einspielen.
Hier teilen sich die Softwarelösungen in zwei Kategorien auf: datei- und schnappschussbasiert. Bei der ersten Kategorie landen nur bestehende Dateien, Verzeichnisse und Links in der Sicherung. Bei der zweiten erzeugen Sie eine komplette Kopie eines Dateisystems, einer Partition oder eines Datenträgers samt aller darauf befindlichen Daten. Das umfasst sowohl die aktuellen Daten als auch vorher bereits als gelöscht markierte Einträge.
Unabhängig von der Kategorie erfordern beide Sicherungsvorgänge reichlich Speicherplatz, da die Datenkopien ja irgendwo abgelegt werden müssen. Um die Performance zu maximieren, raten wir Ihnen zu einem separaten Datenträger für Kopien und Schnappschüsse. Für beiden Kategorien gibt es unter Linux zahlreiche passende Anwendungen, von simplen Tools bis hin zu ausgefeilten Lösungen.
Für die Kategorie der dateibasierten Werkzeuge hat Time Machine für MacOS die Messlatte sehr hoch gesetzt. Je nach Nutzerprofil erweist sich die Auswahl eines passenden Pendants für Linux daher als keineswegs trivial. Bei älteren Tools stagniert die Entwicklung oft: Systemback [6] wird seit 2019 nicht mehr weiterentwickelt, ebenso scheint Flyback [7] eingeschlafen zu sein. Zur Verfügung stehen derzeit Déjà Dup [8], Cronopete [9], Back in Time [10], Timeshift [11] und Backuppc [12]. Diesen Werkzeugen widmete sich bereits ein ausführlicher Beitrag [13] in LU 06/2023. In der Regel werkelt unter der Haube Rsync, ein Tool, das Verzeichnisse lokal oder auch über das Netzwerk miteinander synchronisiert.
Mit der Kategorie der schnappschussbasierten Werkzeuge begeben wir uns auf die Ebene der Dateisysteme. Passende Kandidaten sind hier Btrfs [14] und OpenZFS/ZFS on Linux [15], die sich seit etwa 10 Jahren im Paketbestand der gängigen Linux-Distributionen befinden [16]. Damit erzeugen Sie im laufenden Betrieb zuverlässig Schnappschüsse und greifen später wieder darauf zurück. Passende Werkzeuge liefern die Softwarepakete für beide Dateisysteme gleich mit (siehe Tabelle “Snapshot-Werkzeuge”). Ubuntu hat zudem noch die Pakete apt-btrfs-snapshot [17], zfsnap [18] und zfs-auto-snapshot [19] im Angebot.
Verwenden Sie dagegen Ext3, Ext4 oder XFS [20] als Dateisystem, fällt etwas mehr Handarbeit an. Während XFS die beiden Werkzeuge Xfsdump und Xfsrestore mitbringt, verfügen weder Ext3 noch Ext4 von sich aus über passende Snapshot-Werkzeuge. Das Extended File System ist schlicht nicht für den Umgang mit Schnappschüssen ausgelegt. Hier bleibt nur der Griff zum bewährten Dd [21], zum Team aus Dump und Restore [22] oder zu einem glamouröseren Werkzeug wie beispielsweise Clonezilla [23].
|
Dateisystem |
Erstellen |
Wiederherstellen |
|---|---|---|
|
Btrfs |
|
|
|
OpenZFS/ZFS on Linux |
|
|
|
XFS |
|
|
|
Ext3/Ext4 |
Dump, Dd, Clonezilla |
Restore, Dd, Clonezilla |
Noch einen Schritt weiter geht das Erstellen einer Kopie eines gesamten Datenträgers oder Block Devices. Für Ersteres genügen wiederum der Veteran Dd oder Clonezilla. Damit klonen Sie anstandslos einzelne Partitionen und ganze Festplatten. Auch hier benötigen Sie wieder reichlich Speicherplatz für die Kopie. Mit Diffoscope [24] lassen sich zwei Kopien analysieren und die konkreten Unterschiede feststellen. Auf Diffoscope hatten wir bereits im Artikel zu spezialisierten Diff-Werkzeugen in LU 12/2021 einen Blick geworfen [25]. Bitte beachten Sie: Diffoscope benötigt etliche Werkzeuge und Bibliotheken für seine Arbeit, planen Sie für das Tool daher wenigstens 1 GByte Plattenplatz ein.
Liegt unter Ihrem Dateisystem ein Logical Volume Manager (LVM), ermöglicht diese Architektur das Kopieren eines ganzen Block Devices [26], von dessen Inhalt Sie danach eine Sicherheitskopie erstellen [27]. Der Aufruf aus der ersten Zeile von Listing 1 erzeugt einen Schnappschuss namens snapshot mit einer Größe von 1 GByte für das Volume /dev/vg0/data. Nun binden Sie den Schnappschuss ein. Die Zeilen 2 und 3 des Listings erledigen das mithilfe des Einhängepunkts /mnt/schnappschuss. Im nächsten, unspektakulären Schritt erstellen Sie mittels Tar eine Sicherheitskopie (Zeile 4). Der Schalter --atime-preserve sorgt dabei für unveränderte Zugriffszeiten – wichtig bei einem späteren Rollback.
Listing 1
Snapshot mit Lvcreate
# lvcreate -s -L1GB -n snapshot /dev/vg0/data # mkdir /mnt/schnappschuss # mount /dev/vg0/snapshot /mnt/schnappschuss # tar --atime-preserve -czf schnappschuss.tar.gz /mnt/schnappschuss
Geht bei Ihren Experimenten alles glatt, löschen Sie den entstandenen Tarball mit dem Schnappschuss einfach wieder. Falls doch etwas schiefging, spielen Sie das Archiv schnappschuss.tar.gz wieder ein. LVM sorgt dann für die Synchronisierung der Änderungen im Logical Volume snapshot (also dem von Ihnen zurückgespielten Schnappschuss) mit dem Original /dev/vg0/data.
Paketverwaltung
Wie eingangs bereits erwähnt, arbeiten die Paketverwaltungen mittlerweile weitgehend zuverlässig. Welche davon die beste Wahl ist, liegt vielfach im Auge des Betrachters. Weder DEB/Apt noch RPM/Yum oder Pacman beherrschen jedoch ein Rollback, das parallele Installieren mehrerer Versionen eines Pakets oder das Verwenden mehrerer Compiler je nach Architektur. Hier kommen Nix und Spack [28] ins Spiel.
Der Paketmanager Nix gehört nicht zum Mainstream, auch wenn die Ideen dahinter bereits 20 Jahre alt sind. Nix kommt zum Beispiel in den beiden Linux-Distributionen NixOS [29] und GNU Guix System [30] zum Einsatz. Letztere umfasst ausschließlich GNU-Komponenten und greift nicht auf unfreie Software zurück.
NixOS und GNU Guix unterstützen unter anderem transaktionelle Aktualisierungen und Rücksetzungen, eine Paketverwaltung für Nutzer ohne besondere Berechtigungen. Konkret bedeutet das, dass Nix zusätzlich zur Hauptinstallation Software nutzerbezogen bereitstellen kann. Jeder User installiert dabei die von ihm bevorzugten Versionen lokal für sich und kann dann auswählen, welche davon er gerade verwenden möchte. Diese Vorgehensweise steht dem Mainstream-typischen zentralistischen Ansatz mit dem Benutzer Root als Administrator diametral entgegen. Gleichzeitig gibt sie dem regulären Benutzer zusätzliche Rechte und Verantwortlichkeiten.
Intern regelt die Paketverwaltung Nix die Softwarevarianten über symbolische Links auf lokale Verzeichnisse und bindet diese dann nutzerbezogen in den Pfad der ausführbaren Programme ein. Ein Rollback (“Zurückrollen”) bedeutet hier, dass sich ein Softwarepaket jederzeit wieder vollständig entfernen lässt. Unter der Haube löscht Nix dabei schlicht den symbolischen Link zum Softwarepaket.
Spack geht noch einen Schritt weiter: Es unterstützt nicht nur mehrere Versionen einer Software parallel, sondern auch mehrere Architekturen und Compiler (Abbildung 1). Dabei signalisiert schon der Name die Herkunft aus dem High Performance Computing (HPC): Das Akronym Spack steht für Supercomputer Package. Fügen Sie Software mittels Spack hinzu, wird diese stets zuerst aus den Quellen übersetzt und passt damit ideal zu der von Ihnen angefragten Prozessorarchitektur (Abbildung 2). Eine Einführung in Spack lesen Sie bei Interesse im Handbuch “Python für Data Science” [31] nach.
Verzeichnisse versionieren
Sicher sind Sie bereits mit dem Thema Versionsverwaltung vertraut, soweit es um die Erstellung und Pflege von Software oder gemeinsames Arbeiten an einem Projekt geht. Wäre es nicht schick, wenn sich dasselbe Prinzip der Verwaltung von Änderungen auch auf Verzeichnisse mit Konfigurationsdateien anwenden ließe? Sagen Ihnen erfolgte Korrekturen nicht zu, könnten Sie dann einfach zur vorherigen Version zurückkehren.
Als nachteilig erweist sich hier, dass Versionsverwaltungen (Version Control Systems, VCS) nicht dafür gedacht sind, Betriebssysteme zu versionieren. Sie zielen im Wesentlichen auf die Entwicklung und Pflege von Software und Dokumenten ab. Informationen zu Metadaten wie Zugriffsrechten berücksichtigen VCS nicht, wenn sie Änderungsvorgänge registrieren.
Genau hier setzt das eingangs bereits erwähnte Werkzeug Etckeeper an. Es besitzt Anbindungen an die Versionsverwaltungen Git, Mercurial, Bazaar und Darcs [32]. Das von Ihnen gewünschte VCS legen Sie über die Konfigurationsdatei /etc/etckeeper/etckeeper.conf fest. Dasselbe gilt für die Häufigkeit, mit der Etckeeper das Verzeichnis /etc beobachtet und einen Log-Eintrag im Versionskontrollsystem erzeugt.
Etckeeper klinkt sich in Paketverwaltungen wie Apt, Yum und Pacman ein. Alle Änderungen der Paketverwaltung aus Pre- und Post-Install-Skripts erzeugen automatisch einen passenden Log-Eintrag. Etckeeper rennt los, sobald Sie den Service mittels etckeeper init gestartet haben.
Zwar ist Etckeeper eigentlich für den Inhalt des Verzeichnisses /etc gedacht, doch Sie können es so einstellen, dass es auch andere Verzeichnisse überwacht. Der Entwickler rät jedoch davon ab [33].
Separate Umgebung
Nicht in jedem Fall sind Experimente auf einem Bestandssystem eine gute Idee, insbesondere wenn sie einen größeren Umfang einnehmen. Hier bietet es sich an, stattdessen eine Live-DVD oder einen passenden USB-Stick zu verwenden, um ein Testsystem – quasi ein Wegwerfsystem – auf einer gesonderten Hardware einzurichten. Umgekehrt können Sie auch ein Multiboot-System mit mehreren Distributionen auf der gleichen Hardware dazu nutzen.
Über die letzten Jahre hinweg hat sich dafür das Aufsetzen einer virtuellen Maschine (VM) bewährt, beispielsweise mit Oracle Virtualbox [34]. Genügend RAM und CPU-Leistung vorausgesetzt, lassen sich auch mehrere VMs parallel auf einem Host betreiben. Als Vorteil erweist es sich dabei, dass sich diese VMs anhalten lassen und man dann über die Kommandozeile Schnappschüsse ihres Inhalts erzeugen kann [35].
Der Aufruf aus der ersten Zeile von Listing 2 erzeugt einen Schnappschuss namens Debian 12 LU der VM namens Debian 12. Mit dem Schalter --live erfolgt das im laufenden Betrieb, also ohne die VM vorher anhalten zu müssen. Zur Wiederherstellung der Momentaufnahme nutzen Sie dann den Schalter restore (zweite Zeile).
Listing 2
VM-Schnappschuss
# VBoxManage snapshot 'Debian 12' take 'Debian 12 LU' --live # VBoxManage snapshot 'Debian 12' restore 'Debian 12 LU'
Nutzen Sie eher Container-Systeme wie Podman [36], Docker [37], LXC/LXD [38] oder ZeroVM [39], steht auch hier die eine oder andere Option bereit. Podman, Docker und LXC liefern für Snapshots die beiden Schalter checkpoint und restore – für Docker sind sie derzeit noch als experimentell gekennzeichnet.
Alle drei Systeme greifen zum Erstellen und Wiedereinspielen von Schnappschüssen auf die Werkzeugsuite Checkpoint/Restore In Userspace oder kurz CRIU [40] zu. CRIU zielt darauf ab, Schnappschüsse von Applikationen und ganzen Containern zu machen, die Sie speichern und zu einem späteren Zeitpunkt wieder aktivieren [41].
Im Webbrowser
Seit einiger Zeit stehen Plattformen bereit, in denen Sie Software und sogar komplette Distributionen testen können. Über Ihren Webbrowser wählen Sie auf der Plattform zunächst die gewünschte Distribution aus und starten sie dann in einer Art Player. Von der Bedienung her erinnert das an Werkzeuge wie VNC, Remmina oder X2go – nur eben im Webbrowser und ohne Unterbrechen und Wiederaufnehmen der Sitzung.
Ausprobiert haben wir DistroSea [42] (Abbildung 3), das derzeit knapp 40 Linux-Distributionen anbietet. Darunter finden sich neben den üblichen Verdächtigen wie Arch Linux, Debian, Fedora und Ubuntu Mate auch weniger bekannte Vertreter wie AlmaLinux [43], KolibriOS [44] und das bereits erwähnte NixOS, häufig in unterschiedlichen Varianten.
Stellen Sie sich bitte darauf ein, dass die bereitgestellten Systeme zunächst von einer US-Tastaturbelegung ausgehen. Nach dem Start stellen Sie die Arbeitsumgebung dann auf die gewohnte Sprache um. Nicht festlegen können Sie, wie viele CPUs oder wie viel RAM eine Instanz erhält. Zudem wird Ihre Aktivität überwacht. Nach fünf bis zehn Minuten Inaktivität beendet DistroSea die Instanz und gibt die Ressourcen wieder frei. Zum Ausprobieren und für einen ersten Eindruck von einer Distribution reicht das völlig aus.
Lokale Umgebung
Für die Softwareentwicklung empfiehlt sich die Verwendung einer verlässlichen, abgeschirmten Umgebung, um die Risiken zu minimieren, die unfertige Software zwangsläufig nach sich zieht. So können Sie etwa per Chroot oder Stow [45] separate (Build-)Verzeichnisse erzeugen. Die Programmiersprache Python liefert ein sogenanntes Virtual Environment mit, in der Sie die Kombination von Paketen ausprobieren können [46].
Nicht nur für die Entwicklung und Lehre haben sich Jupyter Notebooks [47] bewährt. Sie bieten ganz ohne Installation auf dem lokalen System eine vollständige Entwicklungsumgebung für Python im Webbrowser. Abbildung 4 zeigt den Einsatz bei der Datenauswertung mittels NumPy.
Sprachen und Dialekte
Nicht nur für Python, sondern auch für andere Sprachen und Dialekte gibt es Umgebungen, auf die Sie online zugreifen und die Sie nicht mehr lokal vorhalten müssen. Im Folgenden stellen wir Ihnen fünf Beispiele dafür etwas näher vor. Alle haben sich dabei bewährt, weniger versierten Anwendern den Einstieg in komplexere IT-Konzepte zu erleichtern.
Geht es um das Finden von Fehlern in Programmcode, ist ein Debugger ein bewährtes Hilfsmittel. Der Online GNU Debugger OnlineGDB (Abbildung 5) steht über die gleichnamige Webseite [48] bereit. Zunächst wählen Sie über das Menü oben rechts die gewünschte Programmiersprache aus. Neben C/C++, Java, Python und Perl finden Sie hier beispielsweise Fortran, R, Go und Haskell. Das Zahnrädchen daneben konfiguriert den Editor hinsichtlich des Farbschemas, der Schriftgröße sowie der Tastaturbelegung (Standard, Emacs, Vim). Mit den farbigen Knöpfen am oberen Rand des Eingabefelds laden Sie Programme in den Editor, steuern die schrittweise Ausführung des Programmcodes und speichern zu guter Letzt Ihre Änderungen wieder lokal ab.
Beim Umgang mit Datenbankdialekten und dem Ausprobieren von SQL hat uns DB Fiddle [49] überzeugt, das die Komplexität im Umgang mit Datenbankmanagementsystemen (DBMS) erheblich vereinfacht. Auf der Webseite spielen vier Bereiche eine Rolle. Links oben befindet sich in der Navigationsleiste ein Auswahlfeld, über das Sie zunächst das gewünschte DBMS festlegen. Zur Auswahl stehen diverse Varianten von MySQL, PostgreSQL und SQLite. Für das folgende Beispiel haben wir daraus PostgreSQL 15 gewählt.
Im Eingabefeld in der Mitte legen Sie Ihr Datenbankschema aus Tabellen, Views und Triggern an. Listing 3 zeigt eine einfache Tabelle customers mit drei Spalten für die Kundennummer sowie den Familien- und Vornamen. Dazu gehören drei passende Datensätze, die wir mittels INSERT-Anweisungen in die Tabelle einfügen. Zu guter Letzt erzeugen wir einen View namens v_customers_sorted, der alle Datensätze der Tabelle nach Familiennamen aufsteigend sortiert ausgibt.
Listing 3
SQL-Anweisungen
CREATE TABLE customers (
customerId serial PRIMARY KEY,
last_name varchar(255) NOT NULL,
first_name varchar(255)
);
INSERT INTO customers (last_name, first_name)
VALUES ('Lehmann', 'Bernd');
INSERT INTO customers (last_name, first_name)
VALUES ('Fischer', 'Holger');
INSERT INTO customers (last_name, first_name)
VALUES ('Grünemann', 'Claudia');
CREATE VIEW v_customers_sorted AS
SELECT * FROM customers ORDER BY last_name ASC;
Im rechten Eingabefeld des DB-Fiddle-Interfaces geben Sie nun die zu testenden SQL-Abfragen ein. Im Beispiel aus Abbildung 6 ist das lediglich der Aufruf des zuvor definierten Views v_customers_sorted (Listing 4). Die Ausgabe präsentiert DB Fiddle im unteren Teil der Webseite, nachdem Sie in der Navigationsleiste auf Run gedrückt haben.
Listing 4
SQL-Abfrage
SELECT * FROM v_customers_sorted;
Weiter geht es mit einem Ausflug in den Bereich Textsatz und Dokumentation. Der Autor wuchs quasi mit dem Textsatzsystem LaTeX auf. Nach einem mehrjährigen Ausflug zu Docbook [50] entstehen heute viele seiner Dokumente in Asciidoc, Markdown oder reStructured Text (reST). Mithilfe eines Umwandlungsprogramms mit LaTeX- oder DocBook-Backend überträgt es sie in das eigentliche Ausgabeformat, meist HTML oder PDF.
Die bei LaTeX unvermeidliche Einstiegshürde in Bezug auf den Arbeitsprozess überfordert nicht IT-affine Menschen häufig. Das Satzsystem lässt sich zwar durchaus erlernen, doch das setzt idealerweise jemanden voraus, der den Neuling beim Einstieg begleitet. Die Plattform Overleaf [51] verkleinert diese Hürde deutlich und schafft das, was andere GUIs für LaTeX wie LyX [52], Gummi [53] oder TeXstudio [54] nur zum Teil erreichen.
Bei Overleaf entfällt nicht nur der Installationsprozess, sondern auch das lokale Vorhalten und Pflegen von etwa 4 GByte an Softwarepaketen für TeX, Compiler, Editor, Schriftarten und Dokumentation. Mit Overleaf schreiben Sie Ihre Dokumente im Webbrowser und übersetzen sie nach PDF – entweder automatisch, sobald Sie Ihren Quelltext geändert haben, oder individuell durch einen Klick auf den Knopf Recompile. Für das Erstellen eines Dokuments wählen Sie dabei zwischen einer rohen Ansicht mit LaTeX-Quelltext (Code Editor) und einem WYSIWYG-Editor (Visual Editor).
Als Compiler stehen Ihnen neben PdfLaTeX, LaTeX, XeLaTeX und LuaLaTeX die TeXLive-Versionen zwischen 2014 und 2022 zur Verfügung. Im Hintergrund läuft zudem ein Versionskontrollsystem, das Ihre Änderungen aufnimmt und Sie bei Bedarf auch Schritte vor und wieder zurück gehen lässt. Arbeitszustände Ihres Werks dürfen Sie benennen, was dem Setzen von Tags und der Versionierung in Git entspricht.
Overleaf glänzt mit einer Vielzahl von Vorlagen und installierten (La)TeX-Paketen, die Sie wie gewohnt in Ihr Dokument einbinden. Abbildung 7 zeigt eine typische Arbeitsansicht mit den verwendeten Dateien zum Dokument (linke Spalte), dem Code Editor samt Inhalt des Dokuments (mittlere Spalte) sowie der Ausgabe (rechte Spalte).
Zwar müssen Sie sich zur Nutzung von Overleaf registrieren und sind zur Arbeit auf die Erreichbarkeit der Plattform angewiesen. Die integrierte Projektverwaltung sowie die Möglichkeit zum kollaborativen Arbeiten mit anderen Autoren am selben Dokument gleichen diese Nachteile jedoch wieder aus. Zudem stellt Overleaf eine ausführliche, sehr gut gepflegte LaTeX-Dokumentation bereit, die die Benutzung erleichtert.
Blicken wir nun noch auf Asciidoc und Markdown. Beide Dialekte haben einen minimalistischen Sprachumfang, liefern aber im Alltag fantastische Ergebnisse. Auf den beiden Webseiten Asciidoc Live [55] und Markdown Live [56] sehen Sie beim Erstellen von Dokumenten im linken Eingabefenster den Quelltext und rechts daneben die geparste Ausgabe.
Allerdings werden nicht immer alle Sprachelemente wie erwartet gerendert. Bei Asciidoc sollte beispielsweise in einfache Hochkommas (') eingeschlossener Text kursiv erscheinen. Hier patzt Asciidoc Live (Abbildung 8). Markdown kennt unterschiedliche Dialekte, wobei man das Markup für die Bezeichnung einer Tabelle entweder per Doppelpunkt oder in eckigen Klammern hinterlegt. Welchen Dialekt Markdown Live (Abbildung 9) nutzt, verrät die Seite nicht – da bleibt nur Experimentieren.

Abbildung 8: Die Bedienoberfläche von Asciidoc Live. Eine Kursivierung mit einfachen Hochkommas klappt hier nicht.

Abbildung 9: Die Bedienoberfläche von Markdown Live. Die Seite verrät jedoch nicht, welchen Markdown-Dialekt sie verwendet.
Fazit
Das Zurückrollen schiefgegangener Operationen beim Herumspielen mit Software klappt relativ problemlos, wenn auch mitunter auf etwas verschlungenen Wegen. Wir hoffen, Ihnen mit diesem Beitrag einige davon näher gebracht zu haben. (jlu)
Danksagung
Der Autor bedankt sich bei Jan Grothkopp für seinen Hinweis zu DistroSea, bei Veit Schiele für seine Tipps zu Python/Virtualenv und Jupyter Notebooks, bei Axel Beckert für die Anregungen zu Etckeeper, bei Alexandre Poltorak für seine Tipps und Vorführungen zum Paketmanagement bei NixOS und bei Gerold Rupprecht und Arne Wichmann für das Korrekturlesen des Artikels.
Über den Autor
Frank Hofmann arbeitet zumeist von unterwegs aus als Entwickler, Trainer und Autor. Seine bevorzugten Arbeitsorte sind Berlin, Genf und Kapstadt. Er gehört zu den Verfassern des Debian-Paketmanagement-Buches.
Infos
-
Rpmorphan: https://rpmorphan.sourceforge.net
-
Rpmorphan/Rpmrestore: Erik Bärwaldt, “Werkzeugkasten”, LU 11/2012, S. 64, https://www.linux-community.de/27054
-
Etckeeper: https://etckeeper.branchable.com
-
Systemback: https://launchpad.net/systemback
-
Déjà Dup: https://launchpad.net/deja-dup
-
Cronopete: https://www.rastersoft.com/programas/cronopete.html
-
Back in Time: https://github.com/bit-team/backintime
-
Timeshift: https://github.com/teejee2008/timeshift
-
Backuppc: https://backuppc.github.io/backuppc/
-
Backup-Tools: Erik Bärwaldt, “Sicher ist sicher”, LU 06/2023, S. 66, https://www.linux-community.de/48656
-
OpenZFS/ZFS on Linux: https://de.wikipedia.org/wiki/ZFS_(Dateisystem)#OpenZFS
-
Wiki zu OpenZFS: https://openzfs.org/wiki/
-
Ubuntu-Paket apt-btrfs-snapshot: https://packages.ubuntu.com/jammy/apt-btrfs-snapshot
-
Ubuntu-Paket zfs-auto-snapshot: https://packages.ubuntu.com/lunar/zfs-auto-snapshot
-
Ubuntu-Paket zfsnap: https://packages.ubuntu.com/lunar/zfsnap
-
Clonezilla: https://clonezilla.sourceforge.net
-
Diffoscope: https://diffoscope.org
-
Diff-Werkzeuge (Teil 2): Axel Beckert, Frank Hofmann, “Herausragend”, LU 12/2021, S. 38, https://www.linux-community.de/46768
-
“Taking a Backup Using Snapshots”: https://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html
-
“LVM Snapshots”: https://www.thomas-krenn.com/de/wiki/LVM_Snapshots
-
Spack: https://spack.io
-
NixOS: https://nixos.org
-
GNU Guix: https://guix.gnu.org/de/
-
Einführung in Spack: https://www.python4data.science/de/latest/productive/envs/spack/index.html
-
Darcs: http://darcs.net
-
Etckeeper für andere Verzeichnisse: https://etckeeper.branchable.com/forum/etckeeper_for_arbitrary_directories__63__/
-
Virtualbox: https://www.virtualbox.org
-
Virtualbox-Schnappschüsse: https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/vboxmanage-snapshot.html
-
Podman: https://podman.io
-
Docker: https://www.docker.com
-
ZeroVM: https://www.zerovm.org
-
CRIU: https://criu.org
-
“Podman Checkpoint in Fedora Linux”: https://fedoramagazine.org/podman-checkpoint-in-fedora-linux/
-
DistroSea: https://distrosea.com
-
AlmaLinux: https://almalinux.org
-
KolibriOS: http://www.kolibrios.org/de/
-
GNU Stow: https://www.gnu.org/software/stow/
-
“Python Virtual Environments and Packages”: https://docs.python.org/3/tutorial/venv.html
-
Jupyter Notebook: https://jupyter.org
-
OnlineGDB: https://www.onlinegdb.com
-
DB Fiddle: https://www.db-fiddle.com
-
Docbook: https://docbook.org
-
Overleaf: https://www.overleaf.com
-
LyX: https://www.lyx.org
-
TeXstudio: https://www.texstudio.org
-
Asciidoc Live: https://asciidoclive.com
-
Markdown Live: https://markdownlivepreview.com












