لماذا تختفي بنية دليل tarball عندما أستخدم أرشيف Perl::Tar؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

أنا أستخدم برنامج Perl النصي لتعديل بعض الملفات داخل .tar، وتختفي بنية الدليل داخل .tar الناتج.لقد قمت بإزالة المزيد والمزيد من التعليمات البرمجية التي وصلت إلى كل ما هو مطلوب لإعادة إنتاج هذا

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

يحتوي كلا الملفين .tar على جميع الملفات، ولكن يتم فقدان الإشارة إلى المجلدات التي توجد بها الملفات والأدلة الفرعية.

لقد بحثت في المستندات و src لـ الأرشيف::Tar لكنني حقًا لا أفهم ما يحدث.

أنا أستخدم Perl 5.10.0 على win32 وtar 1.12 وArchive::Tar 1.54.لقد قمت بفحص ملفات .tar في أحد المحررات وكان ملف data.tar يحتوي على dir/ و dir/file.txt، لكن في ملف Mod_data.tar يظهران كـ dir و file.txt لذا يبدو tar الأصلي الخاص بي على ما يرام.

هل منكم من رأى هذا من قبل أو لديه أي أفكار؟

هل كانت مفيدة؟

المحلول

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، فإن حالة المستندات:

لاحظ أن GNU tar الأقدم من الإصدار 1.14 لا يتوافق بشكل جيد مع بادئة رأس POSIX.إذا كنت تستخدم مثل هذا الإصدار، ففكر في تعيين $Archive::Tar::DO_NOT_USE_PREFIX متغير ل true.

نصائح أخرى

وحاولت السيناريو الخاص بك ولكن لا يمكن إعادة إنشاء المشكلة (على فري باستخدام بيرل 5.10).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top