2013年8月アーカイブ

久しぶりにrep2のバージョンを上げようと思って svn up したら、svn が http なんて知らないよ、と言うので調べてみたら、subversion 1.8 から、今までの neon の代わりに SERF って言うのを使うらしく、かつ ports ではデフォルトで無効になっていることがわかった。
そこで、/usr/ports/devel/subversion で make config して、SERF を有効にしてビルドしてみたところ、libdb-4.2.so が見つからないと言って db42 のビルドを始めるが、既にインストールされているよん、的なエラーで失敗する。
見てみると、/usr/local/lib/libdb-4.2.so と言うファイルは存在しており、何段階かのシンボリックリンクの先は /usr/local/lib/db42/libdb-4.2.so.2 と言う実体がある。
/usr/ports/devel/subversion/Makefile を読んでみても、BDB_BUILD_DEPENDS=yesくらいのことしか書いていない。
/usr/ports/Mk/bsd.database.mk とか読んで見ても良くわからず、とりあえず not found で調べてみると、/usr/ports/Mk/bsd.port.mk の中でライブラリの依存関係をチェックしているらしいことがわかった。
で、そこで何をやっているのかと見てみると、
`file -b -L --mime-type $${libdir}/$${lib}` = "application/x-sharedlib"
みたいなチェックをしている。
早速、上記fileコマンドを /usr/local/lib/libdb-4.2.so にかけてみると、
# file -b -L --mime-type /usr/local/lib/libdb-4.2.so
application/x-symlink
なんて表示される。これが application/x-sharedlib じゃないから not found になっているわけだ。
man file してみると、-Lオプションはシンボリックリンクを辿るオプションらしいのだが、--mime-typeオプションがついているとうまく機能していないらしい。
しょうがないので、以下の様にファイルをパスではなく標準出力から食わせることで対応した。

ちょっと古いportsツリーを持っている別のマシンで見たところ、少なくとも 2013/3くらいまでは file コマンドを使うのとは別の方法でライブラリの存在チェックをしていたようだ。
で、FreeBSD9についても調べてみたところ、FreeBSD9.2のfileコマンドは、ちゃんと--mime-typeオプションがついていても-Lオプションが効いて、application/x-sharedlibを返してくれていた。

本当はportsのメンテナンスしてる人にレポートしないといけないんだけどなあ(こればっかり)
2013年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

このアーカイブについて

このページには、2013年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2013年6月です。

次のアーカイブは2013年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1