Aus Linux-Magazin 02/2006

Softwaredistribution mit Klik

Benutzer eines Apple Macintosh haben es gut: Sie besitzen ein Unix-basiertes Betriebssystem und schaffen trotzdem jede Software-Installation mit nur zwei Mausklicks. Klik holt diese komfortable Distributionsmethode auf den Linux-Desktop.

Direkt von CD laufende Linux-Systeme sind sehr beliebt. Live-Distributionen dienen nicht nur dem Einstieg in die Linux-Welt, sie helfen auch bei Reparaturarbeiten an einem zerschossenen System. Oft ist aber gerade in solchen Situationen ein Werkzeug erforderlich, das auf der CD fehlt. Der dann folgende Installationsversuch ist meist wenig unterhaltsam: Wer bereits vor dieser Situation stand, kennt die Probleme nicht erfüllter Abhängigkeiten und read-only gemounteter Dateisysteme. Auch in einem produktiven Linux-System möchten Benutzer neue Software ausprobieren, ohne sie systemweit zu installieren.

Solche Wünsche erfüllt das Projekt Klik, dessen Name für “KDE-based Live Installer for Knoppix+Kanotix” steht. Die Macher übernahmen das Konzept der von Apple populär gemachten Bundles, spezieller, in der Regel komprimierter Archive, die alle Dateien und Bibliotheken einer Anwendung zuzüglich einiger Metadaten zusammenfassen. Für die Installation lädt der Anwender die Archivdatei einfach aus dem Internet auf seinen Desktop. Ein anschließender Mausklick genügt – das Betriebssystem startet die darin abgelegte Anwendung. Alle hierzu nötigen Abläufe (Abbildung 1) verbirgt das System vollständig vor dem Benutzer.

Da die neue Software nicht aufwändig in das System einzuspielen ist und somit ihre Dateien nicht in den Tiefen des Verzeichnisbaums verschwinden, können sogar mehrere Versionen desselben Programms koexistieren. Das Linux-Grundsystem bleibt in jedem Fall unangetastet. Darüber hinaus lässt sich eine Anwendung auch über einen USB-Stick andocken und so mit einer Live-Distribution nutzen.

Helfer: Cram-FS

Voraussetzung für den Einsatz von Klik ist eine entsprechend vorbereitete Distribution. Derzeit sind dies vor allem Suse Linux 10 (einschließlich Open Suse) und Debian-basierte Systeme (siehe Kasten “Unterstützte Distributionen”). Nicht zu vergessen Knoppix und seine Derivate, für die Kliks Entwicklung begann. Diese Herkunft erklärt auch, warum das System ursprünglich nur für den KDE-Desktop zu haben war. Dank zahlreicher Mithelfer läuft Klik mittlerweile aber auch unter Gnome.

Auf allen nicht direkt unterstützten Linux-Systemen muss der verwendete Kernel das Cram-Dateisystem beherrschen. Die Kernelquellen enthalten es standardmäßig in Form eines Moduls, das sich aber wahlweise auch statisch in den Kernel kompilieren lässt. Gleiches gilt für das Loop-Device, das später die Imagedateien in den Verzeichnisbaum einbindet.

Klik-Client

Stimmen alle Voraussetzungen, folgt der Befehl »wget klik.atekon.de/client/install -O – | sh« in einem Terminal. Er holt ein Installationsskript von der Klik-Homepage, das anschließend den Klik-Client einspielt. Diesen Schritt muss jeder Anwender wiederholen, der später Klik nutzen möchte, eine systemweite Installation gibt es bislang nicht. Wird das Skript zum ersten Mal und nicht als Administrator ausgeführt, ist zusätzlich folgender Befehl (als Root) nötig:

sh klik-cmg-install-root

Er ergänzt einige Zeilen in der »/etc/fstab«, ohne die Klik nicht läuft.

