Chinachuをupdateした後、起動しなくなってしまった

chinachu-errored-アイキャッチ

Raspberry Pi を使って「Mirakurun + Chinachu」というよくある構成で録画サーバーを運用している。

近頃、ふと思い立って Mirakurun と Chinachu のアップデートをGitHubで公開されている通りに行った。

# Mirakurun のアップデート
$ sudo npm install mirakurun -g --unsafe-perm --production

# Chinachu のアップデート
$ ./chinachu updater

アップデート自体は問題なく完了した。

しかし、アップデート後にブラウザから Chinachu の WUI(番組表閲覧や録画予約を行う管理画面) にアクセスできなくなってしまった。これでは録画操作が全くできず、録画サーバーとチューナーが文鎮と化してしまう。

Raspberry Pi 4 ModelB 4GB
Raspberry Pi
Raspberry Pi 4 ModelB 4GB
Amazon_logoAmazon
Rakuten_logoRakuten

原因を探る

とりあえず Chinachu のステータスを確認してみる。

mirakurun サーバーのステータス確認
chinachu のステータスを確認

chinachu-operatorchinachu-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のログ

PM2 error: Error: spawn .nave/node ENOENT というエラーが出ていた。このエラーを調べてみると、「 child_process.spawn の第一引数に渡していた path に実行するコマンドが見つからない」ことが起因らしい。

つまり .nave/node がないとのことだ。

.nave/node は シンボリックリンクになっていた。調べてみるとリンク先となっている .nave/installed 配下に何もファイルが存在せず、リンク切れの状態になっていた。

.nave/nodeのリンク先を調べた
リンク先のnodeが見つからない(ちなみにnode のバージョン確認コマンドが誤っている。正しくは ./node -v )

この時点で、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 にアクセスできた。めでたしめでたし。

Raspberry Pi 4 ModelB 4GB
Raspberry Pi
Raspberry Pi 4 ModelB 4GB
Amazon_logoAmazon
Rakuten_logoRakuten

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です