見出し画像

Lhaplusの @LongLink エラーを回避したい!

UNIX系で作成されたアーカイブ(tar.gz形式)を Windows で展開すると、

画像1

のようなエラーになることがあります。

@LongLinkファイルというのは、GNUの tar で作成したアーカイブを、GNU以外の tar で展開すると作られるファイルです。
GNUの拡張フォーマットでは、100文字を超えるパス名を@LongLinkに変換してパス名をそのファイル内容としますが、GNU以外の tar ではそれを理解できないのでエラーになってしまうわけです。

試しに、POSIXフォーマットでアーカイブを作成してみます。

tar zcvf /tmp/foo.tgz foo --format=posix

画像2

すると、このようなエラーになりました。

tarヘッダのファイル名に格納できる100文字を使い切ると、ファイル名にパーミッションを示す数字(ここでは0000644)が付加されてしまうようです。

対策

Windows の Lhaplus で解凍する前提なら、tar ではなく zip でアーカイブを作るクセをつけておいた方が安全です。

zip -r /tmp/foo.zip foo

ただし、zip で作成すると、ファイルの所有者IDやパーミッションは引き継がれないので、それを承知で運用しましょう。