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

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


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


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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.