さて、4回目、ついに今回は Tokyo Promenade を動かすところまでやってみます!。今日はリアルタイムです仕込みじゃないです!。これ書きながら実際に設定してます!。
いきさつは良いから結果だけ知りたい、という方はこのポストの末尾をご覧ください。
Tokyo Promenade とは
さてここで、 Tokyo Promenade ってなんぞ、というめくら(ぴー)野郎に簡単にご説明しますと、 mixi にお勤めの、いや僕にとっては Hyper Estraier の人、そしてテクノロジー野郎達の間では Tokyo Tyrant などの Tokyo シリーズ、そして今は次の Kyoto シリーズで高名な平林さんが作られた CMS であります。何が良いかというと…。
- 平林さんが作ってる
- 実行ファイルはコンパイル済み実行オブジェクトファイル一個だけ
- Lua でプラグインが書ける
- すげえ速い
- kzys さんが使ってる
という当たりがあげられます。概要は、平林さんご自身が mixi のエンジニアブログに書かれている通りでさらっとインストールできて、一瞬で使い始められます。データストアとしては Tokyo Cabinet が使われています。え、 kzys さんって誰って?そりゃあんた、「型仙人(ワラ」とか「JAVAスクリプトが得意な oogatta さんですよね(ワラ」とかつねに僕の傷口をぐりぐりと抉ってくるあの人である。えぐいぜ。
必要なもの
Tokyo Promenade のサイトのインストールの項をみると、先に Tokyo Cabinet をいれてね。ということなので Tokyo Cabinet のインストールの項に目を移すと、 zlib と bzip2 を予めインストールするようにしっかり書かれてあります。
というわけで、きっと必要なものは、
- zlib
- bzip2
- Tokyo Cabinet
- Tokyo Promenade
とその依存ファイルとなるようです。これらについて、ここまでにやってきた例の検討から機内持ち込みまでのフローを行ってみます。
とはいえ、検討…、うーん、正直に告白すると、 zlib と bzip2 は単なる圧縮ライブラリだから、大丈夫だと思うんだよなあ。くらいの感覚です。ただ、検索してみたらバッファオーバーフロー出してるんですよねー。 zlib 。 OpenBSD 版は大丈夫だ、とも書いてありますが。ということは、デフォルトインストールで zlib は入っているのかな?。どう確かめたらいいんだろう。bzip2 は OpenBSD のパッケージにあるので、これは入れるのは容易いだろう。
で、Tokyo Tyrant はデータストア、悪用ねえ…悪用…、うーん、自分セキュリティマインドが低いので、こういうときかなり不利というか、何も思いつかないというのが正直なところ。最新バージョンをちゃんとチェックしておけ、ということ、運用でカバーせよという領域かな。よし、 Tokyo Tyrant と Tokyo Promenade に関しては僕の Opera の巡回フォルダに入れて毎日チェックする、運用にします。
zlib インストール& jail に持ち込み
それでは順にはじめます。 zlib はそもそも入ってるんだか入ってないんだか良くわかりません。とりあえず man -k してみます。
$ man -k zlib Compress::Raw::Zlib (3p) - Low-Level Interface to zlib compression library Compress::Zlib (3p) - Interface to zlib compression library IO::Uncompress::AnyInflate (3p) - Uncompress zlib-based (zip, gzip) file/buffer IO::Zlib (3p) - IO:: style interface to Compress::Zlib compress (3) - zlib general purpose compression library
ああ、なんだかあるっぽいです。一番下の compress(3) がそうですね。でもある方が、 chroot jail 内に何を持ち込んでいいかわからなくて困るんですけどね…。というわけで実際困ったので、 zlib のソースを落としてきて適当にコンパイルしてみました。その結果…、
# make install cp libz.a /root/zlib/lib cp libz.so.1.2.5 /root/zlib/lib cp zlib.3 /root/zlib/share/man/man3 cp zlib.pc /root/zlib/lib/pkgconfig cp zlib.h zconf.h /root/zlib/include ( cp だけ抜粋)
以上がインストールされました。 OpenBSD のパッケージが全く一緒とは限らないのですが、 libz と zlib と名のつくものを持ち込めば良さそうです。 man とか pkgconfig はいらないですしね。
# cd / # find . -name "*zlib*" ./usr/include/net/zlib.h ./usr/include/zlib.h ./usr/libdata/perl5/site_perl/amd64-openbsd/net/zlib.ph ./usr/libdata/perl5/site_perl/amd64-openbsd/zlib.ph ./usr/share/man/cat3/zlibCompileFlags.0 ./usr/share/man/cat3/zlibVersion.0 ./usr/ports/devel/jdk/1.7/patches/patch-jdk_src_share_native_java_util_zip_zlib-1_1_3_zconf_h ./usr/ports/lang/erlang/patches/patch-erts_emulator_zlib_Makefile_in # find . -name "*libz*" ./usr/lib/libz.so.4.1 ./usr/lib/libz.a ./usr/lib/libz_p.a ./usr/lib/libz_pic.a
find すると上記のような結果でしたので、必要そうなものを jail 内に cp したいと思います。ってこれ、結局 /usr/lib/libz.so.4.1 だけでいいんじゃ?。ま、ここでなにか足りなかったらあとで ldd やら systrace すると出てくるでしょう。と思うので気楽にやります。
# cp /usr/lib/libz.so.4.1 /var/www/usr/lib/
以上 zlib 終わり!
bzip2 インストール& jail に持ち込み
これは man -k しても入っていないようなので、いれる!だがパッケージがあるので、
# wget ftp://ftp.lambdaserver.com/pub/OpenBSD/4.6/packages/amd64/bzip2-1.0.5.tgz wget: can't load library 'libiconv.so.6.0'
って何これ、こないだまで動いていたじゃんよぉーー(泣)。
# find / -name "libiconv.so.6.0" /usr/local/lib/libintl.so.4.0
超ある。
# ldconfig -r
/var/run/ld.so.hints:
search directories: /usr/lib
(以下略)
超ない! /usr/local/lib どうした!?ということで ldconfig を OpenBSD のマニュアルで検索して、設定ファイルは /etc/rc.conf.conf の、 shlib_dirs という項目に追加すればいいみたいなので、する。
# ldconfig /usr/local/lib (これでしのぎつつ) # grep shlib /etc/rc.conf >> /etc/rc.conf.local # mg /etc/rc.conf.local (編集) # cat /etc/rc.conf.local shlib_dirs="/usr/local/lib/" # ldconfig -r /var/run/ld.so.hints: search directories: /usr/lib:/usr/local/lib
行けたのであらためて
# wget ftp://ftp.lambdaserver.com/pub/OpenBSD/4.6/packages/amd64/bzip2-1.0.5.tgz # pkg_add bzip2-1.0.5.tgz bzip2-1.0.5: complete
完了。さて、問題はまたどれを jail 内に持ち込んだらいいかということですね。おお、めんどい! ldconfig のせいで一旦飽きた。
素直になれなくてをみてまた唖然となったので復帰。さて、何がインストールされたかは単純にこのパッケージを開けてみれば良いはず。
# tar xzvf bzip2-1.0.5.tgz +CONTENTS +DESC lib/libbz2.so.10.4 bin/bunzip2 bin/bzcat bin/bzcmp bin/bzdiff bin/bzegrep bin/bzfgrep bin/bzgrep bin/bzip2 bin/bzip2recover bin/bzless bin/bzmore include/bzlib.h lib/libbz2.a man/man1/bunzip2.1 man/man1/bzcat.1 man/man1/bzcmp.1 man/man1/bzdiff.1 man/man1/bzegrep.1 man/man1/bzfgrep.1 man/man1/bzgrep.1 man/man1/bzip2.1 man/man1/bzip2recover.1 man/man1/bzless.1 man/man1/bzmore.1 share/doc/bzip2/manual.html
なるほど。これ、もなんとなく絞れてきたと言うか、 bin の中身と lib/libbz2.so.10.4 だけがあればいいっぽい。というか bin の中身も使ってない気がするなあ。とりあえず libbz2.so.10.4 だけ cp する。
# mkdir /var/www/usr/local # mkdir /var/www/usr/local/lib/ # cp /usr/local/lib/libbz2.so.10.4 /var/www/usr/local/lib
bzip2 以上!次は Tokyo Cabinet 。
Tokyo Cabinet インストール& jail に持ち込み
ソースからのインストール。
# wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.44.tar.gz # tar xzvf tokyocabinet-1.4.44.tar.gz # cd tokyocabinet-1.4.44 # ./configure # make (略) Using $< in a non-suffix rule context is a GNUmake idiom (line 717 of Makefile)
make に失敗。「それって GNUmake の文法だね」というエラー。そうそう!これ良くみる良くみる。 make が GNUmake じゃないからね。というわけで、こういうときは素直に GNUmake を使うのが賢い生き方というもの。
# make clean # wget ftp://ftp.lambdaserver.com/pub/OpenBSD/4.6/packages/amd64/gmake-3.81p0.tgz # pkg_add gmake-3.81p0.tgz gmake-3.81p0: complete # rm gmake-3.81p0.tgz # gmake # gmake insall cp -Rf tcutil.h tchdb.h tcbdb.h tcfdb.h tctdb.h tcadb.h /usr/local/include cp -Rf libtokyocabinet.a libtokyocabinet.so.9.7.0 libtokyocabinet.so.9 libtokyocabinet.so /usr/local/lib cp -Rf tcutest tcumttest tcucodec tchtest tchmttest tchmgr tcbtest tcbmttest tcbmgr tcftest tcfmttest tcfmgr tcttest tctmttest tctmgr tcatest tcamttest tcamgr /usr/local/bin cp -Rf tcawmgr.cgi /usr/local/libexec cp -Rf COPYING ChangeLog THANKS doc tokyocabinet.idl /usr/local/share/tokyocabinet cd man && cp -Rf tcutest.1 tcumttest.1 tcucodec.1 tchtest.1 tchmttest.1 tchmgr.1 tcbtest.1 tcbmttest.1 tcbmgr.1 tcftest.1 tcfmttest.1 tcfmgr.1 tcttest.1 tctmttest.1 tctmgr.1 tcatest.1 tcamttest.1 tcamgr.1 /usr/local/share/man/man1 cd man && cp -Rf tokyocabinet.3 tcutil.3 tcxstr.3 tclist.3 tcmap.3 tctree.3 tcmdb.3 tcmpool.3 tchdb.3 tcbdb.3 tcfdb.3 tctdb.3 tcadb.3 /usr/local/share/man/man3 cp -Rf tokyocabinet.pc /usr/local/lib/pkgconfig ( cp だけ抜粋)
ということでどうも無事インストール完了のようです。さて、インストールされたこれらの中からまた必要なものを jail に移す。今度は bin も必要かな?(ただの勘)。
/usr/local/lib/libtokyocabinet.so.9.7.0 /usr/local/lib/libtokyocabinet.so.9 -> libtokyocabinet.so.9.7.0 /usr/local/lib/libtokyocabinet.so -> libtokyocabinet.so.9.7.0
これらかなと!思います。やります。(追記)結果 bin はいらなかった。
# cp -Rf /usr/local/lib/libtokyocabinet.so.9.7.0 /usr/local/lib/libtokyocabinet.so.9 /usr/local/lib/libtokyocabinet.so /var/www/usr/local/lib
とりあえず複製はした。ただしおそらく bin の依存してるライブラリとかは全く確かめてない。 bin いらないのかあ。どうかなあ。逐一確かめようがないから怖いな…。(追記)結果 bin はいらなかった。
Tokyo Promenade インストール& jail に持ち込み
で、いよいよ TP です!
# wget http://1978th.net/tokyopromenade/tokyopromenade-0.9.21.tar.gz # tar xzvf tokyopromenade-0.9.21.tar.gz # cd tokyopromenade-0.9.21 # ./congigure # gmake # gmake install cp -Rf prommgr /usr/local/bin cp -Rf promenade.cgi promscrsample.lua promscrcount.lua promupdiff.sh promupping.sh /usr/local/libexec cp -Rf promenade.tmpl promenade.css passwd.txt COPYING ChangeLog THANKS doc misc /usr/local/share/tokyopromenade cd man && cp -Rf prommgr.1 /usr/local/share/man/man1
以上。こちらは、そもそも cgi ファイルや tmpl ファイルが必要なので、インストールマニュアルに従って複製。何本かカテゴリ分けしてブログを立てる予定なのですが、とりあえず本流として /var/www/cgi-bin/blog に設置する。データべースファイルなどもそのままこのディレクトリ中に置き、 Apache で Deny するので前々回に決めた運用方針通り www をオーナーにして、ディレクトリは 500 。
# mkdir /var/www/cgi-bin/blog # chown www:www /var/www/cgi-bin/blog # chmod 700 /var/www/cgi-bin/blog # cp /usr/local/libexec/promenade.cgi /var/www/cgi-bin/blog # cp /usr/local/share/tokyopromenade/promenade.* /var/www/cgi-bin/blog # cp /usr/local/share/tokyopromenade/passwd.txt /var/www/cgi-bin/blog # prommgr create /var/www/cgi-bin/blog/promenade.tct # chown www:www /var/www/cgi-bin/blog/* # chmod 500 /var/www/cgi-bin/blog/promenade.cgi # chmod 400 /var/www/cgi-bin/blog/promenade.css # chmod 400 /var/www/cgi-bin/blog/promenade.tmpl # chmod 600 /var/www/cgi-bin/blog/passwd.txt # chmod 600 /var/www/cgi-bin/blog/promenade.tct* # ls -l /var/www/cgi-bin/blog/ total 1840 -r-x------ 1 www www 126 May 6 14:45 passwd.txt -r-x------ 1 www www 156629 May 6 14:44 promenade.cgi -r-------- 1 www www 10826 May 6 14:45 promenade.css -rw------- 1 root www 528704 May 6 14:48 promenade.tct -rw------- 1 root www 41728 May 6 14:48 promenade.tct.idx.cdate.dec -rw------- 1 root www 41728 May 6 14:48 promenade.tct.idx.mdate.dec -rw------- 1 root www 41728 May 6 14:48 promenade.tct.idx.name.lex -rw------- 1 root www 41728 May 6 14:48 promenade.tct.idx.xdate.dec -r-------- 1 www www 39670 May 6 14:45 promenade.tmpl
パスワードファイルとデータベースファイルは書き込むので 600 。blog ディレクトリ自体も書き込み権限がないと、データベースの読み込みはできるけど新規の書き込みができない(きっとなにか新しいファイルを一瞬作ってるのかな)ので、 700 です。
よし、これでいいか!?どうだ!?あ、 upload ディレクトリ作るの忘れた。
# mkdir /var/www/cgi-bin/blog/upload # chown www:www /var/www/cgi-bin/blog/upload # chmod 700 /var/www/cgi-bin/blog/upload # ls -l /var/www/cgi-bin/blog/ total 1844 -r-x------ 1 www www 126 May 6 14:45 passwd.txt -r-x------ 1 www www 156629 May 6 14:44 promenade.cgi -r-------- 1 www www 10826 May 6 14:45 promenade.css -rw------- 1 www www 528704 May 6 14:48 promenade.tct -rw------- 1 www www 41728 May 6 14:48 promenade.tct.idx.cdate.dec -rw------- 1 www www 41728 May 6 14:48 promenade.tct.idx.mdate.dec -rw------- 1 www www 41728 May 6 14:48 promenade.tct.idx.name.lex -rw------- 1 www www 41728 May 6 14:48 promenade.tct.idx.xdate.dec -r-------- 1 www www 39670 May 6 14:45 promenade.tmpl drwx------ 2 www www 512 May 6 14:52 upload
こんどこそ、これで…。ではおごそかに例のコマンドを実行。
# chroot -u www /var/www /cgi-bin/blog/promenade.cgi /cgi-bin/blog/promenade.cgi: can't load library 'libpthread.so.11.1'
んー、だめだった。そりゃそっか。
# ldd /var/www/cgi-bin/blog/promenade.cgi /var/www/cgi-bin/blog/promenade.cgi: Start End Type Open Ref GrpRef Name 0000000000400000 0000000000813000 exe 1 0 0 /var/www/cgi-bin/blog/promenade.cgi 0000000200940000 0000000200db7000 rlib 0 1 0 /usr/local/lib/libtokyocabinet.so.9 0000000204bbf000 0000000204fce000 rlib 0 2 0 /usr/local/lib/libbz2.so.10.4 0000000203009000 000000020341d000 rlib 0 2 0 /usr/lib/libz.so.4.1 0000000203850000 0000000203c74000 rlib 0 2 0 /usr/lib/libpthread.so.11.1 0000000203f9b000 00000002043bc000 rlib 0 2 0 /usr/lib/libm.so.5.0 000000020b305000 000000020b7e4000 rlib 0 2 0 /usr/lib/libc.so.51.0 000000020c200000 000000020c200000 rtld 0 1 0 /usr/libexec/ld.so
うひゃあ!。と、思ったけど、無いのって libpthread.so.11.1 だけかな?
# cp /usr/lib/libpthread.so.11.1 /var/www/usr/lib # chroot -u www /var/www /cgi-bin/blog/promenade.cgi Content-Type: text/html; charset=UTF-8 Last-Modified: Thu, 06 May 2010 14:56:41 GMT Cache-Control: no-cache <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> (中略) <h2>Error</h2> <p class="error">[database error: file not found] Opening the database was failed.</p> <p class="error">[database error: file not found] Closing the database was failed.</p> <p class="info">There is no article.</p> </div> </div> </body> </html>
きた!!きた!きたけど database 開けないって…。えええ…。データベース自体に触れないのか、データベースに触るためのライブラリか bin が無いのか…。と思ってブラウザから見たらこのエラー出なかった!!。なんだろね。大丈夫かな? systrace してみよっか。
native-fsread: filename eq "/<non-existent filename>: /usr/share/zoneinfo/GMT" then permit native-fsread: filename eq "/<non-existent filename>: /usr/share/zoneinfo/posixrules" then permit native-fsread: filename eq "/<non-existent filename>: /etc/localtime" then permit
これらが無いって!。うわわ、timezone 系か。ちょっとこれは OpenBSD がどう管理してるかわからないな…。調査継続…。ということで、一旦ブラウザからデフォルトのパスワードを変更して、今日はここまでかなー。と思いきやなんかやかやってしまった。
データベースのエラーの件
コマンドから実行した時だけ出ていたので、 SCRIPT_NAME とれないからとかその系統かなと思い、設定ファイルであるところの /var/www/cgi-bin/blog/promenade.tmpl を開けて、先頭の方を下記の通り変更。
[% CONF database "/cgi-bin/blog/promenade.tct" \%] [% CONF password "/cgi-bin/blog/passwd.txt" \%] [% CONF upload "/htdocs/blog/upload" \%]
これでコマンドからもデータベース読み取りに関するエラーはなくなった。ちなみに、ブラウザからのポストがデータベース書き込みエラーが出て不可能な状態。パーミッションに問題はないと思うので、bin かなにかが足らないか。要調査。と思ったがやっぱりパーミッションの問題で、 /cgi-bin/blog ディレクトリに書き込み権限が必要だった。一瞬テンポラリファイル作ったりしてるのかな??。こういう、サブプロセスとして立ち上げられるプロセスの trace ってどうやっていいのかわからない…。今後の課題です。
ScriptAlias だった
upload は最初 cgi-bin の中に作ったが、 cgi-bin は ScriptAlias されていて AddHandler でいちいちオプトアウトしていくのもどうかと思ったので DocRoot に移す。 css も移す。
# mv /var/www/cgi-bin/blog/upload /var/www/htdocs/blog/ # mv /var/www/cgi-bin/blog/promenade.css /var/www/htdocs/blog/
Apache で password を deny
これで、 cgi ファイル以外に cgi-bin/blog に存在するのはパスワードファイルとデータベースファイル一式となりました。データベースファイルは、この場合持ってきたかったらどうぞ持っていってくださいという具合だけど、 password だけは困るので Apache で Deny する。
httpd の設定ファイルに関してはあとでバーチャルきったりするのでその時にちゃんと整えたいと思います。
<Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all <Files "/var/www/cgi-bin/blog/password.txt"> Order allow,deny Deny from all </FIles> </Directory>
もともと ScriptAlias 下なので premature (以下略)が出て表示はできませんが、やはりここはビシッと拒否。エラーログも「サーバが許可してません!びし!」と出るようになったし。よしよし。
timezone の件
Unix ライクシステム全般でそうらしいのですが、いつもラッパーコマンド任せだったので知りませんでした…。 tzfile(5) や tzset(3) を man すると書いてあって、
- /usr/share/zoneinfo
- 以下にタイムゾーンごとのうるうなんとかやらサマータイムやら細かいあれこれを記述したファイルを格納
- /usr/share/zoneinfo/Asia/Tokyo
- 東京用タイムゾーンデータ
- /etc/localtime
- 実際に使用したいタイムゾーンデータへのシンボリックリンク
- /usr/share/zoneinfo/GMT
- UTCのうるう秒記述が入ったタイムゾーンデータ
- /usr/share/zoneinfo/posixrules
- こいつ自体は何ものかわからないけど /usr/share/zoneinfo/GMT が無いと代わりに使われる
ということ。タイムゾーンデータは通常テキストファイルで記述したものを zip(8) でコンパイルして /usr/share/zoneinfo 内に置いておくということです。自分では書くことはないだろうけど、なるほどです。サンプルみると分かるんですが、ある地域では何年から何年の間だけサマータイムがあって…、みたいなことをしっかり規定できるみたいだ。そりゃそうだ。どっかにこういう、手動で記述されたファイルが必要ですよね…。
実際にサーバのタイムゾーンも設定してあげていなかったので(通常は OpenBSD のインストール時に聞かれるんだけど、すでにインストールされた状態だったので)
# rm /etc/localtime # ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
してあげる…。と、一瞬で ls -l の時刻表示が日本時間になった!すごす。
じゃあこの人たちも jail にコピーしてあげよう。必要なのは /usr/share/zoneinfo/Asia/Tokyo とそのリンクである /etc/localtime と /usr/share/zoneinfo/GMT のはず。
# mkdir -p /var/www/usr/share/zoneinfo/Asia # cp /usr/share/zoneinfo/Asia/Tokyo /var/www/usr/share/zoneinfo/Asia # mkdir /var/www/etc # ln -s /usr/share/zoneinfo/Asia/Tokyo /var/www/etc/localtime
これで! /var/www/etc/localtime のリンクも、やはり /var/www に chroot された後の状態で設定しないといけなくて、 /var/www/usr/share/zoneinfo/Asia/Tokyo ではなくて /usr/share/zoneinfo/Asia/Tokyo にリンクを張りました。これで systrace した結果もクリア!!
native-fsread: filename eq "/usr/share/zoneinfo/GMT" then permit native-fsread: filename eq "/usr/share/zoneinfo/Asia/Tokyo" then permit
やった!。これで、 TP は一旦インストール完了です!。あとは CSS 弄ったり Wiki 記法の勉強したり、リダイレクト設定したりするサイト制作作業が残ってるだけだ。あ、 HTML5 化があったけど、それは今後の課題。 C のソース弄らないといけないなら自分は手を出すべきで無いところ。 Lua のプラグインレベルでできるならやろう。
というわけで、以上、 OpenBSD の chroot jail httpd で Tokyo Promenade を動かす!でした!実際に動いているのは
http://oogatta.com/cgi-bin/blog/promenade.cgi
で動いているのが見られます!!(絶賛製作中なので見られないこともあるかも)。やっふー!。嬉しい。久々にこういうシステム作業でうまくいった。ありがとう OpenBSD 。ありがとうテオ様。
最終結果
結果だけ出すとこんな感じ
$ sudo find /var/www -type f -or -type l > list $ cat list ( TP 用に必要そうなものだけ抜粋) /var/www/cgi-bin/blog/promenade.cgi /var/www/cgi-bin/blog/promenade.tmpl /var/www/cgi-bin/blog/passwd.txt /var/www/cgi-bin/blog/promenade.tct /var/www/cgi-bin/blog/promenade.tct.idx.name.lex /var/www/cgi-bin/blog/promenade.tct.idx.cdate.dec /var/www/cgi-bin/blog/promenade.tct.idx.mdate.dec /var/www/cgi-bin/blog/promenade.tct.idx.xdate.dec /var/www/htdocs/blog/promenade.css /var/www/htdocs/blog/upload /var/www/etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo /var/www/usr/lib/libm.so.5.0 /var/www/usr/lib/libutil.so.11.0 /var/www/usr/lib/libc.so.51.0 /var/www/usr/lib/libz.so.4.1 /var/www/usr/lib/libpthread.so.11.1 /var/www/usr/libexec/ld.so /var/www/usr/local/lib/libbz2.so.10.4 /var/www/usr/local/lib/libtokyocabinet.so -> libtokyocabinet.so.9.7.0 /var/www/usr/local/lib/libtokyocabinet.so.9 -> libtokyocabinet.so.9.7.0 /var/www/usr/local/lib/libtokyocabinet.so.9.7.0 /var/www/usr/share/zoneinfo/Asia/Tokyo /var/www/usr/share/zoneinfo/GMT
以上でした。