Raspberry Pi を使って「Mirakurun + Chinachu」というよくある構成で録画サーバーを運用している。
近頃、ふと思い立って Mirakurun と Chinachu のアップデートをGitHubで公開されている通りに行った。
# Mirakurun のアップデート
$ sudo npm install mirakurun -g --unsafe-perm --production
# Chinachu のアップデート
$ ./chinachu updater
アップデート自体は問題なく完了した。
しかし、アップデート後にブラウザから Chinachu の WUI(番組表閲覧や録画予約を行う管理画面) にアクセスできなくなってしまった。これでは録画操作が全くできず、録画サーバーとチューナーが文鎮と化してしまう。
目次
とりあえず Chinachu のステータスを確認してみる。

chinachu-operator と chinachu-wui のステータスが errored になっている。どうやら起動がうまくいって居ない様子。
これらが手動で起動しないか試してみた。
$ ./chinachu service wui execute
# 問題なく動作できた。ブラウザからWUIにアクセスできることも確認。Ctrl+Cで終了
$ ./chinachu update
# EPG取得テスト。問題なく動作した
Chinachuのエラーログが出ていないか確認する。
$ cat /usr/local/var/log/chinachu-wui.stderr.log
-> ログなし
$ cat /usr/local/var/log/chinachu-operator.stderr.log
-> ログなし
Chinachu 自体は問題なさそうだ。pm2(Node.js のプロセス起動や管理を行うツール)のエラーを確認してみる
$ sudo pm2 logs
実行結果

PM2 error: Error: spawn .nave/node ENOENT というエラーが出ていた。このエラーを調べてみると、「 child_process.spawn の第一引数に渡していた path に実行するコマンドが見つからない」ことが起因らしい。
つまり .nave/node がないとのことだ。
.nave/node は シンボリックリンクになっていた。調べてみるとリンク先となっている .nave/installed 配下に何もファイルが存在せず、リンク切れの状態になっていた。

この時点で、node や npm のシンボリックリンクを張ってあげれば、エラーは解決するんだろうな、と予測できた。
chinachu の GitHub で同様の問題の issue が見つかった。
上記の issue でも紹介しているが、普通にシンボリックリンクを張り直せば良いみたい。
# node と npm のリンクを張る
$ ln -s /usr/bin/node /home/chinachu/chinachu/.nave/node
$ ln -s /usr/bin/npm /home/chinachu/chinachu/.nave/npm
なお、リンクを張り直す前に、issue内に記載のある ./chinachu installer も試したが、解決しなかった。
リンクを張った後に、chinachu のプロセスをもう一度起動してみる。

無事、chinachu-operator と chinachu-wui のステータスが online になった。
もちろん、ブラウザからも WUI にアクセスできた。めでたしめでたし。