libsystem_symptoms で悩む
先日の実験で意外と PHP が良かったものですから、まじめにインストールをして使ってみようと思いました。ですがインストールが思うように行きません。そこで奈幾乃のとった行動とは……
前回の作業では先を急いでいましたから、エラーが出る度に機能を無効にしていって、結果、下記のようなオプションになりました。
./configure --disable-libxml --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear
「こんなに無効にしてまともに動くのかしら?」とは思いましたが、まぁ普通に動いて実験もできました。でも XML ってウェブでかなり扱われていたんじゃないかしら?と疑問に思うようになりました。WEB 開発言語三銃士のひとりなのにね……
ちょっとまって。libxml ってシステムに入ってたような気がするのだけど……。/usr/lib
以下にあったわ。これ、configure
スクリプトが見に行ってないのかもしれない。試しに下記のようにするとコンフィギュが完了した!
./configure CFLAGS=-I/usr/include LDFLAGS=-L/usr/lib
しかし make
をしてみると下記のエラーが……
clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [ext/opcache/opcache.la] Error 1
再度 configure
スクリプトの help を見ると --disable-opcache
というオプションがありますね。−−−ということで再度挑戦!
ld: file not found: /usr/lib/system/libsystem_symptoms.dylib for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [sapi/cli/php] Error 1
う〜ん、なかなか進まない。野良で libxml を入れた方が早そう。
libsystem_symptoms.dylib
で検索をしたものの、情報があまりありません。StackOverflow では下記のコマンドを入力するといいよ!と書いてあるのだけれど、中身が何をしてるのかわからないので怖い。sudo
だし……
sudo /usr/bin/sed -i.backup -E -e 's@/usr/lib/system/libsystem_symptoms.dylib(, )?@@' \ $(grep -ril /usr/lib/system/libsystem_symptoms.dylib \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib)
ちょっずつ分解していきましょう。
grep
の部分は内部に "/usr/lib/system/libsystem_symptoms.dylib" と記述のあるファイルを /Applications/Xcode.app/.../usr/lib ディレクトリ以下から探しているわけだよね。そしてそのファイル達に対して sed
を実行するわけね。
sed
の -i
オプションはファイルを置き換える、-E
は拡張された正規表現を使う、-e
は次のコマンドを実行させる、とのこと。
そのコマンドは 's@/usr/lib/system/libsystem_symptoms.dylib(, )?@@'
なのだけれども、はじめて見る形だわ。"s" は置換。"@" の意味がわからなかったけれども、これは普段使っている "/" の代わりなんだって。検索置換したい文字列の中に "/" が入っていた場合にエスケープするのが面倒なので、例えば "@" や "!" などの文字が使えるのだとか。これは豆ですね。見慣れた形にすると 's/hoge(, )?//'
ということになる。
単純に削除するってことですね。でもこれって libsystem_symptoms.dylib
を無かったものにするということでしょ?システムにこういう変更を加えてもいいのかしらね?
libxml2 といえば、Gnuplot をインストールする時に gdlib を要求し、これが freetype2 と fontconfig を要求し、そしてこれが libxml2 を要求し、という具合に連鎖していったことを思いだしました。「iTunes がおきあがり なかまに なりたそうに ……(2ch の誰か)」そのものでしたわ。
そもそも Apple が /usr/lib/system/libsystem_symptoms.dylib
を入れてないのがいけないねん。パッケージミスという話もあるけれど、もう XCode 8.2 になっているので、意図的というか仕様なんでしょうねぇ。
結局、最初の予感通り、野良で libxml2 をインストールすることにしました。すると ./configure
にオプションを付けなくてもビルドまで完了するようになりました。テストの結果は下記。ちょっと良くなったかな?
===================================================================== TEST RESULT SUMMARY --------------------------------------------------------------------- Exts skipped : 48 Exts tested : 26 --------------------------------------------------------------------- Number of tests : 15222 10166 Tests skipped : 5056 ( 33.2%) -------- Tests warned : 1 ( 0.0%) ( 0.0%) Tests failed : 2 ( 0.0%) ( 0.0%) Expected fail : 35 ( 0.2%) ( 0.3%) Tests passed : 10128 ( 66.5%) ( 99.6%) --------------------------------------------------------------------- Time taken : 387 seconds =====================================================================