Den erfolgreichen Abschluss der Installationsarbeiten meldet ein entsprechendes Fenster. Danach präsentiert ein neu geöffneter Konqueror die Klik-Homepage mit dem Menü aller dort registrierten Klik-fähigen Applikationen. Natürlich lässt sich Klik auch mit anderen Browsern als Konqueror nutzen.

Das Klik-Installationsskript hat bei der Client-Installation auch ein neues Protokoll im Konqueror angemeldet. Wählt der Benutzer beispielsweise die URL »klik://xvier« an, reicht Konqueror diesen Wunsch an den Klik-Client weiter, der seinerseits das Programm »xvier« aus dem Internet holt und es auf dem Desktop des Benutzers ablegt, und zwar in der Regel im Verzeichnis »/Desktop«. Wer dort nachschaut, findet aber nur eine große Datei. Ein Mausklick auf das zugehörige Symbol (Abbildung 2) startet die darin verborgene Anwendung.

Welche URL für welches Programm steht, ist wahlweise über eine Recherche im Internet, einen Link auf der Homepage des entsprechenden Programms oder über den Katalog auf der Klik-Homepage zu erfahren. Derzeit stehen dort rund 4000 Anwendungen bereit. Ein Mausklick auf einen Link startet automatisch den zugehörigen Download nach dem beschriebenen Muster.

Wenn die Fehlermeldung »Error while trying to run Programm« erscheint, weist das auf einen Netzwerkfehler hin. Entweder besteht keine korrekte Internetverbindung oder der Klik-Server ist gerade nicht erreichbar. Wie mehrere Einträge im Knoppix-Forum vermuten lassen, scheint Letzteres recht häufig einzutreten. Wer einen eigenen Klik-Server betreiben will, findet einige Hinweise im Kasten “Klik-Server”.

Mit Ausnahme der einmaligen Änderungen an der Datei »/etc/fstab« gelingen alle genannten Aktionen ohne Root-Rechte. Das Installationsskript hinterlässt seine Spuren somit nur im jeweiligen Homeverzeichnis. Wer sich dort auf die Suche nach dem installierten Klik-Client begibt, findet von ihm zunächst keine Spur. Klik selbst besteht lediglich aus zwei schlanken Skripten, die sich hinter den Namen ».klik« und ».zAppRun« vor neugierigen Blicken verstecken.

Abbildung 1: Der Klik-Prozess im Überblick: Der Browser übergibt den Klik-Link (1) an den Client, der den Klik-Server kontaktiert (2) Dieser schickt ein Skript (das so genannte Recipe) zurück (3), das der Client dazu benutzt, um ein Appdir zu erstellen (4). Dieses Verzeichnis wird anschließend noch verpackt und komprimiert (5) und schließlich vom Skript ».zApp« gemountet (6).

Abbildung 1: Der Klik-Prozess im Überblick: Der Browser übergibt den Klik-Link (1) an den Client, der den Klik-Server kontaktiert (2) Dieser schickt ein Skript (das so genannte Recipe) zurück (3), das der Client dazu benutzt, um ein Appdir zu erstellen (4). Dieses Verzeichnis wird anschließend noch verpackt und komprimiert (5) und schließlich vom Skript ».zApp« gemountet (6).

Alle weiteren Änderungen betreffen nur die KDE-Konfigurationsdateien. So taucht etwa ein neuer Eintrag im KDE-Startmenü auf. Einen Überblick über alle modifizierten Dateien gibt Tabelle 1. Gibt der Benutzer zum Beispiel die URL »klik://xvier« ein, führt Konqueror »/.klick klik://xvier« aus.

Unterstützte
Distributionen

Derzeit unterstützen folgende Distributionen das Klik-System: Suse Linux 10 (einschließlich Open Suse), Debian, Linspire, Ubuntu, Kubuntu, Kanotix und Knoppix. Fedora Core 4 ist in Vorbereitung. Gentoo und Mandrake/Mandriva benötigen einen neuen Kernel, da sie Cram-FS nicht unterstützen.

