Lese-Ansicht

Debtree visualisiert die Abhängigkeit von Paketen

Debtree Beitragsbild

Vor vielen Jahren habe ich Windows auf meinem Desktop durch Linux ersetzt und mittlerweile einige Distributionen im Einsatz gehabt. Immer habe ich die schnelle und einfache Installation von Software über die Paketmanager als einen der größten Vorteile gegenüber Windows gesehen. Besonders die Möglichkeit zum Einbinden von Drittquellen fand ich immer toll. Damit war die Möglichkeit geboten, Updates an einer einzigen Stelle (dem Paketmanager) durchzuführen, ohne dass man auf den “Store” der Distribution angewiesen ist.

Ja, die Sicherheitsproblematik bei Drittquellen ist mir bewusst, dieses Problem habe ich aber in noch größerem Maße beim Download von Software über irgendwelche Webseiten. Daher hoffe ich, auch in Zeiten von Flatpaks, Snaps und Appimages, dass uns die Paketmanager noch lange erhalten bleiben.

Sicherlich ist die Aufgabe, die Paketmanager zu bewältigen haben, gewaltig. Programme bringen Abhängigkeiten mit, die wiederum Abhängigkeiten haben, die wiederum…

Bei der Installation zeigen einem die Paketmanager an, welche Software durch Abhängigkeiten zusätzlich zum gewünschten Programm installiert wird. Leider zeigen sie nicht an, welches Paket welche Abhängigkeit auslöst.

Dies kann man sehr schön mit dem Programm debtree visualisieren

Debtree – Installation und Funktion

In der Debian/Ubuntu/Mint-Familie lässt sich debtree direkt aus den Paketquellen installieren. Zusätzlich wird graphviz benötigt, um aus den von debtree erzeugten DOT-Files ein Bild zu erstellen.

sudo apt install debtree graphviz

Anschließend kann die erste Grafik erzeugt werden. Zum testen eignet sich ein Paket, das relativ wenige Abhängigkeiten mitbringt. Beispielsweise nano oder openssl.

$ debtree nano | dot -Tpng > nano.png
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen…. Fertig
I: The following dependencies have been excluded from the graph (skipped):
I: libc6

Wie man sieht, hat debtree zuerst die Abhängigkeiten eingelesen, davon allerdings auch welche übersprungen. In diesem Fall die libc6.
Debtree hat in der Datei /etc/debtree/skiplist einige Abhängigkeiten definiert, die standardmäßig ignoriert werden. Es handelt sich dabei um Abhängigkeiten, die so gewöhnlich sind, dass sie in einem Großteil der Grafiken auftauchen würden und diese unnötig aufblasen. Die Liste kann man nach den eigenen Wünschen anpassen.

Mit der Option –no-skip soll sich das Anwenden dieser Liste deaktivieren lassen. Leider hat dies bei mir nicht funktioniert. Das Anwenden von –no-skip hatte keinerlei Auswirkungen. Alternativ kann man die skiplist anpassen, oder mit der Option –show-all alle Abhängigkeiten anzeigen lassen. Diese Möglichkeit hat funktioniert, führt aber bei Paketen mit vielen Abhängigkeiten schnell zu einer riesigen Datei.

Zusätzlich gibt es unter /etc/debtree/endlist eine Liste mit Paketen, deren Abhängigkeiten nicht weiter verfolgt werden. Im Gegensatz zu den Paketen in der Skiplist, die gar nicht in der Grafik auftauchen, werden die Pakete in der endlist in der Grafik angezeigt. Allerdings endet die Linie mit Abhängigkeiten nach diesem Paket.

Nach dem Ausführen des Befehls erhält man folgende Grafik.

Abhängigkeiten von Nano mit Debtree visualisiert

Bei Paketen mit vielen Anhängigkeiten wird die Grafik schnell sehr riesig und unübersichtlich. Dies sieht man beispielsweise, wenn man sich die Abhängigkeiten des Webservers NGINX, ohne das setzen zusätzlicher Optionen, anzeigen lässt. Dabei handelt es sich auch bei NGINX noch um ein Paket mit relativ wenigen Abhängigkeiten. Möchte man die Abhängigkeiten des Pakets gnome-shell anzeigen, kapituliert dot mit folgender Meldung “dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.533022 to fit” Auch angepasste Image ist anschließend noch knapp 55 MB groß.

NGINX Abhängigkeiten mit debtree visualisiert

Debtree Optionen

Um zu vermeiden, dass man riesige und damit unbrauchbare Grafiken erhält, bietet Debtree einige Optionen um die Ausgabe zu beeinflussen.

–no-recommends Empfohlene Pakete werden nicht angezeigt.
–no-alternatives Wenn verschiedene Pakete eine Abhängigkeit erfüllen können, wird nur die erste angezeigt.
–no-provides Keine virtuellen Pakete anzeigen.
–no-conflicts Pakete die mit dem abgefragten Paket in Konflikt stehen werden nicht angezeigt
–max-depth=number Abhängigkeiten werden nur bis zu einer bestimmten Ebene angezeigt

Natürlich finden sich in der Manpage noch eine Vielzahl weiterer Optionen, mit denen sich die Ausgabe beeinflussen lässt. Hierbei handelt es sich meiner Meinung nach um die wichtigsten.

Debtree Grafiken interpretieren

Die verschiedenen Pfeile, Farben und Formen haben folgende Bedeutungen.

Farbe der Pfeile Bedeutung
Blau Direkte Abhängigkeit
Schwarz Empfohlenes Paket (recommends)
Schwarz, gepunktet Vorgeschlagenes Paket (suggests)
Grün Stellt zur Verfügung (provides)
Rot Konflikt
Form der Kästen Bedeutung
Rechteckig, fetter Rand Das Paket, welches untersucht wird
Rechnteckig, normaler Rand Normale Pakete
Rechteckig, direkt untereinander Alternative Pakete mit der selben Funktion
Raute Paket, dessen Abhängigkeit nicht weiter verfolgt wird.
Achteckig Virtuelles Paket

Paketmanager haben ja im Normalfall die tolle Eigenschaft, wie durch Magie die benötigten Abhängigkeiten bereit zu stellen. Mit debtree lässt sich schön darstellen, wie diese Magie funktioniert, wie komplex die Abläufe sind und mit welchen Entscheidungen ein Paketmanager unter Umständen zu kämpfen hat.

Debtree visualisiert die Abhängigkeit von Paketen ist ein Beitrag von techgrube.de.

  •  

Publii: Static CMS mit grafischer Benutzeroberfläche

Publii Beitragsbild

Static Site Generators haben in letzter Zeit stark an Popularität gewonnen. Aus gutem Grund, denn statische Webseiten bieten eine Menge Vorteile gegenüber dynamisch generierten Websites. Statische Seiten sind schnell, erzeugen kaum Last auf dem Server und bieten eine wesentlich geringere Angriffsfläche als PHP-Projekte wie WordPress.

Durch die Verwendung von Static Site Generatoren wird die Erstellung und Wartung statischer Webseiten einfach und komfortabel, ohne dass man sich mit dem HTML-Code der Seite direkt auseinandersetzen muss. Der größte Vorteil der Generatoren ist jedoch, dass man Änderungen an der kompletten Seite vornehmen kann, ohne dutzende HTML-Dateien einzeln zu bearbeiten. Das übernimmt der Generator für einen.

Üblicherweise werden dafür Projekte wie Hugo oder Jekyll verwendet. Diese haben eines gemeinsam, sie werden komplett auf der Kommandozeile bedient und die Formatierung der Texte wird die Auszeichnungssprache Markdown realisiert.

Das mag für technikaffine Menschen sinn- und reizvoll sein. Wenn man aber eine Lösung für weniger technikinteressierte Menschen sucht, scheiden diese Generatoren aus. Hier bietet sich ein Generator mir grafischer Benutzeroberfläche eher an.

Ein solches Projekt ist Publii. Publii bezeichnet sich als Static CMS und bietet im Gegensatz zu den Static Site Generatoren eine grafische Benutzeroberfläche. Das Programm ist Open Source, der Code liegt auf Github. Fertige Builds gibt es für Windows, MacOS und als .Appimage, .rpm und .deb Pakete für Linux. Diese findet man direkt auf der Projektseite getpublii.com.

Publii Backend

Wofür eignet sich Publii?

Natürlich haben statische Webseiten auch Nachteile. Da der Content nicht live generiert wird, lässt sich beispielsweise kein Shop realisieren. Aber auch eine Kommentarfunktion bieten statische Seiten nicht. Hier muss man sich mit Drittanbietern behelfen und deren Dienste einbinden. Wenn man den Dienst Disqus verwenden möchte, bietet Publii eine Schnittstelle über welche sich Disqus-Kommentare in den Blogbeitrag einbinden lassen. Möchte man aus Datenschutzgründen einen anderen, evtl. selbstgehosteten Dienst nutzen, so muss man selber Hand am Theme anlegen.

Derzeit stehen für Publii acht Themes zur Verfügung. Die Aufmachung der Webseite lässt darauf schließen, dass zukünfig auch kostenpflichtige Themes angeboten werden sollen. Im Gegensatz zu aufwendigen WordPress Themes ist die Gestaltung der Seiten recht eingeschränkt. So sind alle Themes mehr oder weniger auf das darstellen von Blogbeiträgen spezialisiert. Auf der Startseite werden die einzelnen Beiträge nach Veröffentlichungsdatum mit Anreissertext dargestellt.

Es lässt sich zwar verhinder dass bestimmte Artikel auf der Startseite aufgeführt werden, ein Magazinartiges darstellen von bestimmten, nach Kategorien sortierten Beiträgen auf der Startseite ist jedoch nicht möglich.

Aus meiner Sicht eignet sich Publii also besonders zum Erstellen von Blogs, eben mit Einschränkungen bei der Kommentarfunktion, oder Portfolioseiten. Für Magazine oder eine Wissensdatenbank wie ein Wiki ist es (zumindest bisher) weniger geeignet.

Publii: Oberfläche und Funktionen

Der Aufbau der Benutzeroberfläche erinnert ein wenig an das Backend von WordPress. So findet man auf der linken Seite eine Menüleiste, über welche sich neue Posts erstellen, das Theme anpassen oder Einstellungen verändern kann. Außerdem lassen sich verschiedene Autoren anlegen, Tags vergeben und Menüs anlegen.

Wer schon mit WordPress gearbeitet hat, der wird sich im Backend von Publii schnell zurecht finden.

Viele Funktionen die man bei WordPress über Plugins realisieren muss, bringt Publii bereits von Haus aus mit. Fehlt hingegen eine Funktion, so wird es mit dem Nachrüsten natürlich schwierig. Beispielsweise bringt Publii bereits eine Funktion mit um die lästigen Cookie-Bars einzublenden. Obwohl sich natürlich gerade eine statische Seite dazu anbietet ohne Cookies eingesetzt zu werden.

Außerdem werden auf Wunsch AMP-Seiten unterstützt, der HTML- und CSS-Code kann komprimiert (also ohne Kommentare, Formatierung usw.) erzeugt werden. Die angebotenen Themes erzeugen alle responsive Webseiten, so dass die Seite sowohl für Desktop-, als auch für Mobilgeräte geeignet sind.

Über den Reiter “Tools” lassen sich Backups der Webseite erstellen. Außerdem kann eigener HTML- und CSS-Code in die Seite eingefügt werden, ohne dass man die Theme-Dateien direkt bearbeiten muss.

Außerdem gibt es ein experimentelles Tool um Beiträge aus WordPress zu importieren.

Über die Vorschaufunktion lässt sich die Seite rendern und im lokalen Webbrowser darstellen, ohne dass die Änderungen direkt veröffentlicht werden.

Hat man eine Webseite erstellt, kann Publii die HTML-Dateien entweder auf der lokalen Festplatte erzeugen, oder diese direkt auf den eigenen Server oder Webspace laden.

Publii edit Post

Themes binden Google Fonts ein

Mit statischen Seiten lassen sich besonders einfach datenschutzfreundliche Webseiten erstellen. Ohne Kommentarfeld, Kontaktformular, Benutzerlogin usw. werden praktisch keine personenbezogenen Daten verarbeitet.

Daher ist es schade, dass über die Themes Schriftarten von Google Fonts eingebunden werden und damit zumindest die IP-Adresse des Benutzers an Google übermittelt wird. Um dies zu verhindern muss man selbst tätig werden, indem man das Theme anpasst.

Geladen werden die Google Fonts über einen Eintrag in der Header-Datei des Themes. Diese befindet sich unter ~/Dokumente/Publii/themes/THEMENAME/partials/head.hbs

Letzendlich handelt es sich um Textdateien, die man mit einem beliebigen Editor ändern kann. Hier entfernt man die Zeilen

 <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
 
 <link href="https://fonts.googleapis.com/css?family= PT+Serif:400,700|Muli:400,600" rel="stylesheet"> 

Publii bringt standardmäßig acht Themes mit, die bereits im oben genannten Installationsverzeichnis vorliegen. In den Einstellungen der Webseite kann man verschiedene Themes für die gerade bearbeitete Webseite “installieren”. Damit wird das Theme aus oben genanntem Ordner für diese Webseite geladen. Die Anpassung muss daher vor der “Installation” erfolgen.

Damit werden keine Google Fonts mehr geladen, der Browser fällt auf die Standardschriftarten zurück. Möchte man die bisher von Google geladenen Schriftarten vom eigenen Server ausliefern lassen, so hilft einem der google webfonts helper. Damit lassen sich die benötigten Dateien zusammen stellen und der CSS-Code zum laden der Schriftarten erzeugen. Diesen kann man im Backend von Publii über Tools > Custom CSS laden.

Fazit

Ich habe schon länger ein Tool wie Publii gesucht und freue mich endlich etwas gefunden zu haben. Mit Publii lässt sich extrem schnell eine schöne, responsive, schnelle und wartungsarme Webseite erstellen.

Zwar bin ich durchaus ein großer Freund von WordPress, für viele Projekte ist es aber absoluter overkill und verursacht viel Wartungsaufwand. Wenn man eine wartungsarme Webseite erstellen möchte, die eventuell auch nur unregelmäßig aktualisiert wird, ist WordPress völlig ungeeignet. Gerade für Portfolio-Seiten oder Gelegenheitsblogger bietet sich Publii geradezu an.

Durch die grafische Benutzeroberfläche ist Publii außerdem extrem nutzerfreundlich.

Und wenn ich mir überlege wie viele Stunden ich mit der Anpassung dieser WordPress-Installation verbracht habe, damit beispielsweise anonyme Kommentare verfasst werden können, dann fällt das Entfernen der Google Fonts bei Publii nicht wirklich ins Gewicht.

Publii Themes

Publii: Static CMS mit grafischer Benutzeroberfläche ist ein Beitrag von techgrube.de.

  •  

Windows Partitionen unter Linux ignorieren

Linux Mint Partition ignorieren Beitragsbild

Auf meinem Desktop habe ich sowohl Linux, als auch Windows installiert. Zwar ist Linux seit vielen Jahren mein Hauptsystem, beim zocken führt für mich aber leider nach wie vor kein Weg an Windows vorbei.

Da ich Windows fast ausschließlich zum spielen verwende und somit keine Daten zwischen der Linux- und der Windowsinstallation austauschen muss, stört es mich dass die Windowspartitionen im Dateimanager unter Linuxmint angezeigt werden. Zugegeben kein großes Problem, aber mich stört es. Abgesehen davon dass einem ständig vor Augen geführt wird dass auf dem Rechner auch eine Windowsinstallation existiert, erhöht es auch die Gefahr versehentlich Dateien auf der Windowspartition zu löschen, oder die Installation versehentlich zu zerstören.

Schön, dass mit einer udev-Regel der Kernel angewiesen werden kann bestimmte Partitionen zu ignorieren. Das schöne an dieser Lösung ist, dass sie Distributionsübergreifend und unabhängig vom verwendeten Dateimanager funktionierten sollte.

Zuerst muss unter /etc/udev/rules.d eine neue Datei mit der Endung .rules angelegt werden. Beispielsweise /etc/udev/rules.d/hiddendevices.rules

In meinem Fall soll /dev/sdf4 ausgeblendet, bzw. ignoriert werden. Dafür wird die soeben angelegte Datei mit folgendem Inhalt befüllt.

KERNEL=="sda4", ENV{UDISKS_IGNORE}="1"

Nach einem Neustart ist die Windowspartition auf dem Dateimanager verschwunden.

Ignore Partition vorher/nachher


 

Windows Partitionen unter Linux ignorieren ist ein Beitrag von techgrube.de.

  •  
❌