Cómo resolver el error "tar: magia no válida" en Linux Alpine

22

Estoy instalando sqlite en Alpine Linux. Lo descargué sqlite-autoconf-3130000.tar.gzpero tarno pude abrirlo. Intenté esta respuesta pero no funciona. tarda este mensaje:

tar: invalid magic
tar: short read

Escribí estos comandos.

wget https://www.sqlite.org/2015/sqlite-autoconf-3090100.tar.gz
tar -zxvf sqlite-autoconf-3090100.tar.gz
luz
fuente
¿Podría actualizar su respuesta con el comando (y sus argumentos) que intentó ejecutar?
DarkHeart
1
¿La descarga se completó correctamente? Si lo hizo, ls -l sqlite-autoconf-3090100.tar.gzdebería decirle que el archivo tiene un tamaño de 2284128 bytes.
Stephen Kitt, el
Además, ¿es actualmente un archivo con formato gzip? Algunos navegadores hacen descompresión sobre la marcha, lo que significa que todavía podría llamarse sqlite-autoconf-3090100.tar.gz pero que el contenido podría ser sqlite-autoconf-3090100.tar. No tengo idea si wget hace cosas igualmente inteligentes, pero se prueba fácilmente dejando la zbandera del alquitrán.
Hennes

Respuestas:

21

Intenta instalar el paquete tar (apk add tar). Tar de Busybox (predeterminado) no es compatible con todas las funciones.

Jakub Jirutka
fuente
3
Me encontré con el mismo problema al ejecutar un comando tar en un Dockerfile e instalar tar funcionó para mí. Es un poco confuso porque si ejecuta el comando en el shell en el contenedor, funciona. Pero no si es un comando EJECUTAR en el Dockerfile sin haber instalado primero tar. : |
3cheesewheel
7

Esto no significa necesariamente que la versión de Alpine tarsea ​​incompatible, ya que Francesco señaló que realmente debería verificar las sumas de verificación de los archivos.

Me encontré con esto mientras hacía un curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzfen mi Dockerfile.

Resulta que lo que había olvidado era que curlsolo seguiría los redireccionamientos si lo permitía -L, por lo que nunca llegó al archivo real, literalmente estaba descargando el html diciéndole que había un redireccionamiento. Agregar el -Lme permitió guardar el archivo sin inflar mi contenedor con un nuevo tar(más allá de la "hinchazón" agregada por curl).

dragon788
fuente
0

tar: magia inválida significa que el archivo está dañado.

Comprueba el md5sum si coincide ... esto es lo que obtuve:

 md5sum  sqlite-autoconf-3090100.tar.gz 
 74931054399a2d7acf35637efe8d6f45  sqlite-autoconf-3090100.tar.gz
Francesco Colista
fuente
0

Obtuve el mismo problema y lo resolví, sin embargo, no estoy seguro de que esté enfrentando el mismo problema.

Código que causó el error :

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

Código que lo resolvió :

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

Observe que olvidé el "https: //" en el que el archivo se descargó pero el tar me dio el mismo error. Si no se encuentra el archivo, asegúrese de usar

Docker build --no-cache ...

Ryan Augustine
fuente