作業日記@HatenaBlog

各種の作業メモ

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