7zip 因 @PaxHeader 文件而无法提取 POSIX tar 档案

7zip 因 @PaxHeader 文件而无法提取 POSIX tar 档案

POSIX tar 档案包含 POSIX 标头作为名为 的“虚拟”文件@PaxHeader。7zip 会尽职尽责地提取它们,但它们都发生冲突,因为它们都具有相同的名称。然后 7z 会抱怨该文件正在使用中,并以错误结束。它确实提取了其他文件,而且扩展标头在 Windows 上无论如何都无用。

.tar.xz此问题出现在Windows 上构建 Qt 时提取 Qt 档案的背景下。.tar.xz文件比文件更紧凑.zip,有助于减少 CI 环境中的负载,因为在 CI 环境中,Qt 可能会经常被下载和重建。

有办法解决这个问题吗?

答案1

使用“Git for Windows”安装的 tar.exe 可以处理 POSIX tarball。

许多 tar.exe 和其他压缩程序(如 7-zip)也可以处理 tarball,但有时(并非总是)会因包含 Paxheaders 的存档而失败。大多数程序中都有一些参数,可以很容易地忽略提取 POSIX tarball 时的错误。可能的错误包括文件名过短和文件名没有扩展名(可能还有其他错误)。

“Git for Windows” 中的 tar.exe 可以“独立”使用,即在 git-bash 之外的 Windows 命令文件中或在提示符下使用。最好的解决方案是使用安装的完整路径:

C:\Program Files\Git\usr\bin\tar.exe -xf archive.tar.gz

git 安装的路径可能因您的安装而异。请确保使用正确的 tar.exe。

which tar.exe

或者

where tar.exe

可能会有帮助。

答案2

当使用 列出时7z l,这些.tar档案包含大量名为 的同名文件.\.\@PaxHeader。将此文件名添加到提供给 7z 的排除列表中即可解决问题。

排除可以在命令行上提供,即"-x.\.\@PaxHeader",或者在排除列表文件中提供,例如[email protected],其中my.excludes文件至少包含.\.\@PaxHeader行。

相关内容