Wszystkie pliki w jednym pliku

Gdy zaczynałem pisać UbuNeo szukałem sposobu na stworzenie własnego formatu, w ramach którego mógłbym zrobić samorozpakowujący się instalator. Już wiadomo było wtedy że UbuNeo będzie potrzebować wiele dodatkowych plików, od źródeł sterowników, plików z firmwarem do kilku debów które trzeba było dołączyć. Z drugiej strony sposób rozpowszechniania poprzez internet powodowało, że UbuNeo musiało się zawierać w jednym pliku który łatwo można było ściągnąć ze strony i przenieść na jakimś nośniku na inny system. Rozwiązaniem okazał się skrypt instalujący w BASHu, z którym połączone było archiwum. Oto przykład:

 #!/bin/bash tail -n +8 $0 | tar xz sudo mkdir ubuneo/ cd ubuneo gksudo echo  exit 0

Zwróć uwagę, że skrypt posiada dokładnie osiem linii, po siódmej linii z „exit 0” jest jeszcze jedna pusta linia. Archiwum które dołączymy do tego skryptu musi być w formacie *.tar.gz. Połączenie skryptu z archiwum można zrobić poprzez polecenie:

 cat archiwum.tar.gz >> skrypt.sh

wtedy zawartość archiwum.tar.gz zostanie doklejone na koniec pliku skrypt.sh, wlasnie w te pustą linie po „exit 0”. Bardzo ważna jest parametr „-n +8” w poleceniu tail, aby skrypt wiedział od ktorego miejsca konczy sie skrypt a zaczyna archiwum. W skrypcie przed „exit 0” można umieścić dowolną ilość instrukcji, które chcemy aby zostały wykonane po rozpakowaniu archiwum. Dzięki temu można zainstalować dowolną aplikację linuksową.

Dodaj komentarz