tar: hoge: Cannot create symlink to `hage': No such file or directory

MSYSの ln がまがいものだと言うことは、以前書いた。これに関係して、symbolic link を含んだ tar アーカイブの展開に失敗する。

「Unixとcygwinだけが世界だ」みたいなプロジェクトなんかいっくらでもあるわけで、これ、日常生活に結構支障ある。

そこまで苦労するなら cygwin 使えばいいのに、って声がきこえてきそうだ :-)

cygwin がイヤになった理由なんかいくらもあるんだけど、「デカ過ぎ」「大きなお世話過ぎ」、のわりにはインストーラはいつまで経っても改善されないよな、ってのがベースにまずあって、決定打があったんだけど、それってのはまぁあれですわ、「cygwin 依存の Aと cygwin 依存の B」が相互に衝突しあってにっちもさっちもいかなくなった、てことがかつてあったのです。(知ってる人は、あぁ、あれか、と心当たりあるかも。)

今回のこれ、MSYS の tar だけではどうしようもないみたい。弱るなぁ。なので、python の tarfile モジュールで出来るかな、と。出来た。さすが。

1 import tarfile
2 with tarfile.open("openssl-1.0.2a.tar.gz", dereference=True) as tf:
3     tf.extractall()

17:00追記

1 import tarfile
2 with tarfile.open("openssl-1.0.2a.tar.gz", dereference=True, debug=1) as tf:
3     tf.extractall()

のように debug 付けた方が吉。debugは1~3まで。ふつーは1でいいけど、除外系とかの報告が1だと出なかったり。