Почему структура каталогов tarball исчезает, когда я использую Perl Archive::Tar?
Я использую Perl-скрипт для изменения некоторых файлов внутри.tar, и структура каталогов внутри полученного.tar исчезает. Исключая все больше и больше кода, я дошел до того, что все, что требуется, чтобы воспроизвести это
my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');
Оба.tar-файла имеют все файлы, однако указание того, в каких каталогах находились файлы и подкаталоги, потеряно.
Я просмотрел docs и src для Archive:: 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 ответа
C:\Temp> perl -v Это Perl, v5.10.1 построен для MSWin32-x86-многопоточность (с 2 зарегистрированными патчами, смотрите perl -V для более подробной информации)
C: \ Temp> perl -Marchive::Tar -e "print $Archive::Tar::VERSION" 1,52
Невозможно воспроизвести с помощью data.tar
создан с:
C:\Temp> tar - версия tar (GNU tar) 1.21
Как отмечает @~quack, в документации говорится:
Обратите внимание, что GNU tar ранее версии 1.14 плохо справляется с префиксом заголовка POSIX. Если вы используете такую версию, рассмотрите возможность установки
$Archive::Tar::DO_NOT_USE_PREFIX
переменная кtrue
,
Я попробовал ваш скрипт, но не смог воспроизвести проблему (на FreeBSD с использованием Perl 5.10).