複数の人間で Web を作る場合、最後にリソースが適切に揃っているのか統一的にチェックする手法が必要になると思います。1
その際、どういうツール使うのがいいのかなーと去年調べまして、今のところ
Check websites for broken links — LinkChecker
がいいのかな、と考えています。Python を使ってて Windows でも Linux でも動くし、結果が見やすいのも気に入っています。
しかしこれ、OSX で動かそうとしたときにハマります。2
File "/sw/lib/python2.5/site-packages/linkcheck/director/console.py", line 30,
in <module>
stderr = codecs.getwriter(_encoding)(sys.stderr, errors="ignore")
File "/sw/lib/python2.5/codecs.py", line 930, in getwriter
return lookup(encoding).streamwriter
LookupError: unknown encoding: X-MAC-JAPANESE
はいはい、ぐぐる先生ぐぐる先生。
……。
ねぇ。どんだけ調べても linkchecker でこの現象にハマっている事例は見つかりません。見つかるのは Django とか Trac とか。くそー、linkchecker はマイナーだったか。
で、どうもこれは Mac で Python のツールを動かすときには必ずハマる道らしい。うへー。ばかばかしくね? ばかばかしくね?
というわけで今回は以下のように修正しました。
こう直すべきなのかどうかは分からないです。
Python 2.6 で直ってるとかいう話もあるようですが、すべてのツールが 2.6 で動くように書かれてるわけでもないでしょうし、なかなか面倒な話ですね。
※ たぶん Python 2.6 を入れた状態で、fink も macports も使わずに野良で、あるいは自分でそれ用のパッケージを作って linkchecker を入れればいいんじゃないかなという気がしますが、やってみていません。
上の話とは別に以下のような問題にハマっていました。以下はハマりから解決するまでの twitter のログ。
> python25 を activate できない
> activate できないので python製ツールが port install できない
> MacPorts で Python がインストールできないっていう症状はそんなポピュラー
じゃないのかな。なんか、以前は普通にインストールしたような気もするし
なぁ。
> 意味が分からん。install されてるからダメって言うくせに uninstall しよ
うとすると install されてないって言うし。
> pkgdb みたいなのってあるんだっけ
> あー uninstall できた。+macosx まで全部要るのか。
> uninstall したがやはりダメ。
> install できてないのに install できてるとして registered ってなんなん
だ
> /Application/MacPorts の中の Python てなんだ
> 以前一度 MacPorts 全部消して入れ直したときに残ったのかな、これ。
> それっぽい。macports.conf の中に applications_dir として定義されてる。
そういうことか。
> あーやっと通った。MacPorts 消すときは /opt だけ消せばいいんじゃないの
かぁーーーー。
数日前に MacPorts を一度全部消して入れ直していたのですが、そのとき /opt しか消していなかったのです。どうやら Python はそれだけでは完全に削除されないらしい。という話でした。