Как устранить ошибку «tar: invalid magic» в Linux Alpine

22

Я устанавливаю sqlite на Alpine Linux. Я скачиваю, sqlite-autoconf-3130000.tar.gzно tarне могу открыть. Я попробовал этот ответ, но он не работает. tarдает это сообщение:

tar: invalid magic
tar: short read

Я написал эти команды.

wget https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
tar -zxvf sqlite-autoconf-3090100.tar.gz
дневной свет
источник
Не могли бы вы обновить свой ответ командой (и ее аргументами), которую вы пытались запустить.
DarkHeart
1
Загрузка прошла успешно? Если это так, ls -l sqlite-autoconf-3090100.tar.gzдолжен сказать, что размер файла составляет 2284128 байт.
Стивен Китт
Кроме того, это в настоящее время файл в формате GZIP? Некоторые браузеры выполняют распаковку «на лету», это означает, что она может называться sqlite-autoconf-3090100.tar.gz, но на самом деле ее содержимое может быть sqlite-autoconf-3090100.tar. Не знаю, если wget делает такие же умные вещи, но это легко проверить, оставив zфлаг из tar.
Хеннес

Ответы:

21

Попробуйте установить пакет tar (apk add tar). Tary Busybox (по умолчанию) не поддерживает все функции.

Якуб Джирутка
источник
3
Я столкнулся с той же проблемой, когда запускал команду tar в Dockerfile и установка tar работала для меня. Это немного сбивает с толку, потому что если вы запускаете команду в оболочке в контейнере, она работает. Но не в том случае, если это команда RUN в Dockerfile без предварительной установки tar. : |
звездочное колесо
7

Это не обязательно означает, что альпийская версия tarнесовместима, так как Франческо указал, что вы действительно должны проверить контрольные суммы файлов.

Я столкнулся с этим, делая curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfв моем Dockerfile.

Оказывается, то, что я забыл, это то, что он curlбудет следовать за перенаправлениями, только если вы разрешите это -L, и поэтому он никогда не попадал в реальный файл, он буквально загружал html, сообщая, что было перенаправление. Добавление -Lпозволило мне сохранить файл без раздувания моего контейнера с новым tar(за исключением «раздувания», добавленного curl).

dragon788
источник
0

tar: неверная магия означает, что файл поврежден.

Пожалуйста, проверьте md5sum, если совпадает ... вот что я получил:

 md5sum  sqlite-autoconf-3090100.tar.gz 
 74931054399a2d7acf35637efe8d6f45  sqlite-autoconf-3090100.tar.gz
Франческо Колиста
источник
0

Я получил ту же проблему и решил ее, но я не уверен, что вы столкнулись с той же проблемой.

Код, вызвавший ошибку :

wget www.example.com/file.tar.gz
tar -zxvf file.tar.gz

Код, который разрешил это:

wget https://www.example.com/file.tar.gz
tar -zxvf file.tar.gz

Обратите внимание, что я забыл «https: //», в котором файл был загружен, но tar дал мне ту же ошибку. Если файл не найден, убедитесь, что вы используете

сборка докера --no-cache ...

Райан Августин
источник