2009-10-09 9 views
0

J'utilise un script Perl pour modifier certains fichiers à l'intérieur d'un .tar, et la structure du répertoire à l'intérieur du fichier .tar résultant disparaît. L'élimination de plus en plus de code que je suis venu aussi loin que tout ce qui est nécessaire pour reproduire c'estPourquoi la structure du répertoire tarball disparaît-elle lorsque j'utilise Perl's Archive :: Tar?

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.

J'ai regardé les docs et src pour Archive::Tar mais je ne comprends vraiment pas ce qui se passe. J'utilise perl 5.10.0 sur win32, tar 1.12 et Archive :: Tar 1.54. J'ai examiné les fichiers .tar dans un éditeur et le fichier data.tar contient dir/et dir/file.txt, mais dans le fichier modified_data.tar, ils apparaissent sous la forme dir et file.txt, de sorte que mon fichier tar original semble correct.

Quelqu'un d'entre vous qui a déjà vu ça ou qui a des idées?

Répondre

3
 
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 reproduire à l'aide data.tar créé avec:

 
C:\Temp> tar --version 
tar (GNU tar) 1.21 

Comme @ ~ notes de charlatan, le docs state:

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, envisagez de définir la variable $Archive::Tar::DO_NOT_USE_PREFIX sur true.

+4

du POD (en ce qui concerne les versions de goudron de GNU):. « 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 à régler le $ Archive :: Tar :: DO_NOT_USE_PREFIX variable à true. " –

+0

@ ~ quack: Je ne savais pas vraiment ce qu'était un en-tête posix, donc je suppose que j'ai passé cette partie. C'est exactement ce dont j'avais besoin! – Ledhund

+0

@quack: Je suis surpris que vous ne vous soyez pas contenté de répondre, car il semble que ce soit le problème. – Powerlord

0

J'ai essayé votre script mais je n'ai pas pu reproduire le problème (sur FreeBSD en utilisant Perl 5.10).

Questions connexes