Pourquoi la structure du répertoire tarball disparaissent lors de l'utilisation de Perl Archive :: Tar?
-
20-09-2019 - |
Question
J'utilise un script Perl pour modifier certains fichiers dans un .tar, et la structure des répertoires à l'intérieur du .tar résultant disparait. L'élimination de plus en plus de code que je suis venu aussi loin que tout ce qui est nécessaire pour reproduire c'est
my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');
Les deux fichiers .tar-ont tous les fichiers, mais l'indication de quels répertoires les fichiers et les sous-répertoires sont situés dans sont perdus.
Je l'ai regardé à travers les documents et src Archive :: Tar mais je ne comprends vraiment pas ce qui se passe.
J'utilise Perl 5.10.0 sur win32, le goudron et 1,12 Archive :: Tar 1,54. J'ai examiné les fichiers .tar dans un éditeur et le data.tar dir contient / et dir / file.txt, mais dans le modified_data.tar, ils apparaissent comme dir et file.txt donc mon goudron d'origine semble ok.
Quelqu'un d'entre vous qui en ont vu ou avez des idées?
La solution
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
Impossible de répliquer à l'aide data.tar
créé avec:
C:\Temp> tar --version tar (GNU tar) 1.21
@ ~ notes de charlatan, docs état:
Notez que GNU tar antérieure à la version 1.14 ne traite pas bien avec le préfixe d'en-tête POSIX. Si vous utilisez une telle version, pensez à configurer le
$Archive::Tar::DO_NOT_USE_PREFIX
variabletrue
.
Autres conseils
J'ai essayé votre script mais n'a pas pu reproduire le problème (sur FreeBSD en utilisant Perl 5.10).