如何解决Linux Alpine上的“ tar:无效魔术”错误


22

我正在Alpine Linux上安装sqlite。我下载了sqlite-autoconf-3130000.tar.gztar无法打开它。我尝试了这个答案,但是没有用。tar给出此消息:

tar: invalid magic
tar: short read

我写了这些命令。

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

您能否使用尝试运行的命令(及其参数)更新您的答案。
DarkHeart '16

1
下载是否成功完成?如果是这样,ls -l sqlite-autoconf-3090100.tar.gz应该告诉您该文件的大小为2284128字节。
史蒂芬·基特

另外,当前是否为gzip格式的文件?某些浏览器会即时进行解压缩,这意味着它仍可能命名为sqlite-autoconf-3090100.tar.gz,但其内容实际上可能是sqlite-autoconf-3090100.tar。不知道wget是否做同样聪明的事情,但是可以通过z从tar 离开标志来轻松测试它。
Hennes

Answers:


21

尝试安装tar软件包(apk add tar)。Busybox tar(默认)不支持所有功能。


3
在Dockerfile中运行tar命令并安装tar时,我遇到了同样的问题。这有点令人困惑,因为如果您在容器的外壳程序中运行命令,它将起作用。但是如果不是在未首先安装tar的情况下在Dockerfile中使用RUN命令,则不是这样。:|
3cheesewheel '16

7

这不一定意味着Alpine的版本tar不兼容,因为Francesco指出您应该真正检查文件校验和。

curl https://github.com/someproject/releases/project-1.1.0.gz | tar -xvzf在Dockerfile中执行此操作时遇到了这个问题。

原来,我忘记了的是,curl如果您允许使用-L,它只会跟随重定向,因此它永远不会到达实际文件,它实际上是下载html告诉它存在重定向。添加-L允许我保存文件而不会用新的方法使容器肿tar(超出了由所添加的“膨胀” curl)。



0

我遇到了相同的问题并已解决,但是我不确定您是否遇到相同的问题。

导致错误的代码:

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

解决它的代码:

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

请注意,我已经放弃了“ https://”,其中确实下载了文件,但是tar给了我同样的错误。如果找不到该文件,请确保您使用

docker build --no-cache ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.