Vytváření samorozbalovacích archivů

Linux nabízí jednoduchý a rychlý způsob jak vytvářet samorozbalovací a "samospustitelné" soubory. V tomto článku si ukážeme jak.

Úvod

Linux poskytuje mnoho nástrojů pro vytváření všemožně kompimovaných souborů, obsahuje také komplexní nástroje pro spouštění instalačních skriptů. Spojením těchto dvou funkcí získáme přesně to co potřebujeme - spustitelný komprimovaný balík.

V našem případě použijeme shellový skript připojený na začátek tar/gzip archivu.

Samorozbalovací archiv

K vytvoření samorozbalovacího archivu budeme potřebovat dva soubory - hlavičkový soubor, který je popsán níže a samotný tar/gzip archiv. Samozřejmě můžete použít jakýkoliv jiný archiv, já zde uvádím kompresi tar/gzip protože je zřejmě nejrozšířenější.

Archiv sestává z hlavičky a samotného archivu, který je napojen na hlavičku příkazem cat. Pokud bude hlavičkový soubor nazván sfx-header a archiv mypackage-1.2.3.tgz, můžete použít následující příkaz:

cat sfx-header mypackage-1.2.3.tgz > mypackage-1.2.3.sh

Hlavičkový soubor

#!/bin/sh
echo ""
echo "MyPackage v1.2 - rozbaluji archiv... prosim cekejte"
echo ""

# --dulezite--
# ciselny parametr v tomto prikazu musi byt
# vzdy pocet radek + 1 hlavickoveho souboru
tail +12 $0 | tar xz

exit

Uvedený hlavičkový soubor obsahuje opravdu jednoduchý skript. Ten dekomprimuje obsah souboru začínající na 12té řádce (po řádku s příkazem "exit") ale už se např. neptá, do jakého adresáře mají být soubory dekomprimovány.

Důležitou věcí je správně označit začátek archivu, tedy číselný parametr v příkazu tail musí obsahovat hodnotu o jednu větší než je počet řádek hlavičkového souboru.

Samospustitelný archiv

Rozdíl bude pouze v jiném shellovém skriptu, tedy např. soubory budou skriptem rozbaleny do dočasného adresáře, odtud bude spuštěn instalační program a po dokončení instalace bude dočasný adresář smazán. Příklad takového skriptu uvádím zde:

Hlavičkový soubor

#!/bin/sh

echo MyPackage v1.2 - spoustim instalaci ... prosim cekejte

# vytvoreni docasneho adresare pro rozbaleni souboru.
export WRKDIR=`mktemp -d /tmp/selfextract.XXXXXX`

# --dulezite--
# ciselny parametr v tomto prikazu je
# pocet radek + 1 hlavickoveho souboru
tail +21 $0 | tar xz -C $WRKDIR

# spusteni instalacniho skriptu
cd $WRKDIR
./install.sh

# smazani docasneho adresare
rm -rf $WRKDIR

exit

Odkazy:

http://www.gzip.org - GZIP Homepage
http://www.gnu.org/software/tar/tar.html - TAR project Homepage
http://www.gnu.org/software/bash/bash.html - GNU Bourne-Again Shell Homepage



Autor: Roman Pěch
Vytvořeno: 27.05.2002
Oblast: Software