Mac OS X Mavericks

新OSの Mavericks とはアメリカの海岸の名前らしい。付属のデフォルトの壁紙は、中国の汚染された湖沼のようなものだったので、速攻で変えましたが。
で、この新OSは、名前からはどういうコンセプトのモノなのかが分かり難い。多分、Appleインパクトが薄いと思ったのだろう、なので今回は無料で提供された。なので、早速アップデートしました!!
SSDドライブにインストールしたのですが、約1時間かかりました。インストールの進行を示すプログレスバーが「一分以内」と表示されてから10分以上表示が止まったのには「またか」って思った。OS9の頃は、プログレスバーが終了位置を突き破って、さらに右に伸びていったものだった。

Windowsユーザーには信じられないことかもしれないけれども、かつてMac OS Xは、新しいバージョンが出るたびに動作が速くなっていったものだった。
OS X登場当初のOSの最適化がアレだったから、というのもあるが、MacOS9との互換性とか、旧機種でも動く必要があったために登場当初は遅かったという理由もあるので、あまり突っ込まないのがオトナの条件。いや〜、年取ったら自然にオトナになるものだと思っていましたが、全然そういうものじゃないんですね。
Mac OS に話を戻すと、ここ最近のOSの名前にネコ科の動物が付けられていたのは、どんどん速くなりますよ、というアオリも入っていたわけで、ところがここしばらくは"速さ"ではなく、Lionとか言い出して、スピードよりブランディングか、と思っていました。
実はそれは仕方がない理由があって、Macはここしばらくハードウエアもインテル製の同一アーキテクチャCPUを使い続けていて、旧機種との互換性とかも難しくなかったため、OSで処理が速くなる要素はあまり無かったのと、逆に、iOSとの融合とかが入って遅くなる危険性も有ったのです。
で、急にネコ科をヤメた今回のOSの目玉は、画面の描画が速くなる、という、なんか原点回帰なもの。
ウインドウの裏に隠れている部分の描画を止めたら速くなりました、ってそらそうだろ。やっと気が付いたのか。
で、ブラウザを立ち上げただけで実際に速くなっている。タブの切替がサクサクとスムーズ過ぎて捗る。

で、ボヤいてないじゃん!と思われそうなので、しっかりボヤかせてもらうと、自作CGI周りでそれは起こったのです。
まぁ、それもブラウザを立ち上げた時点で判るのですが、CGIが動いていないと。Apache Webサーバーは動いているのだけれども、httpd.confでCGIが許可されていない、っていうか、OSアップデートで勝手にコンフィグファイル書き換えんな!(怒)
で、phpCGIはコンフィグ書き換えで動いたものの、perlはlibapreq2を使っているから厄介でして。で、ちらっと /usr/lib を見ると、libapreq2が入っている。
しかし、 /usr/libexec/apache2 には mod_apreq2.so がない。実行ファイルがないのにライブラリだけあるとか意味わからん。
で、perlのバージョンを確認すると 5.16になっている。アップデート前までは 5.10を使っていたのですが、5.10のフォルダーは根こそぎ消されている。しかし、勝手に入れたモジュールは残っていて、しかも即利用可能な形にパスが通っているため、互換性とかの確認がめんどくさい。そこは消してくれていたほうが良かったのに。
モジュールのアップグレードでも確認しようかとcpanを起動したら、cpanのコンフィグはそのまま残っていたため、いきなりlibapreq2をインストールしてみた。
makeまでは通ったものの、installでつまづく。そのエラーが意味不明。


ld:Library not found for -lapreq2

いや、その -lapreq2 であるところのlibapreq2を、現在インストールしているはずなのだが???
メッセージを良く読むと、それ以前にlibapreq2は /usr/libにインストール済み。確かに /usr/lib に libapreq2は既に存在している。
パスの指定が悪いのかと思って見直したが、

 -L/usr/lib -lapreq2 

となっており、そこは問題ない。
もっと前のメッセージを読むと、libapreq2のアーキテクチャはこれで良いのか?的なwarningが出ていた。
この記事の枕の部分でも触れたけれども、Mac OS Xはいろんなアーキテクチャで実行されなければならなかった時代もあったため、アプリケーションは通常、複数のアーキテクチャで動作可能なように複数の実行ファイルがバインドされた形をしていることが多い。
で、warningの詳しい内容は、x86_64アーキテクチャ(64bit)でコンパイルしているけど、i386(32bit)の実行ファイルとリンクしないよね? と念押ししている。
ところが、エラーの出た箇所(libapreq2を使ったperl用ユーティリティ(Apache2::Upload とか))では、私がx86_64とi386の両方のアーキテクチャを指定していて、warningの指摘通り、リンクできない状態になっていたらしい。
で、そこまで分かれば、あとは、その "-arch i386"が何処で指定されているか? だけなのだが、これを見つけ出すために5時間も掛かった。それは・・・

/System/Liblary/Perl/5.16/darwin-thread-multi-2level/Config_heavy.pl

の中だった。
これは分からん!
perl 5.16は、今回のOSアップデートでインストールされた部分だという思い込みがあって、まさか、そこに、以前の設定が引き継がれて書き込まれているとは思わなんだ。
cpanのコンフィグがそのままだったことから気づくほど、私は名探偵ではない。。。

というわけで、現在はlibapreq2も無事動いています。
疲れた。