Paketbote

Unter Windows ist neue Software oft mit einem Doppelklick installiert. Mit den passenden Werkzeugen kann man jedoch auch Unix-Software dazu bringen, sich selbst auszupacken.

In Pocket speichern vorlesen Druckansicht 12 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Michael Riepe

Relativ einfach lassen sich unter Unix selbstextrahierende Zip-Dateien erzeugen. Man benötigt dazu lediglich die Programmpakete zip und unzip, die unter www.info-zip.org im Quelltext erhältlich sind und sich - unter anderem - auf beinahe jedem Unix-System übersetzen lassen.

Zunächst muss der Nutzer mit zip ein normales Archiv erzeugen. Den Entpacker steuert die Programmdatei unzipsfx bei, die sich normalerweise im gleichen Verzeichnis befindet wie zip und unzip - im Zweifel verrät das Kommando which unzipsfx den vollständigen Dateinamen. Führt man die Datei aus, öffnet sie sich selbst und versucht, ein angehängtes Zip-Archiv zu lesen. Allerdings genügt es nicht, Entpacker und Zip-Datei mit cat `which unzipsfx` archiv.zip > archiv.bin aneinanderzuhängen: Das Archiv kann Verweise enthalten, die durch die Änderung seiner Position innerhalb der Datei ungültig werden und sich mit zip -A archiv.bin korrigieren lassen.

Nach dem Setzen der Ausführungsrechte mit chmod +x archiv.bin lässt sich das Archiv mit dem Kommando ./archiv.bin auspacken. Außerdem versteht das Programm viele der von unzip bekannten Optionen: ./archiv.bin -t etwa prüft, ob das Archiv fehlerfrei ist. Wer nur an einigen der enthaltenen Dateien interessiert ist, kann deren Namen beim Aufruf als zusätzliche Argumente übergeben.

Leider hat unzipsfx einen Nachteil: Das Programm läuft nur auf dem OS und der CPU-Familie, für die es kompiliert wurde. Der Anwender muss für jedes Betriebssystem ein eigenes Paket schnüren. Läuft die paketierte Software ohnehin nur auf einem System, kann man unzipsfx jedoch bedenkenlos verwenden.

Einige Softwarepakete - darunter das kürzlich erschienene Google Earth für Linux - verwenden makeself.sh (www.megastep.org/makeself). Das Shell-Skript läuft auf allen gängigen Unix-Systemen einschließlich Mac OS X und erzeugt in einem Arbeitsgang ein ausführbares Archiv. Das besteht ähnlich wie bei unzipsfx aus einem Entpacker - ebenfalls ein Shell-Skript - und den gepackten Dateien. Allerdings verwendet makeself.sh zum Einpacken das Unix-Programm tar.

Das Kommando makeself.sh archiv.run "" erzeugt die Archivdatei - die Endung .run hat sich als Quasi-Standard etabliert - aus allen Dateien im angegebenen Verzeichnis. Startet man die Archivdatei, etwa mit sh archiv.run, gibt sie die gespeicherte Beschreibung aus, packt die Dateien in einem temporären Verzeichnis aus, führt darin den gewünschten Befehl aus und löscht das Verzeichnis anschließend wieder. Daher ruft der Befehl üblicherweise ein mitgeliefertes Installationsprogramm auf, das alle Dateien an den gewünschten Platz kopiert.

Ruft der Nutzer makeself.sh mit der Option - -notemp auf, lässt der Entpacker die temporäre Kopie auf der Platte liegen. In dem Fall kann man einen Befehl übergeben, der (fast) nichts tut - etwa true oder echo ohne zusätzliche Argumente. Die Option - -current wirkt ähnlich, sie weist jedoch den Entpacker an, die Daten im Arbeitsverzeichnis abzulegen statt in einem Unterverzeichnis.

Normalerweise komprimiert makeself.sh das integrierte Tar-Archiv mit gzip. Steht das Programm nicht zur Verfügung, kommt compress zum Einsatz. Mit den Optionen - -compress, - -gzip und - -bzip2 kann der Nutzer ein Kompressionsverfahren vorgeben; makeself.sh - -nocomp erzeugt ein unkomprimiertes Archiv.

Außerdem berechnet makeself.sh CRC- und MD5-Prüfsummen. Mit ihnen lässt sich feststellen, ob das Archiv unversehrt beim Empfänger ankam. Voraussetzung ist allerdings, dass beim Auspacken die Programme cksum und md5sum zur Verfügung stehen. Mit den Optionen - -nocrc und - -nomd5 lässt sich die Prüfsummenberechnung ausschalten.

Die Archivdatei versteht ebenfalls einige Optionen: ./archiv.run - -list etwa zeigt den Archivinhalt an. Mit - -info erhält der Nutzer zusätzliche Informationen, etwa die Beschreibung des Archivs. - -keep verhindert, dass der Entpacker die temporäre Kopie nach der Installation löscht. Ruft der Nutzer das Programm mit - -confirm auf, fragt es vor dem Start des Installationsbefehls um Erlaubnis. Eine Liste aller Optionen lässt sich - ebenso wie bei makeself.sh - mit - -help abrufen.

Zu den Unix-Klassikern gehört das Programm shar, das heute überwiegend in seiner moderneren Gnu-Inkarnation anzutreffen ist (ftp://ftp.gnu.org/gnu/ sharutils). shar ... > archiv.sh verpackt die angegebenen Dateien in einem Shell-Skript, das auch das Auspacken übernimmt. Normalerweise bestehen die so genannten Shell-Archive ausschließlich aus (ASCII-)Text - das Programm hat seinen Ursprung im Usenet, das lange Zeit ausschließlich Text mit 7 Bit pro Zeichen übertragen konnte. Binärdateien oder Textdateien, die Umlaute enthalten, wandelt shar mit Unterstützung von uuencode um. Die moderne Gnu-Version bietet einige Funktionen mehr als ihr Urahn. Sie erzeugt MD5-Prüfsummen, komprimiert die archivierten Dateien auf Wunsch mit gzip oder bzip2 und setzt beim Auspacken die Zeitstempel der Dateien auf die ursprünglichen Werte zurück. Wer mehr über Gnu-shar wissen möchte, kann mit info -f sharutils in der Texinfo-Dokumentation stöbern. (mr)