Raspberry Pi4で地デジサーバを Chinachu +mirakurun で稼働していますが、以下のようにmirakurunをv3.2.0にアップデートした後、chinachuもアップデートしたところ、動かなくなりました。
$ sudo npm install mirakurun -g --unsafe-perm --production //mirakurunのアップデート
$ cd chinachu
$ ./chinachu updater //chinachuのアップデート
アップデート後、ステータス($ sudo pm2 status)を確認したところ、erroredと表示されました。
なぜ動かなくなったか
原因は、Node.js をアップデートする前に、mirakurun をアップデートしたためでした。
それで、Node.jsをv8.9.4からv10.16.3にアップデートしました。
正しいアップデートの方法
1.Chinachuのユーザー追加
まず、Chunachu は Raspberry Pi のデフォルトユーザーでは動かない(録画が乱れる)ようなのでユーザーを追加します。(Chinachuを使うためにユーザーをvideoグループに追加する。録画先のディレクトリ権限も変更。)
$ sudo adduser <追加ユーザ>
$ sudo gpasswd -a <追加ユーザ> sudo
$ sudo adduser <追加ユーザ> video
$ sudo chown <追加ユーザ>:video /mnt/hdd1
Sambaの設定も修正します。
$ sudo nano /etc/samba/smb.conf
[recorded]
comment = Chinachu Recorded Folder
path = /mnt/hdd1/recorded
browsable = yes
read only = no
guest ok = yes
force user = <追加ユーザ>
# sambaを再起動
$ sudo service smbd restart
# ディレクトリのオーナーを変更
$ sudo chown <追加ユーザ>:video /mnt/hdd1
2.Node.jsとMirakurunのアップデート
Node.jsをv10.16.3にアップデートします。
また、Mirakurunも更新をします。
$ sudo apt-get install npm
$ sudo npm install -g n
$ sudo n 10.16.3
$ sudo npm install -g npm
$ sudo npm install pm2 -g
$ sudo npm install mirakurun -g --unsafe --production
3.Chinachuのアップデート
その前に・・・Chinachu録画設定ファイルに追加ユーザなどを設定します。
$ cd chinachu
$ vi config.json
"uid": "<追加ユーザ>"
"recordedDir" : "/mnt/hdd1/recorded/",
"temporaryDir" : "/mnt/hdd1/recordtmp/",
そして、Chinachuのアップデートをします。
~/chinachu $ ./chinachu updater
$ sudo pm2 status //全部onlineになっているか確認!
$ sudo reboot
奮闘記(参考までに・・・)
1.Node.jsの調整
$ sudo apt remove nodejs
$ sudo apt autoremove
$ wget https://nodejs.org/dist/v10.22.0/node-v10.22.0-linux-armv7l.tar.xz
$ tar -xvf node-v10.22.0-linux-armv7l.tar.xz
$ cd node-v10.22.0-linux-armv7l
$ sudo rm /usr/local/bin/node
$ sudo cp -R * /usr/local/
$ cd
今回は、Node.jsはv10.22.0にしましたが、v12やv14でも可能なようです。
ここで、以下の実行でエラーとなりました。
$ sudo apt-get install npm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:
以下のパッケージには満たせない依存関係があります:
・・・
依存関係が壊れているようなので aptitude をインストールし、以下のコマンド実行することにしました。
$ sudo apt-get install aptitude
・・・
$ sudo aptitude install npm
・・・
以下のアクションでこれらの依存関係の問題は解決されます:
以下のパッケージを現在のバージョンに一時固定する:
1) libnode-dev [インストールされていません]
2) libnode64 [インストールされていません]
3) libssl-dev [インストールされていません]
4) node-gyp [インストールされていません]
5) npm [インストールされていません]
この解決方法を受け入れますか? [Y/n/q/?]
Y を選択して先に進めます。
そして、次のコマンドを実行しましたがエラーになってしまいました。
$ sudo apt-get update
それで一旦最初からやり直すことにしました。
$ sudo apt remove --purge nodejs npm
$ sudo apt clean
$ sudo apt autoclean
$ sudo apt install -f
$ sudo apt autoremove
$ sudo apt install curl
$ cd ~
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ curl -L https://www.npmjs.com/install.sh | sh
結局、以下の方法が良かったようです。
$ sudo npm install -g npm
$ sudo npm install pm2 -g
$ sudo npm install arib-b25-stream-test -g --unsafe
$ sudo npm install mirakurun -g --unsafe --production
そして、ステータスの確認をします。
$ sudo pm2 status
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 2 │ chinachu-operator │ fork │ 3 │ stopped │ 0% │ 0b │
│ 1 │ chinachu-wui │ fork │ 1 │ stopped │ 0% │ 0b │
│ 0 │ mirakurun-server │ fork │ 0 │ online │ 0.3% │ 76.9mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
pm2 に登録して保存します。
$ sudo pm2 start processes.json
$ sudo pm2 save
また、gitの修正を元に戻しておきます。
$ git fetch origin
($ git reset --hard origin/masterでエラー)
試しで録画をし、確認してみたところ、ひどく映像が乱れているのでチューニングを行いました。
2.Mirakurunのチューニング
バッファを増やします。
$ sudo mirakurun config server
# highWaterMark: 25165824 # integer (bytes)
# highWaterMark: 67108864 # 64MB
# highWaterMark: 134217728 # 128MB
highWaterMark: 268435456 # 256MB
次にヒープサイズを増やします。
$ sudo pm2 start mirakurun-server --node-args --max_old_space_size=1024
mirakurun config server で下記設定を追加。
disableIPv6: true
rocesses.jsonを修正してプロセスサイズの最大値も引き上げておく。
$ sudo vi /usr/lib/node_modules/mirakurun/processes.json
:
"node_args" : "--max_old_space_size=2048",
再度、mirakurunインストールをします。
$ sudo npm install mirakurun -g --unsafe --production
そして、以下を実行します。
$ export PATH=/home/pi/chinachu/.nave:$PATH
$ cd /usr/lib/node_modules/npm
$ sudo npm install
ここまで試して、chinachuとmirakurunのステータスは online であるものの、録画が乱れたままでした。結局、前述の「1.Chinachuのユーザー追加」で解決しました。
主な参考サイト
DIGITAL CASSIS SODA内の記事ー https://mimimopu.com/chinachu-errored/
東京工業大学デジタル創作同好会の記事ー https://trap.jp/post/1089/
最後に
うれしいことに、Raspberry Pi4の発売により、地デジサーバを入れる人の人口が増えています。
今後、アップデートをする人も増えると思います。
少しでも、この記事が参考になれば幸いです。
また、Chinachuのこれからの改善や発展を期待しています!