さくらインターネット共有サーバーにVisitorsとGraphvizをインストールする。

GIGAZINE: 1秒で10万行を処理するフリーの超高速なログ解析ソフト「Visitors」

GIGAZINEでVisitorsっていうよさげなApacheのログ解析ソフトが紹介されてて、
しかもGraphvizとの連携によるサイト遷移チャートの作り方まで書いてあって
ちょっとムラムラしたので、ここのサーバーにインストールしてみることにしました。
さくらインターネットは標準でWebalizerが入ってるんだけどね・・・

結論から言うと、root権限がない共有サーバーに入れるには
Graphvizはちょっと無理がありました。

root権限がないので、
VisitorsもGraphvizも、ソースから作るしかないです。

でも、Visitorsは超絶簡単。

========================================
% tar xzf visitors-0.7.tar.gz
% cd visitors_0.7
% make
% cp visitors ~/usr/local/bin
========================================

これだけ。何も考える必要はない。
問題はGraphviz。

========================================
% tar xzf graphviz-2.18.tar.gz
% cd graphviz-2.18
% ./configure --prefix=${HOME}/usr/local
% make && make install
... ... ...
~~~~~~~~~~
Making install in dot
test -z "/home/xxxxxxxx/usr/local/bin" || ../../config/install-sh -c -d "/home/xxxxxxxx/usr/local/bin"
/usr/local/bin/bash ../../libtool --mode=install /usr/bin/install -c 'dot' '/home/xxxxxxxx/usr/local/bin/dot'
/usr/bin/install -c .libs/dot /home/xxxxxxxx/usr/local/bin/dot
make install-exec-hook
(cd /home/xxxxxxxx/usr/local/bin; for i in neato twopi fdp circo; do rm -f $i; ln -s dot $i; done;)
if test "x" = "x"; then if test -x /home/xxxxxxxx/usr/local/bin/dot; then if test -x /sbin/ldconfig; then /sbin/ldconfig 2>/dev/null; fi; /home/xxxxxxxx/usr/local/bin/dot -c; else /home/xxxxxxxx/usr/local/bin/dot_static -c; fi; fi
*** Error code 1

Stop in /home/xxxxxxxx/tmp/graphviz-2.18/cmd/dot.
*** Error code 1

Stop in /home/xxxxxxxx/tmp/graphviz-2.18/cmd/dot.
*** Error code 1

Stop in /home/xxxxxxxx/tmp/graphviz-2.18/cmd/dot.
*** Error code 1

Stop in /home/xxxxxxxx/tmp/graphviz-2.18/cmd.
*** Error code 1

Stop in /home/xxxxxxxx/tmp/graphviz-2.18.
========================================

おや〜〜〜???
実はこの段階でdotコマンドは完成しているので
Visitorsと組み合わせて使うだけならとりあえず動作するのですが、
ちょっと気持ち悪いのでもう少し突っ込んでみることにしました。

結果、よけい気持ち悪いことになったような気が・・・

Makefileを調べてみたところ、
ldconfigの実行時にエラーコードが返ってきていたようです。

========================================
% /sbin/ldconfig
ldconfig: mkstemp(/var/run/ld-elf.so.hints.eXsHdv): Permission denied
========================================

どうやら/var/run/ld-elf.so.hintsを書き換えたいんだけど
/var/run配下はroot権限がないと書き込めないのでエラーになってるみたいですね。
それじゃあ困っちゃうので、ヒントファイルをローカルにコピーして
ldconfig実行時に無理矢理読ませることにしました。
こんなことしちゃっていいのかな・・・

まず、ldconfigについての記述を1つだけ修正。

========================================
graphviz-2.18/cmd/dot/Makefile: 880行目

if test "x$(DESTDIR)" = "x"; then if test -x $(bindir)/dot$(EXEEXT); then if test -x /sbin/ldconfig; then /sbin/ldconfig 2>/dev/null; fi; $(bindir)/dot$(EXEEXT) -c; else $(bindir)/dot_static$(EXEEXT) -c; fi; fi

↓ ↓ ↓ ↓ ↓

if test "x$(DESTDIR)" = "x"; then if test -x $(bindir)/dot$(EXEEXT); then if test -x /sbin/ldconfig; then /sbin/ldconfig -f ${HOME}/var/run/ld-elf.so.hints 2>/dev/null; fi; $(bindir)/dot$(EXEEXT) -c; else $(bindir)/dot_static$(EXEEXT) -c; fi; fi
========================================

で、修正した通りにファイルをコピー。

========================================
% mkdir -p ~/var/run/
% cp /var/run/ld-elf.so.hints ~/var/run/
% make install
========================================

これでとりあえず通った!
でも大切な何かを失ったような気がする・・・
ただのヒントファイルだから、場所が変わるくらいは気にしないでいいのかな???