Чтобы проиллюстрировать это: я скачал библиотеку LEDA с веб-сайта компании . Использование tar -xzf не помогает:
$ 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
Тем не менее, gunzip и tar -xf работают нормально:
$ 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
Может кто-нибудь сказать мне, почему это может быть? - Я бы хотел, чтобы стандартная tar
команда работала все время.
tar
, который не реализует -zgunzip < archive.tar.gz | tar -x
должен работать везде.tar
не поддерживает Gunzip декомпрессии, вы можете сделать следующее вместо:gunzip -c $file | tar -x
. Это распространено в функции оболочки.tar xzf
выдает ошибку в Debian GNU / Linux (которая, конечно, использует gnutar). Странный.Ответы:
Похоже, произошло то, что они дважды сжали архив.
Если вы запустите
file
свой файл gunzip, вы все равно найдете его в архиве gzip. И если вы снова переименуете его в .gz, вы можете снова заархивировать его.Похоже, что недавно GNU tar автоматически добавит эту
-z
опцию, при условии, что ввод - это файл. Вот почему он работает без-z
опции, после того как вы уже запустилиgunzip
один раз, tar автоматически добавил ее.Это поведение задокументировано со страницы информации:
Это из §8.1.1 «Создание и чтение сжатых архивов».
источник