答案 0 :(得分:14)
问题不在构建机器上;问题出在目标机器上。
并非tar
的所有版本都会自动识别要应用于压缩tar
文件的解压缩。假设gunzip
后跟tar
确实有效,那么目标计算机上的tar
就是其中之一。主流Unix系统(AIX,HP-UX,Solaris)上的tar
版本无法自动识别压缩的tar文件。 Linux和MacOS X上的那些。
请注意,您可以使用:
gzip -dc hello-0.2.tar.gz | tar -xf -
以避免创建中间未压缩文件。
答案 1 :(得分:4)
实际上,当您下载的服务器应用另一轮GZip并且您用于下载文件的客户端不读取/尊重HTTP Content-Encoding
标头并存储HTTP有效负载时,可能会发生这种情况电线。
虽然该文件似乎只有扩展名.tar.gz
,但事实上.tar.gz.gz
。在文件仅获得扩展名gunzip
后运行.tar
之后,但这次仍然运行tar命令tar xf hello-0.2.tar
识别GZip格式并在提取之前再次通过gunzip隐式运行该文件
您可以通过运行head hello-02.tar.gz
和head hello-02.tar
来检查此问题。 GZip是一种非常二进制的格式,而tar非常易读。如果.tar文件显示为“太二进制”,则表示您手上有双重编码的文件。