Perché la struttura della directory tarball scompaiono quando uso di Perl Archive :: Tar?

StackOverflow https://stackoverflow.com/questions/1544468

  •  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?

È stato utile?

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 per true.

Altri suggerimenti

ho provato lo script, ma non sono riuscito a riprodurre il problema (su FreeBSD utilizzando Perl 5.10).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top