Почему структура каталогов tarball исчезает, когда я использую Perl Archive :: Tar? - PullRequest
0 голосов
/ 09 октября 2009

Я использую скрипт Perl для изменения некоторых файлов внутри .tar, и структура каталогов внутри полученного .tar исчезает. Исключая все больше и больше кода, я дошел до того, что все, что требуется для воспроизведения, это

my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');

Оба .tar-файла имеют все файлы, однако указание того, в каких каталогах находились файлы и подкаталоги, потеряно.

Я просмотрел документы и документы на предмет Архив :: Tar , но я действительно не понимаю, что происходит.

Я использую Perl 5.10.0 на win32, tar 1.12 и Archive :: Tar 1.54. Я изучил .tar-файлы в редакторе, и data.tar содержит dir / и dir / file.txt, но в файле modify_data.tar они отображаются как dir и file.txt, поэтому мой оригинальный tar выглядит нормально.

Кто-нибудь из вас видел это раньше или у вас есть идеи?

Ответы [ 2 ]

3 голосов
/ 09 октября 2009
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

Невозможно выполнить репликацию с использованием data.tar, созданного с помощью:

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

Как отмечает @ ~ quack, состояние docs :

Обратите внимание, что GNU tar ранее версии 1.14 плохо справляется с префиксом заголовка POSIX. Если вы используете такую ​​версию, рассмотрите возможность установки переменной $Archive::Tar::DO_NOT_USE_PREFIX на true.

0 голосов
/ 09 октября 2009

Я попробовал ваш скрипт, но не смог воспроизвести проблему (на FreeBSD с использованием Perl 5.10).

...