Por que a estrutura do diretório de tarball desaparece quando eu uso o Arquivo de Perl :: TAR?
-
20-09-2019 - |
Pergunta
Estou usando um script Perl para modificar alguns arquivos dentro de um .tar e a estrutura do diretório dentro do .tar resultante desaparece. Eliminando cada vez mais código, cheguei até tudo o que é necessário para reproduzir isso
my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');
Ambos os arquivos .TAR têm todos os arquivos, no entanto, a indicação de quais diretórios os arquivos e subdiretórios foram localizados são perdidos.
Eu olhei através dos documentos e SRC para Arquivo :: alcatrão Mas eu realmente não entendo o que está acontecendo.
Estou usando o Perl 5.10.0 no Win32, TAR 1.12 e Archive :: TAR 1.54. Examinei os arquivos .tar em um editor e o data.tar contém dir/ e dir/ file.txt, mas no modificado_data.tar eles aparecem como dir e file.txt, então meu alcalão original parece bom.
Alguém de vocês que já viu isso antes ou tem alguma idéia?
Solução
C:\Temp> perl -v This is perl, v5.10.1 built for MSWin32-x86-multi-thread (with 2 registered patches, see perl -V for more detail)
C:\Temp> perl -MArchive::Tar -e "print $Archive::Tar::VERSION" 1.52
Não pode replicar usando data.tar
criado com:
C:\Temp> tar --version tar (GNU tar) 1.21
Como @~ notas de quack, o Docs estado:
Observe que o GNU TAR mais cedo do que a versão 1.14 não lida bem com o prefixo do cabeçalho POSIX. Se você usar essa versão, considere definir o
$Archive::Tar::DO_NOT_USE_PREFIX
variável paratrue
.
Outras dicas
Eu tentei o seu script, mas não pude reproduzir o problema (no FreeBSD usando o Perl 5.10).