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
Essayez d'installer le paquet tar (apk add tar). Busybox tar (par défaut) ne prend pas en charge toutes les fonctionnalités.
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
).
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
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
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 ...