Os arquivos tar POSIX contêm cabeçalhos POSIX como arquivos "fictícios" denominados @PaxHeader
. O 7zip os extrai obedientemente e todos eles colidem, já que todos têm o mesmo nome. 7z então reclama que o arquivo está em uso e termina com erros. Ele extrai outros arquivos e os cabeçalhos estendidos são inúteis no Windows de qualquer maneira.
Este problema surgiu no contexto da extração de .tar.xz
arquivos Qt ao compilar o Qt no Windows. Os .tar.xz
arquivos são mais compactos do que os .zip
arquivos e ajudam a reduzir a carga em ambientes CI, onde o Qt pode ser baixado e reconstruído com frequência.
Existe uma maneira de contornar isso?
tar.exe instalado com "Git for Windows" pode lidar com tarballs POSIX.
Muitos tar.exe e outros programas de compactação como o 7-zip, que também podem lidar com tarballs, às vezes (nem sempre) falham com arquivos contendo Paxheaders. Na maioria dos programas, existem parâmetros que tornam muito provável a supervisão dos erros ao extrair tarballs POSIX. Possíveis erros são nomes de arquivos abreviados e nomes de arquivos sem extensões (talvez um pouco mais).
tar.exe de "Git for Windows" pode ser usado "independente", ou seja, fora do git-bash em um arquivo de comando do Windows ou no prompt. A melhor solução é usar o caminho completo para sua instalação:
O caminho para a instalação do git pode ser diferente dependendo da sua instalação. Certifique-se de usar o tar.exe correto.
ou
pode ser útil descobrir.
Quando listados com
7z l
, esses.tar
arquivos contêm vários arquivos com nomes idênticos chamados.\.\@PaxHeader
. Adicionar este nome de arquivo a uma lista de exclusão fornecida ao 7z resolve o problema.As exclusões podem ser fornecidas na linha de comando, ou seja
"-x.\.\@PaxHeader"
, ou em um arquivo de lista de exclusões, por exemplo[email protected]
, onde omy.excludes
arquivo contém pelo menos a.\.\@PaxHeader
linha.