AppDir ist eine Methode Software funktionstüchtig einzupacken, so dass man sie nicht erst installieren muß um sie zu benutzen. Für die GnuZukunft wird AppDir sicherlich eine große Rolle spielen. Alle Dateien, die zu einem Programm gehören, packt der Distributor (im Optimalfalle der Programmautor) in einem einzigen Verzeichnis zusammen, wobei bestimmte Vorgaben zu beachten sind. Anschließend kann man das Programm sofort benutzen, indem man es einfach durch Anklicken des AppDir-Verzeichnisses startet. Falls nötig, wird beim ersten Start automatisch noch ein für die Plattform passendes Binary kompiliert, sofern man ein Source Paket zu starten versucht. Dabei ist die Software benutzbar egal wo sich das AppDir gerade befindet, ob nun auf einem Server, einer CD (sofern schon kompiliert), oder im Homeverzeichis eines Benutzers.
Diese Methode wird unter anderem unter MacOSX verwendet1. Der Vorteil besteht darin, dass die Dateien eines zu installierenden Programmes nicht im gesamten Dateisystem verstreut installiert werden müssen. Dadurch ist auch die Deinstallation sehr einfach: Das AppDir-Verzeichnis wird einfach gelöscht. Ein Paketmanagement durch rpm, deb etc. ist nicht notwendig 2.
Damit wird es für Benutzer einfacher, Programme auszutauschen und auszuprobieren, und für Programmautoren wird es einfacher, Ihre Software 'unters Volk zu bringen'.
Zur Installation sind nicht zwingend Root-Rechte erforderlich, und man muss sich nicht um Variablen und Ähnliches kümmern.
Nachteilig ist bisher nur dass man die AppDir Datei-Pakete für eine echte "Installation" ins System noch nicht zugunsten einer funktionalen Sortierung in die Verzeichnisstuktur aufbrechen kann. Ein harmonisches Mit- und Nebeneinander ist übrigens überhaupt kein Problem.
Ich könnte mir vorstellen, das man "AppDir-Pakete" auch installier- und deinstallierbar machen könnte. Vieleicht indem man das distributionsunabhängige System von .package (http://www.autopackage.org) mit einbaut.
Zusätzlich könnte man es vorsehen an bestimmten Stellen im System auch AppDir gepackte Software abzulegen - um mal das oft erwähnte Problem mit Code Sharing anzusprechen - z.B. auch unter /usr/lib.
AppDir Verzeichnisse unter /opt entsprechen schon jetzt allen gepflogenheiten. Dafür muß die Software wie üblich vom Systemadministrator dorthin kopiert werden, und kann damit systemweit für alle Benutzer zur Verfügung gestellt werden.
Mit ZeroInstall kann sich der Systemadministrator das "ins System kopieren" auch sparen. Damit können automatisch alle Benutzer auf sämtliche Software im Internet zugreifen, einfach in dem sie sie von einem virtuellen URI Verzeichnis starten.
Homepage: http://rox.sourceforge.net/phpwiki/index.php/AppDir
Freshmeat Artikel: http://freshmeat.net/articles/view/247/
Mini-Installationsanleitung für SuSE 8.2
Von http://packman.links2linux.de die beiden Pakete shared-mime-info-0.11-0.pm.1.i586.rpm und rox-2.0.1-0.pm.2.i586.rpm beziehen
- Diese beiden Pakete in der angegebenen Reihenfolge installieren
Das Programm 'System' von http://rox.sourceforge.net/system.php3 beziehen
- das Programm auspacken
- rox aufrufen
- in rox zu dem entpackten Verzeichnis wechseln
- das Verzeichnis Doppelklicken
=> Das Programm 'System' wird gestartet
Der Umweg über Rox ist nötig, da beispielsweise KDE das AppDir-Format noch nicht unterstützt. Klickt man ein AppDir-Programm in KDE an, wird einfach der Inhalt des Verzeichnisses angezeigt anstatt das Programm zu starten. AppDir-Support in KDE ist aber bereits in der Entwicklung und auf http://bugs.kde.org/votes.cgi?action=show_user&bug_id=81772 kann man dafür votieren.
Ein nettes (englisches) Tutorial zu AppDir finden Sie unter http://freshmeat.net/articles/view/247/
Unter Mac OS X heißt es allerdings "Bundle". (1)
Da auf Systemebene eine Übersicht über vorhandene AppDir Software und Abhängigkeiten derzeit aber auch nicht möglich ist, ist dies gleichzeitig zusammen mit der ineffizienteren Code sharing Möglichkeit der Nachteil dieses Konzeptes. Es ist daher dringend anzuraten beide Welten zu vereinen und z.B. das neue distributionsunabhängige http://autopackage.org Format in AppDir zu integrieren oder umgekehrt. (2)