Bei den aktuellen Versionen der Distributionen Knoppix, Kanotix sowie der so genannten SLICK-enhanced Version von Open Suse (siehe [http://www.opensuse.org/SUPER_KLIK]) und CPX-MINI ist der Klik-Client hingegen schon mit an Bord.

Fehlendes vom Server

Im Hintergrund arbeitet Klik ohne grafische Oberfläche. Das gestartete Skript fordert beim Klik-Server das entsprechende Programm an. Existiert es, liefert der Server nur ein weiteres Skript zurück. Dieses so genannte Rezept (Recipe) enthält zum einen Angaben darüber, wo im Internet die binäre Version des gewünschten Softwarepakets zu finden ist, zum anderen eine Anleitung, wie aus den darin enthaltenen Dateien ein kompaktes Alles-in-einem-Paket für die eingesetzte Distribution zu erzeugen ist. Ein solcher Bauplan umfasst zudem die Behandlung oder Auflösung möglicher Abhängigkeiten. Das fertig geschnürte Ergebnis heißt Bundle.

Klik-Server

Der Klik-Client greift stets auf den Klik-Server im Internet zu. In der Praxis kann es jedoch sinnvoll sein, einen eigenen Server zu betreiben. Insbesondere in einem abgeschlossenen Intranet stellt man so sicher, dass die Benutzer stets nur bestimmte Pakete und Programmversionen erhalten. Um den Klik-Client umzubiegen, sucht der Admin im Installationsskript »install« nach der Zeile, die per »wget« die Rezepte abholt. Diese ändert er nun auf den eigenen Webserver, auf dem aber selbstverständlich die passenden Rezepte liegen müssen.

Beispielrezepte für den Eigenbedarf liegen unter [3] und [4]. Mit Ausnahme einiger essenzieller Basisbibliotheken sind alle zum Betrieb notwendigen Bibliotheken und Ressourcen in den späteren Bundles enthalten. Dazu schmuggeln die Klik-Skripte sämtliche Bestandteile des Bundle am Paketmanager der Distribution vorbei. Nur auf diese Weise lassen sich unterschiedliche Versionen derselben Software friedlich nebeneinander betreiben.

Es gibt keine fertigen Bundles, sie werden just in time, also erst nach der Anforderung durch einen Benutzer, für die eingesetzte Distribution individuell generiert. So sparen die Klik-Betreiber nicht nur Speicherplatz auf ihren Servern, auch die Kontrolle der Programmpakete verbleibt bei den jeweils zuständigen Entwicklern. Leider gibt es hierbei einen Haken. Wie die Erfahrung lehrt, ist es gerade bei komplexen Softwareprodukten alles andere als trivial, ein funktionierendes Rezept zu schreiben. Beispielsweise setzt Suse auf das RPM-Format, sodass Debian-Pakete erst konvertiert werden müssen.

Darüber hinaus bieten die unterschiedlichen Distribution ganz verschiedene Software-Voraussetzungen. Als Folge deckt nicht jedes zurückgelieferte Skript auch alle Distributionen ab. Daher gibt es auf dem Klik-Server eine Sektion mit handgeklöppelten (Hand made) Bundles, die auf allen unterstützten Distributionen laufen. Für Suse Linux gibt es unter [2] sogar ein eigenes Bundle-Archiv, das allerdings schon seit mehreren Monaten im Koma liegt.

Abbildung 2: Nach dem Herunterladen des Bundle erscheint das Cmg-Icon auf dem Desktop. Ein Klik auf das Symbol genügt, um das darin enthaltene Programm Xvier zu starten.

Abbildung 2: Nach dem Herunterladen des Bundle erscheint das Cmg-Icon auf dem Desktop. Ein Klik auf das Symbol genügt, um das darin enthaltene Programm Xvier zu starten.

In diesem Zusammenhang stellt sich noch ein Problem: Die automatische Erzeugung der meisten der 4000 Rezepte auf dem Klik-Server aus einem Debian-Paketarchiv führte dazu, dass sich auf ihm auch viele Pakete tummeln, aus denen sich kein eigenständiges Bundle basteln lässt. In diesem Fall erscheint die Fehlermeldung »This package contains no application. klik can\’t handle it«. Die Betreiber des Klik-Servers beseitigen die zugehörigen Rezepte zwar nach und nach per Hand, es liegen aber noch viele unbrauchbare Rezepte herum.

Eigenes Dateisystem

Um den Startvorgang einer Klik-Anwendung zu verstehen, hilft ein Blick in die Struktur eines Bundle. Darin verbirgt sich nur ein komprimiertes Dateisystem, das sämtliche Verzeichnisse einer Anwendung mit ihren zugehörigen Dateien enthält. Als Dateisystem benutzt Klik Cram-FS oder Ziso-FS. Den konzeptionellen Aufbau verdeutlicht Abbildung 3: Zunächst sammelt der Paketbauer sämtliche Dateien und Bibliotheken einer Anwendung in einem Verzeichnis, das man Appdir (Application Directory) nennt. In der höchsten Ebene des Appdir findet sich ein spezielles Skript mit dem Namen »wrapper«.

Abbildung 3: Jedes Bundle besteht aus einem eigenen Linux-Dateisystem sowie einem Wrapper-Skript auf oberster Ebene. Das Verzeichnis, das alle Dateien enthält, bezeichnet man als Appdir. Für Klik wird es noch einmal komprimiert. Es können mehrere Bundles nebeneinander existieren.

Abbildung 3: Jedes Bundle besteht aus einem eigenen Linux-Dateisystem sowie einem Wrapper-Skript auf oberster Ebene. Das Verzeichnis, das alle Dateien enthält, bezeichnet man als Appdir. Für Klik wird es noch einmal komprimiert. Es können mehrere Bundles nebeneinander existieren.

Klickt der Benutzer auf das Appdir, wechselt das Betriebssystem nicht in das entsprechende Unterverzeichnis, sondern startet das Skript. Da Verzeichnisse etwas unhandlich zu verteilen sind, packt der Paketbauer das Appdir häufig zu den bereits bekannten Bundles. Dies kann in Form eines Zip-Archivs oder wie im Fall von Klik über ein eigenes Image geschehen. Eine klare Begriffstrennung zwischen Appdir und Bundle gibt es übrigens nicht. In der freien Wildbahn sind noch weitere Begriffe für ein und dasselbe Konzept zu finden, beispielsweise die App-Folder von Apple oder GNUstep.

Das ».klik«-Skript mountet das Image über das Loop-Device in »/temp/app/1«. Nach einem Klick auf das Bundle im Konqueror hat der Benutzer über das genannte Verzeichnis vollen Zugriff auf seinen Inhalt. Startet er mehr als eine Anwendung, vergibt Klik anstelle der »1« eine fortlaufende Nummer. Das zweite Programm findet sich folglich unter »/temp/app/2«.

Damit auch normale Benutzer dieses Konzept nutzen dürfen, braucht die Datei »/etc/fstab« entsprechende Mountpoints. Das Installationsskript von Klik erzeugt dafür die passenden Einträge. Zur Not oder als Alternative entpackt der Benutzer das Bundle mit den Dateisystem-Werkzeugen »/sbin/fsck.cramfs -x Mein Programm Mein Programm.cmg« und startet dann per Hand das Wrapper-Skript »cd Mein Programm; ./wrapper« Auf diese Weise lässt sich auch das gesamte Paket verändern und anschließend per »/sbin/fsck.cramfs Mein Programm/ Mein Programm.cmg« wieder einpacken.

Tabelle 1:
Klik-Dateien

 

Datei

Funktion

$HOME/.klik

Von »install« erzeugter Klik-Client

$HOME/.zAppRun

Startet beim Anklicken eines Cmg-Bundle

$KDEHOME/share/services/klik.protocol

Protokoll »klik://«

$KDEHOME/share/applnk/klik/klik.desktop

Protokoll »klik://«

$KDEHOME/share/applnk/klik/.directory

K-Menü-Eintrag

$KDEHOME/share/mimelnk/all/cmg.desktop

KDE-Mime-Eintrag für Cmg-Endung

$KDEHOME/share/applnk/.hidden/AppRun.desktop

Legt fest, dass Klik sich um Cmg-Dateien kümmert

 

/etc/fstab

Enthält zusätzlich die Cmg-Verzeichnisse

Begrenzte Anzahl

Der aktuelle Linux-Kernel begrenzt die Anzahl gleichzeitig gemounteter Loop-Devices. Das bedeutet, dass nie mehr als acht Anwendungen aus Bundles gleichzeitig starten können. Zwar ließe sich über die Bootoption »linux max_loop=64« oder den Eintrag »options loop max_loop=64« in »/etc/modules.conf« diese Zahl erhöhen (im Beispiel auf 64). Ein produktives Linux-System auf Basis von Bundles ist auf diese Weise aber kaum zu betreiben. Das verhindern unter anderem schon die damit einhergehenden Performance-Probleme.

Für Entwickler

Damit sich eine Anwendung zu einem Bundle pressen lässt, sollten Programmentwickler folgende Punkte beachten:

  • Keine absoluten Pfadangaben verwenden
  • Veröffentlichung in einem der Formate ».deb«,
    ».rpm«, ».tar.gz«, ».tgz«
  • Auch ältere Bibliotheksversionen berücksichtigen
  • Möglichst Libstdc++.so.6 und GCC 4 vermeiden

Wer alle Regeln befolgt hat und seine Software über den Klik-Server zur Verfügung stellen möchte, schickt eine E-Mail an den Projektleiter Probono. Weitere Informationen zur Freigabe von Programmen liefert [6].

Außerdem lassen sich nur gesittete Programme in Appdirs verfrachten. Möchte eine Anwendung beispielsweise ihre Konfigurationsdateien quer übers System verteilen, dann versagt Klik. Konflikte lassen sich sowieso nicht ganz und gar ausschließen. Da Klik die Bundles in den Verzeichnisbaum einhängt, könnte es durchaus zu Konflikten mit installierten Vorgängerversionen kommen.

Klik ist schlank, schön und selbst hinter den Kulissen einfach gestrickt. Es macht die Installation und Distribution von Softwarepaketen mit nur einem Mausklick zum Kinderspiel. Insbesondere Entwickler sollten einen Blick auf das System werfen, da sie damit leicht Versionen für Tester bereitstellen und auch mehrere Versionen einer Software nebeneinander betreiben können (siehe Kasten “Für Entwickler”).

Noch nicht für alle

Mit Klik gepackte Software verändert nichts am bestehenden Linux-System, zur Deinstallation genügt das Löschen einer Datei. Benutzer einer Live-CD installieren per Klik und mit einem USB-Stick schnell und einfach die gewünschten Programme nach.

Dennoch ist Klik nicht für alle Lebenslagen geeignet: Die Beschränkung auf nur acht gleichzeitig laufende Anwendungen und die derzeit noch fehlende Bundle-Paketverwaltung mit automatischem Update-Mechanismus verhindern es bislang, dass Klik bereits heute die bekannten Paketsysteme der Distributionen ersetzen kann. (ofr)

Infos

[1] Klik-Homepage und Software-Warenhaus: [http://klik.atekon.de]

[2] Archiv mit fertigen Bundles für Suse Linux 10: [http://opensuse.linux.co.nz/klik/10.0/]

[3] Beispielrezept für Scribus: [http://klik.atekon.de/scribus.recipe.example]

[4] Weiteres, kommentiertes Beispielrezept: [http://klik.atekon.de/architecture/recipe.php]

[5] Klik-Forum auf den Knoppix-Seiten: [http://www.knoppix.net/forum/viewforum.php?f=17]

[6] Informationen für Entwickler: [http://klik.atekon.de/docs/?page=A%20note%20to%20application%20developers]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben