Hatena::ブログ(Diary)

作業日記

2015-05-30 tiarra の導入

IRC で使用する tiarraFreeBSD 10.1 に導入する。

設定ファイル、自動応答用テキストファイルは全て UTF8 で記述すること。

他の文字コードが混ざるとエラーの原因となる。

参考URLhttp://d.hatena.ne.jp/amari3/20111203/1322937053

tiarraダウンロード・展開

% mkdir ~/tiarra.d
% cd ~/tiarra.d
% wget http://www.clovery.jp/tiarra/archive/2010/02/tiarra-20100212.tar.gz
% tar xvzf tiarra-20100212.tar.gz
% rm tiarra-20100212.tar.gz
% cd tiarra-20100212

設定ファイルをコピー

% cp -pv sample.conf tiarra.conf

文字コードを変換

tiarra.conf の文字コードISO-2022-JP とする。

% nkf --guess tiarra.conf
UTF-8 (LF)
% nkf -j --overwrite tiarra.conf
% nkf --guess tiarra.conf
ISO-2022-JP

tiarra.conf を編集

デフォルト文字コード UTF-8 のまま編集する。

% jvim tiarra.conf
% jvim -k t tiarra.conf

general ブロック

言及の無いものはデフォルト値のまま。

general {
  conf-encoding: jis
 
  nick: sillywalk7
  user: sillywalk7
  name: sillywalk7
 
  tiarra-port: 6667
 
  tiarra-password: ********
 
  server-in-encoding: jis
  server-out-encoding: jis
 
  client-in-encoding: jis
  client-out-encoding: jis
 
  stdout-encoding: jis

networks ブロック

言及の無いものはデフォルト値のまま。

networks {
  name: ircnet
  #name: 2ch
  #name: freenode
  #name: ustream
}

ネットワークの設定

上記 networks ブロックで定義した ircnet のみを定義する。

server はひとつだけ定義し、残りは全てコメントアウトする。

freenode など他のネットワーク設定がある場合は ircnet に準じて定義すること。

ircnet {
  server: 125.6.255.10 6660 6661 6662 6663 6664 6665 6666 6668 6669
 
  in-encoding: jis
  out-encoding: jis
}

チャンネル自動 join

IRC クライアントから tiarra サーバ接続時に自動 join したいチャンネルを指定する。

カンマ区切りで複数指定可。

+ Channel::Join::Connect {
  channel: #hoge,#fuga,#foo,#bar
}

 

Auto::Random でエラー発生

Auto::Random モジュールを導入したところエラーが発生した。

FreeBSD 9 の時はエラーは無かった。

解決策不明。

21:48 *** Reloaded configuration file.
21:48 *** Module Auto::Random will be loaded newly.
21:48 *** ===== ERROR =====
21:48 *** Couldn't load module Auto::Random because of exception.
21:48 *** syntax error at module/Tools/LinedDB.pm line 18, near "$key qw(Parse Build Compare Update Hash)"
21:48 *** Global symbol "$key" requires explicit package name at module/Tools/LinedDB.pm line 19.
21:48 *** Global symbol "$key" requires explicit package name at module/Tools/LinedDB.pm line 20.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 20.
21:48 *** Global symbol "$key" requires explicit package name at module/Tools/LinedDB.pm line 20.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 24.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 24.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 24.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 29.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 30.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 31.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 32.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 33.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 34.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 35.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 40.
21:48 *** Global symbol "%arg" requires explicit package name at module/Tools/LinedDB.pm line 40.
21:48 *** Global symbol "$class" requires explicit package name at module/Tools/LinedDB.pm line 48.
21:48 *** syntax error at module/Tools/LinedDB.pm line 51, near "}"
21:48 *** module/Tools/LinedDB.pm has too many errors.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at module/Tools/FileCache/EachFile.pm line 11.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at module/Tools/FileCache/EachFile.pm line 11.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at module/Tools/FileCache.pm line 15.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at module/Tools/FileCache.pm line 15.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at module/Auto/Random.pm line 10.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at module/Auto/Random.pm line 10.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** Compilation failed in require at (eval 181) line 1.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;
21:48 *** BEGIN failed--compilation aborted at (eval 181) line 1.
21:48 ***     inside module load: Auto::Random;
21:48 ***     inside Timer: ReloadTrigger/reload;

Syntax error の特定

module/Tools/LinedDB.pm の 18 行目を抜粋。

シンタックスエラーを無くすだけなら以下の修正をする。

ただし Auto::Random は機能しない。

関係ファイルの文字コードを全て UTF8 とすることで解決した。

foreach my $key qw(Parse Build Compare Update Hash) {
↓
foreach my $key (qw(Parse Build Compare Update Hash)) {

自動起動

ports からインストールした場合、rc.conf に以下を追加。

# vi /etc/rc.conf
tiarra_enable="YES"

設定ファイルの初期ディレクトリは /usr/local/tiarra に設定されているので、シンボリックリンクで適宜変更する。

問題点

起動中の tiarra を以下のコマンドで止められない。

# /usr/localetc/rc.d/tiarra stop

やむを得ず kill コマンドで強制停止した。

# ps auxw | grep tiarraプロセス番号)が表示される
# kill (プロセス番号)
# ps auxw | grep tiarra
まだ(プロセス番号)が表示される
# kill -9 (プロセス番号)

参考サイト

http://d.karashi.org/20070924.html