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

This site uses Akismet to reduce spam. Learn how your comment data is processed.