使用docker Alpine时出现“ tar:在存档中找不到”错误

时间:2019-01-26 09:54:44

标签: tar alpine

我运行以下命令:

docker run -ti --rm alpine
apk add --no-cache curl
curl https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.15.6.tgz | tar xvz --strip 1 package/min

并收到错误tar: package/min: not found in archive

我在Mac终端和docker ubuntu中运行相同的命令(curl | tar),所有这些都成功。

1 个答案:

答案 0 :(得分:1)

Alpine中包含的tar不是通常的(GNU)tar,而是BusyBox的一个组件:

/scratch # tar --version
tar (busybox) 1.28.4

显然,使用

运行时,此版本的tar会生成(伪)错误消息

tar xvz --strip 1 package/min

(但是,乍一看,它就可以很好地创建目标目录,因此可以忽略该错误消息)。

要摆脱恼人的错误,您应该安装GNU tar并使用它:

/scratch # apk add --no-cache tar
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tar (1.31-r0)
Executing busybox-1.28.4-r2.trigger
OK: 7 MiB in 19 packages
/scratch # tar --version
tar (GNU tar) 1.31
<rest of message omitted>

然后,运行原始命令即可正常工作,而不会出现任何错误消息。