web-dev-qa-db-fra.com

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

J'installe sqlite sur Alpine Linux. Je télécharge sqlite-autoconf-3130000.tar.gz mais tar n'a pas pu l'ouvrir. J'ai essayé cela réponse mais cela ne fonctionne pas. tar donne 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
27
daylight

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

22
Jakub Jirutka

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

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

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

9
dragon788

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
Francesco Colista

si vous utilisez Alpine dans Docker, veuillez affirmer que vous utilisez COPY au lieu de ADD dans votre fichier conteneur (Dockerfile) car ADD décompressera lors de la construction du couche

Tar par défaut Alpine ne le fait pas vous donne un indice

tar (child): sqlite-autoconf-3090100.tar.gz: Cannot read: Is a directory
tar (child): At beginning of tape, quitting now
tar (child): Error is not recoverable: exiting now
0
childno͡.de

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 erreur causée:

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

Code qui résol it:

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 ...

0
Ryan Augustine