Come risolvere l'errore "tar: magia non valida" su Linux Alpine


22

Sto installando sqlite su Alpine Linux. Scarico sqlite-autoconf-3130000.tar.gzma tarnon riesco ad aprirlo. Ho provato questa risposta ma non funziona. tardà questo messaggio:

tar: invalid magic
tar: short read

Ho scritto questi comandi.

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

Potresti aggiornare la tua risposta con il comando (e i suoi argomenti) che hai provato ad eseguire.
DarkHeart,

1
Il download è stato completato correttamente? In tal caso, ls -l sqlite-autoconf-3090100.tar.gzdovrebbe indicare che il file ha una dimensione di 2284128 byte.
Stephen Kitt,

Inoltre, è attualmente un file in formato gzip? Alcuni browser eseguono la decompressione immediata, il che significa che potrebbe ancora essere chiamato sqlite-autoconf-3090100.tar.gz ma che il contenuto potrebbe effettivamente essere sqlite-autoconf-3090100.tar. Non ho idea se wget faccia cose altrettanto intelligenti, ma è facilmente testato lasciando la zbandiera dal catrame.
Hennes,

Risposte:


21

Prova a installare il pacchetto tar (apk aggiungi tar). Tar di Busybox (impostazione predefinita) non supporta tutte le funzionalità.


3
Ho riscontrato lo stesso problema durante l'esecuzione di un comando tar in un file Docker e l'installazione di tar ha funzionato per me. È un po 'confuso perché se si esegue il comando nella shell nel contenitore, funziona. Ma non se si tratta di un comando RUN nel Dockerfile senza aver prima installato tar. : |
3cheesewheel

7

Questo non significa necessariamente la versione alpina di tar sia incompatibile, come ha sottolineato Francesco, dovresti davvero controllare i tuoi checksum dei file.

Mi sono imbattuto in questo mentre facevo un curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfnel mio Dockerfile.

Si scopre che ciò che avevo dimenticato era che curlseguirà i reindirizzamenti se lo permetti -L, e quindi non è mai arrivato al file reale, stava letteralmente scaricando l'html dicendo che c'era un reindirizzamento. L'aggiunta di -Lmi ha permesso di salvare il file senza targonfiare il mio contenitore con un nuovo (oltre il "bloat" aggiunto da curl).


0

tar: magia non valida significa che il file è corrotto.

Si prega di controllare il md5sum se corrisponde ... questo è quello che ho ottenuto:

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

0

Ho riscontrato lo stesso problema e l'ho risolto, tuttavia non sono sicuro che stai affrontando lo stesso problema.

Codice che ha causato l'errore :

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

Codice che lo ha risolto :

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

Notare che avevo dimenticato "https: //" in cui il file veniva scaricato ma il tar mi dava lo stesso errore. Se il file non viene trovato, assicurarsi di utilizzare

build docker --no-cache ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.