私はPerlのアーカイブ::タールを使用するときに、なぜtarballのディレクトリ構造は消えませんか?

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

  •  20-09-2019
  •  | 
  •  

質問

私は.tarファイル内のいくつかのファイルを変更するPerlスクリプトを使用していますし、得られた.tar内部のディレクトリ構造が消えます。 私は限りこれを再現するために必要だとすべてが

であるとして来てより多くのコードを排除
my $data_tar = Archive::Tar->new('data.tar');
$data_tar->write('modified_data.tar');

両方の.tar-ファイルは、しかし、ファイルとサブディレクトリをディレクトリ何の表示がに位置していたすべてのファイルは、失われています。

私はアーカイブ::タールのドキュメントおよびSRCを通して見てきましたしかし、私は本当に何が起こっているのか理解していません。

私は、Win32、タール1.12およびアーカイブ::タール1.54にperlの5.10.0を使用しています。 私は、エディタでの.tar-ファイルを調べて、data.tarはDIR /とdir / file.txtをが含まれていますが、modified_data.tarに、彼らはdirとfile.txtを私の元のtarはOKらしいのでとして表示されます。

の前にこれを見たりしているあなたの誰もが任意のアイデアがありますか?

役に立ちましたか?

解決

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

@として〜いんちきノート、ドキュメント状態でます:

  

以前のバージョン1.14よりGNUタールは、POSIXヘッダプレフィックスとよく対応していないことに留意されたいです。あなたは、このようなバージョンを使用している場合は、 $Archive::Tar::DO_NOT_USE_PREFIX <設定することを検討/> trueする変数ます。

他のヒント

私はあなたのスクリプトを試してみましたが、(Perlの5.10を使用してFreeBSD上で)問題を再現することができませんでした。

scroll top