Autotools - tar Это не похоже на tar-архив
После запуска make distcheck
я получаю сообщение о том, что я успешно построил пакет и готов к распространению. Если я развяжу tar.gz
с tar -zxvf hello-0.2.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
Странно, что он работал раньше.
На машине я пытаюсь создать пакет, я обновил свой automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23
и все еще ту же проблему.
Любые идеи, что может быть проблемой?
Ответы
Ответ 1
Проблема не на машине сборки; проблема на целевых машинах.
Не все версии tar
автоматически распознают декомпрессию для применения к сжатому файлу tar
. Учитывая, что gunzip
, за которым следует tar
, работает, тогда tar
на вашем целевом компьютере один из них. Версии tar
в основных системах Unix (AIX, HP-UX, Solaris) не распознают сжатые tar файлы автоматически. Те, что на Linux и MacOS X, делают.
Обратите внимание, что вы можете использовать:
gzip -dc hello-0.2.tar.gz | tar -xf -
чтобы избежать создания промежуточного несжатого файла.
Ответ 2
На самом деле это может произойти, когда сервер, который вы загружаете, применяет другой раунд GZip, а клиент, который вы использовали для загрузки файла, не читает/не уважает заголовок HTTP Content-Encoding
и сохраняет полезную нагрузку HTTP, как это было на проводе.
Хотя файл имеет только расширение .tar.gz
, это фактически .tar.gz.gz
. после запуска gunzip
после того, как файл получит расширение .tar
только, но все же на этот раз запуск tar-команды tar xf hello-0.2.tar
распознает формат GZip и неявно запускает файл через gunzip еще раз перед извлечением.
Вы можете проверить это, выполнив head hello-02.tar.gz
и head hello-02.tar
. GZip - очень двоичный формат, тогда как tar - вполне читаемый человеком. Если файл .tar выглядит "слишком двоичным", у вас есть файл с двойной кодировкой на руках.