Comment résoudre l'erreur «tar: magie invalide» sur Linux Alpine


22

J'installe sqlite sur Alpine Linux. Je le télécharge sqlite-autoconf-3130000.tar.gzmais je n'ai tarpas pu l'ouvrir. J'ai essayé cette réponse mais ça ne marche pas. tardonne ce message:

tar: invalid magic
tar: short read

J'ai écrit ces commandes.

wget https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
tar -zxvf sqlite-autoconf-3090100.tar.gz

Pourriez-vous mettre à jour votre réponse avec la commande (et ses arguments) que vous avez essayé d'exécuter.
DarkHeart

1
Le téléchargement s'est-il terminé avec succès? Si c'est le cas, ls -l sqlite-autoconf-3090100.tar.gzdevrait vous dire que la taille du fichier est de 2284128 octets.
Stephen Kitt

De plus, est-ce actuellement un fichier au format gzip? Certains navigateurs effectuent une décompression à la volée, ce qui signifie qu'il pourrait toujours s'appeler sqlite-autoconf-3090100.tar.gz mais que le contenu pourrait en fait être sqlite-autoconf-3090100.tar. Aucune idée si wget fait des choses tout aussi intelligentes, mais il est facilement testé en laissant le zdrapeau de tar.
Hennes

Réponses:


21

Essayez d'installer le paquet tar (apk add tar). Busybox tar (par défaut) ne prend pas en charge toutes les fonctionnalités.


3
J'ai rencontré le même problème lors de l'exécution d'une commande tar dans un Dockerfile et l'installation de tar a fonctionné pour moi. C'est un peu déroutant parce que si vous exécutez la commande dans le shell du conteneur, cela fonctionne. Mais pas s'il s'agit d'une commande RUN dans le Dockerfile sans avoir préalablement installé tar. : |
3cheesewheel

7

Cela ne signifie pas nécessairement que la version Alpine de tarest incompatible, comme Francesco l'a souligné, vous devriez vraiment vérifier les sommes de contrôle de votre fichier.

Je suis tombé sur cela tout en faisant un curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfdans mon Dockerfile.

Il s'est avéré que j'avais oublié que curlcela ne suivra les redirections que si vous l'autorisez -L, et donc il n'atteignait jamais le fichier réel, il téléchargeait littéralement le HTML en lui disant qu'il y avait une redirection. L'ajout du -Lm'a permis d'enregistrer le fichier sans gonfler mon conteneur avec un nouveau tar(au-delà du "ballonnement" ajouté par curl).


0

tar: la magie invalide signifie que le fichier est corrompu.

Veuillez vérifier la somme md5 si elle correspond ... voici ce que j'ai obtenu:

 md5sum  sqlite-autoconf-3090100.tar.gz 
 74931054399a2d7acf35637efe8d6f45  sqlite-autoconf-3090100.tar.gz

0

J'ai le même problème et je l'ai résolu, mais je ne suis pas sûr que vous soyez confronté au même problème.

Code qui a provoqué une erreur :

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

Code qui l'a résolu :

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

Notez que j'avais oublié le "https: //" dans lequel le fichier a été téléchargé mais le tar m'a donné la même erreur. Si le fichier est introuvable, assurez-vous d'utiliser

build de docker - pas de cache ...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.