tar --use-compress-program 在 OSX 上被破坏

hax*_*hax 5 macos tar

我通过自制程序在 Macbook Air (OS X 10.10.5) 上安装了 Pigz,以获得更好的压缩/解压缩性能。

为了压缩,我用了tar --use-compress-program=pigz -cf test.tgz test,没问题。

但解压命令,tar --use-compress-program=pigz -xf test.tgz输出错误: tar: Unrecognized archive format tar: Error exit delayed from previous errors. 或者有时输出: tar: Unrecognized archive format pigz: abort: write error on <stdout> (Broken pipe) tar: Child process exited with status 32 tar: Error exit delayed from previous errors.

我阅读了tar 的手册,但不知道为什么它不起作用。

我注意到甚至tar --use-compress-program=gzip -xf test.tgz会产生相同的错误。那么这是 OSX 的 tar 实现的一个错误吗?

注意:我知道管道样式pigz -d test.tgz | tar -xf有效,在这种情况下我也可以只使用tar -xf test.tgz内置 gzip 调用。但我只是想确认一下是不是bug。

Tho*_*key 2

该程序按设计工作:其命令行中没有提供用于传递解压缩所需的选项的gzip规定。您应该使用包装的,而不是“gzip”来解压缩gzcat,例如,

tar --use-compress-program gzip -cf foo.compressed foo
tar --use-compress-program gzcat -tf foo.compressed
Run Code Online (Sandbox Code Playgroud)

快速检查表明这不起作用:

tar --use-compress-program 'gzip -d' -tf foo.compress
Run Code Online (Sandbox Code Playgroud)

尽管这可能会改变一段时间(这是可行的,但尚未完成)。

根据 Pigz 的手册页,它有unpigz,这是您可以用于程序的内容。