Perché la struttura della directory tarball scompaiono quando uso di Perl Archive :: Tar?
-
20-09-2019 - |
Domanda
sto usando uno script Perl per modificare alcuni file all'interno di una .tar, e la struttura delle directory all'interno del .tar risultante scompare. Eliminando sempre di più il codice Sono venuto per quanto riguarda tutto ciò che è necessario per riprodurre questo è
my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');
Entrambi .tar-file hanno tutti i file, ma l'indicazione di quali directory dei file e sottodirectory erano situati in sono persi.
Ho guardato attraverso la documentazione e src per Archive :: Tar ma io davvero non capisco cosa sta succedendo.
sto usando Perl 5.10.0 su Win32, catrame 1.12 e Archivio :: Tar 1.54. Ho esaminato i .tar-file in un editor e il data.tar contiene dir / e dir / file.txt, ma nel modified_data.tar si presento come dir e quindi il mio file.txt tar originale sembra ok.
Chiunque di voi che hanno visto questo prima o ha qualche idea?
Soluzione
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
Non è possibile replicare usando data.tar
creata con:
C:\Temp> tar --version tar (GNU tar) 1.21
Come @ ~ note ciarlatano, il docs stato :
Si noti che GNU tar precedenti alla versione 1.14 non gestire bene con il prefisso intestazione POSIX. Se si utilizza tale versione, considerare la creazione del
$Archive::Tar::DO_NOT_USE_PREFIX
variabile pertrue
.
Altri suggerimenti
ho provato lo script, ma non sono riuscito a riprodurre il problema (su FreeBSD utilizzando Perl 5.10).