Як вирішити помилку "tar: недійсна магія" на 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прапор з дьогтю.
Геннес

Відповіді:


21

Спробуйте встановити пакет смоли (apk add tar). Заклик зайнятості (за замовчуванням) підтримує не всі функції.


3
Я зіткнувся з тією ж проблемою, коли запустив команду tar в Dockerfile і встановив tar, працював на мене. Це щось заплутано, тому що якщо ви запускаєте команду в оболонці в контейнері, вона працює. Але не, якщо це команда RUN в Dockerfile, не встановивши спочатку tar. : |
3cheesewheel

7

Це не обов'язково означає, що альпійська версія tarне сумісна, як Франческо зазначав, що ви дійсно повинні перевірити контрольні суми файлів.

Я зіткнувся з цим, роблячи curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfв своєму Dockerfile.

Виявляється, те, що я забув, - це те, що ви curlбудете слідувати за переспрямуванням, лише якщо ви дозволите це -L, і тому він ніколи не потрапляв до фактичного файлу, він буквально завантажував HTML, повідомляючи, що там є переадресація. Додавши -Lдозволену мені зберегти файл, не tarроздуваючи контейнер новим (за межами "додавання", доданого curl).


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: //", де файл завантажили, але тар видав мені ту саму помилку. Якщо файл не знайдено, переконайтеся, що ви використовуєте

docker build --no-cache ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.