Aby zilustrować tę kwestię: pobrałem bibliotekę LEDA ze strony internetowej firmy . Użycie tar -xzf na nim nie powiedzie się:
$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
Jednak gunzip, po którym następuje tar -xf, działa dobrze:
$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error
Czy ktoś może mi powiedzieć, dlaczego tak jest? - Chciałbym, aby standardowe tar
polecenie działało cały czas.
tar
, który nie implementuje -zgunzip < archive.tar.gz | tar -x
powinien działać wszędzie.tar
nie obsługuje gunzip dekompresji, można wykonać następujące zamiast:gunzip -c $file | tar -x
. Często jest to zawijane w funkcję powłoki.tar xzf
pobrałem to archiwum i rzeczywiście wyświetla błąd na Debian GNU / Linux (który oczywiście używa gnutara). Dziwny.Odpowiedzi:
Wydaje się, że tak się stało, że dwukrotnie skompresowali archiwum.
Jeśli uruchomisz
file
plik Gunzip, znajdziesz jego archiwum gzip. A jeśli zmienisz jego nazwę na .gz, możesz go ponownie wystrzelić.Wydaje się, że ostatnio gnu tar automatycznie doda tę
-z
opcję, pod warunkiem, że dane wejściowe to plik. Dlatego działa bez-z
opcji, gdy jużgunzip
raz uruchomiłeś , tar automatycznie to dodał.To zachowanie jest udokumentowane na stronie informacyjnej:
To pochodzi z § 8.1.1 „Tworzenie i czytanie skompresowanych archiwów”.
źródło