tar: Archive is compressed. Use -z option
尝试构建我的docker镜像时出现此错误:
RUN wget https://github.com/wal-g/wal-g/releases/download/v2.0.1/wal-g-pg-ubuntu-20.04-amd64.tar.gz -O - | \
tar -xvf - -O > "${APP}/bin/wal-g"
但是为什么-z
在提取模式下忽略选项时会发生此错误?
-z, --gunzip, --gzip
(仅限 c 模式)使用 gzip(1) 压缩生成的存档。在提取或列表模式下,此
选项将被忽略。请注意,此 tar 实现在读取存档时会自动识别 gzip 压缩。
当我添加-z
选项时,出现另一个错误:
Cannot write to ‘-’ (Success).
答案1
命令应该是:
wget https://github.com/wal-g/wal-g/releases/download/v2.0.1/wal-g-pg-ubuntu-20.04-amd64.tar.gz -O - | tar zxvf - -O > "${APP}/bin/wal-g"
需要z
将 添加到-f
和之间的某个位置,而不是-
。该选项-f
需要一个参数,在本例中为-
。
以下是-f
aka--file
选项的定义tar 源代码:
{"file", 'f', N_("ARCHIVE"), 0,
N_("use archive file or device ARCHIVE"), GRID_DEVICE },
您可以从代码中看到,后面-f
需要跟一个文件名,在本例中是特殊名称,-
意思是标准输出(3)。