CentOS6.8へRhinoBot(Discord用MusicBot)をインストールする


ゲーム中にDiscordのルームに入れると音楽を流してくれる
RhinoBot(参考)を導入しようと思ったのですが、
見事にDebian系の説明しかネット上に転がっていない(?)ので
CentOS6でのインストール手順を記載します。

インストール手順が説明されているものたち

https://github.com/Just-Some-Bots/MusicBot/wiki
Win,Ubuntu,OSX,RasberryPi,Debian,Docker
Dockerを使いこなせたらカッチョいいですが、地道にCentOSに入れていきます。
参考にするのはUbuntu

私のインストール環境

・CentOS6.8
・しなびたノートパソコン
・rootアカウント(コマンドは全てroot権限から実行)

RhinoBotに必要なものの準備

Ubuntuのインストール手順を見る限り、必要そうなのは
- git
- python3.5
- pip
- (python3.5-dev:不要?)
- libffi-dev
- libopus-dev
- libsodium-dev
- ffmpeg

・git

yum install git
ですんなり落ちてきました。

・Python 3.5

さくらVPSの標準OS(CentOS 6.7)にPython3.5.0をインストールするを参考に。
Warningはいっぱい吐きましたが、最終的に動作すればOKです。
gccがないと makeに頭から躓くので、その場合はyum install gccしましょう。
また、僕の環境ではmake後に

Substitution happens here, as the completely-expanded BINDIR is not available in configure ...

というエラーが出ましたが、一応今回の目的では問題なく動作しているので無視。
pythonを叩いてバージョンを確認。3.5以外ならPATHがうまく設定できていないので
PATH=/usr/local/bin:$PATH
export PATH

あたりで切り替えましょう。

・pip

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
python3.5が動いたらpipの導入。
転んでしまうときは
yum -y install gcc gcc-c++ kernel-devel
yum -y install python-devel

を試してみてください。

・libffi-dev

yum install libffi-devel
で素直に。バージョンは3.0.5が落ちてきました。

・libopus-dev

こちらを使用。LinuxTECHというリポジトリをvi /etc/yum.repos.d/linuxtech.repoから追加。内容は

[linuxtech]
name=LinuxTECH
baseurl=http://pkgrepo.linuxtech.net/el6/release/
enabled=1
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET

念のためyum updateしてから
yum install libopus-devel

・libsodium-dev

配布元?の手順通り。Tarで固めてあるのがここに転がっているので
libsodium-1.0.10.tar.gzを選定。
cd /tmp
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.10.tar.gz
tar -xfvz libsodium-1.0.10.tar.gz
cd ./libsodium-1.0.10
./configure
make && make check
make install

でOK。

・ffmpeg

yum install ffmpeg
すんなり落ちてきました。

動作まで

本体を落とす

まずMusicBot本体をインストールしたい場所へgitを使ってクローン。僕は何も考えずに~へ。

cd ~
git clone https://github.com/Just-Some-Bots/MusicBot.git MusicBot -b master

設定、Botをサーバーに追加

記事の「準備」部分を進めていきます。
テキストエディタ云々はviでもvimでもemacsでもnanoでもいいです。

あと、リンク先では~/MusicBot/config/example_options.iniを編集していますが、
その後の実行時に内容が適用されてない感じだったので、私は直接options.iniを編集しました。
この段階でDiscordにMusicBotが追加され、OwnerID等々動作に必要なものが設定されましたね。

マトモなサーバーならiptables等々でポートを絞っているはずですが、
DiscordはTCP 443番をテキストチャットに使っている模様です。
疎通ができない場合、その辺りから疑うと良いのかも。

Bot自体の依存関係処理

次にPython上でのBotそのものに必要な依存関係をなんとかしていきます。
cd ~/MusicBot
python -m pip install -U -r requirements.txt

この際、僕の環境ではPyNaClのインストール部分にすこし時間(5分程?)が掛かりました。
この作業時、フリーズしてるように見えたのでCtrl-Cで中断したところ、pipのアプデが出来ると通知されました。
アプデしたところ、表示方法が変わってフリーズしていないことがわかるようになりました。
その後待っていたら進んだので、少しだけ待つと良さそうです。

動かしてみる

python ~/MusicBot/run.py
でMusicBotが起動します。エラーが出た場合は、かなり親切に教えてくれるので指示に従いましょう。
MusicBotの中身が起動するとDiscord側でBotがオンラインになります。
あとはDiscord側から「!play」などのコマンドを使って操作出来るでしょう。

screen or tmux

バカ正直にpythonコマンドで叩いているので、Botの動作中はずっと端末を握られっぱなしになります。
端末を落とすとBotも落ちてしまうので、このままでは実用に耐えません。
screenかtmuxを導入すると良いでしょう。
yum list | grep tmux で何も見えなかったので
yum install screen
あとはここらへんを参考にしつつscreenを作ってBotを叩き、デタッチすれば完了です。

それでは、よいゲーミングライフを!