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ą.