zt日記

書いているのは Kazuhiro NISHIYAMA a.k.a. ZnZです。
2001|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|
2012|04|05|06|09|

この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。

xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法インストールメモXREA + tDiary + Namazuをどうぞ。


2010年06月11日(Fri)

chkbuild deb

chkbuild の deb パッケージを作って http://chkbuild.deb.n-z.jp/ においてみた。

パッケージの構成としては、基本的には rubygems を参考にして /var/lib/chkbuild に http://cvs.m17n.org/viewcvs/ruby/chkbuild/ の内容をおいているだけ。

他には chkbuild ユーザを追加したり、サンプルの cron.d ファイルを /etc/cron.d/chkbuild においたりしている。

Ruby の chkbuild を動かすには「sudo aptitude install '~RRecommends:chkbuild'」などで Recommends に指定しているパッケージをインストールする必要がある。 さらに psych や fiddle などの拡張ライブラリもビルドする場合は「sudo aptitude install '~RSuggests:chkbuild'」のように Suggests に指定しているパッケージもインストールすれば良いはず。

カスタマイズする場合は /var/lib/chkbuild/start-build や /var/lib/chkbuild/sample/build-ruby を直接書き換えても良いが、パッケージの更新の時にどうなるのかがよくわかってないので、後で調べるかも。


2010年06月17日(Thu)

atig.rb

tig.rb はドキュメントがなくて普通に発言する以外の使い方がよくわからなくて、コメントやRTなどをしたいときはwebからやっていたけど、atig.rbはちゃんとドキュメントがあって使い方がわかりそうだったので、OAuth 対応のついでに http://github.com/cho45/net-irc から fork していた http://github.com/znz/net-irc をやめて http://mzp.github.com/atig/ に乗り換えてみた。


2010年06月18日(Fri)

atig.rb 続き (現状の問題点)

今のところの問題点。

  • 初回起動時の OAuth の後の発言が twitter に反映されない。とりあえず再起動したら直ったので、初回起動時だけのバグかもしれない。
  • リストに対応しているということで他の人が作っているリストを follow してみたけど、 atig.rb は自分が作ったリストにしか対応していなかった。
  • リストに対応しているということでリストを作成したり、普通の follow をやめて、リストに移動したりしたのがすぐに反映されなかった。しばらくすると反映されるということだったので、待っていたら追加は反映されたが、フォローをやめた bot とかが #twitter からは part するのに、発言は #twitter に出てくるままだった。 cache を消してみたら出てこなくなったので、内部状態の更新がうまくいっていないのかもしれない。
  • ファイルの書き込み先が $HOME/.atig 以下だけじゃない。 cache がカレントディレクトリに作成されたので、起動するときのカレントディレクトリに注意する必要がありそう。
  • $HOME/.atig/oauth が誰でも読めてしまう。少なくとも他の人もログインできるサーバで動かしている場合は「chmod 0600 ~/.atig/oauth」とかしておく方が良さそう。
  • 誰でも接続できてしまう。 tig.rb は twitter のパスワードをサーバパスワードとして接続していたけど、サーバパスワードなしでも良くなったので、何か考えた方が良さそう。
  • なぜか勝手にまとめて part して帰ってこないことがある。確認していないけど、ユーザ一覧の同期の時にエラーになっていなくなった扱いになっているような気がする。こういうときのために強制的に一覧を同期出来るコマンドがあると良いのかもしれない。
  • 自分が +o されていないので直接コマンドを入力しないと kick できない。これも状態が変になっているだけかもしれない。

atig.rb の初期設定と runit の使い方

atig.rb 使い方のメモを書こうと思ったら runit の方を詳しく書いてしまったので分離。

まず「git clone git://github.com/mzp/atig.git」でとってきた。

runit で起動する設定。 djb's daemontools ではなく runit なのは、過去のライセンスが DFSG free じゃなくて面倒だったのと、runit の方が sv コマンド (daemontools の svc コマンド) の引数とかがわかりやすかったから。

run-atigrb.sh 経由になっていたり、ログが /home/svlogger/var/log/ 以下なのは権限分離や過去の試行錯誤の影響なので深い意味はない。

supervise のリンク先が /var/run/sv.hoge の形式になっているのは /etc/sv/getty-5/supervise にあわせた。このやり方はおすすめ。/var/run/sv.hoge はなければ勝手に作ってくれるので、起動前はリンク切れで放置しておけば良い。 log があれば勝手に起動してくれるので +t しておく必要はないのも deaemontools と比べてわかりやすい、と思ったら deamontools も 0.70 to 0.75 or 0.76 の変更で +t が必要なくなっているみたい。

% cat run-atigrb.sh
#!/bin/sh
HOME=/home/kazu
export HOME
cd $HOME/wc/atig
exec /opt/ruby-enterprise/bin/ruby atig.rb -d
% cat /etc/sv/atigrb/run 
#!/bin/sh
exec 2>&1
logger -s -t runsv -- start "$(basename $(pwd))"
USER=kazu
cd "/home/$USER"
exec chpst -u "$USER" ./run-atigrb.sh
% ll /etc/sv/atigrb/
total 2
drwxr-xr-x 2 root root 1024 2010-06-17 07:11 log/
-rwxr-xr-x 1 root root  134 2010-06-17 07:11 run*
lrwxrwxrwx 1 root root   18 2010-06-17 07:11 supervise -> /var/run/sv.atigrb/
% ll /etc/sv/atigrb/log/
total 0
lrwxrwxrwx 1 root root 13 2010-06-17 07:11 run -> ../../log-run*
lrwxrwxrwx 1 root root 22 2010-06-17 07:11 supervise -> /var/run/sv.atigrb.log/
% cat /etc/sv/log-run
#!/bin/sh
logdir="/home/svlogger/var/log/$(basename $(dirname $(pwd)))"
umask 027
chpst -u svlogger mkdir -p "$logdir"
cd "$logdir"
exec chpst -u svlogger svlogd -tt "$logdir"
%

準備ができたら「sudo ln -s /etc/sv/atigrb /etc/service/atigrb」で起動。 「sudo sv status atigrb」とかで確認して、ちゃんと起動できていなかったり、再起動を繰り返しているようだったら「tail -f $logdir/current」のようにログを確認する。

atig.rb の初期設定

nadoka 経由で接続しているので、 nadokarc を atigrb.rc にコピーして「/opt/ruby-enterprise/bin/ruby -vd $HOME/wc/nadoka-trunk/nadoka.rb --rc $HOME/nadoka/atigrb.rc」のように起動。 実際には runit 経由にしているけど、詳細は atig.rb と同様なので省略。

nadokarc の設定としては以下のあたりを変えた気がする。実際には tig.rb 用のものを流用したのでもうちょっと変えたかも。

bitlify のところは spec をみて確認したのでドキュメントの「bitlify=api_key:password:size」は間違いで「bitlify=username:api_key:size」が正しい。(api_key のようなものがあるのにパスワードも必要というのはおかしいのでソースを確認した。)

  Client_server_po