Lhaplusの @LongLink エラーを回避したい!
UNIX系で作成されたアーカイブ(tar.gz形式)を Windows で展開すると、
のようなエラーになることがあります。
@LongLinkファイルというのは、GNUの tar で作成したアーカイブを、GNU以外の tar で展開すると作られるファイルです。
GNUの拡張フォーマットでは、100文字を超えるパス名を@LongLinkに変換してパス名をそのファイル内容としますが、GNU以外の tar ではそれを理解できないのでエラーになってしまうわけです。
試しに、POSIXフォーマットでアーカイブを作成してみます。
tar zcvf /tmp/foo.tgz foo --format=posix
すると、このようなエラーになりました。
tarヘッダのファイル名に格納できる100文字を使い切ると、ファイル名にパーミッションを示す数字(ここでは0000644)が付加されてしまうようです。
対策
Windows の Lhaplus で解凍する前提なら、tar ではなく zip でアーカイブを作るクセをつけておいた方が安全です。
zip -r /tmp/foo.zip foo
ただし、zip で作成すると、ファイルの所有者IDやパーミッションは引き継がれないので、それを承知で運用しましょう。