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

ゲーム中にDiscordのルームに入れると音楽を流してくれる
RhinoBot（[参考](http://takeshi.kill.jp/post-2254/)）を導入しようと思ったのですが、
見事にDebian系の説明しかネット上に転がっていない（？）ので
CentOS6でのインストール手順を記載します。

#インストール手順が説明されているものたち
https://github.com/Just-Some-Bots/MusicBot/wiki
Win,Ubuntu,OSX,RasberryPi,Debian,Docker
Dockerを使いこなせたらカッチョいいですが、地道にCentOSに入れていきます。
参考にするのは[Ubuntu](https://github.com/Just-Some-Bots/MusicBot/wiki/Guide-for-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をインストールする](http://hqac.hatenadiary.com/entry/2015/11/29/125634)を参考に。
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
[こちら](https://pkgs.org/centos-6/linuxtech/libopus-devel-1.1-1.el6.x86_64.rpm.html)を使用。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
[配布元？](https://download.libsodium.org/doc/installation/)の手順通り。Tarで固めてあるのが[ここ](https://download.libsodium.org/libsodium/releases/)に転がっているので
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をサーバーに追加
[記事](http://takeshi.kill.jp/post-2254/)の「準備」部分を進めていきます。
テキストエディタ云々はviでもvimでもemacsでもnanoでもいいです。

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

マトモなサーバーならiptables等々でポートを絞っているはずですが、
DiscordはTCP 443番をテキストチャットに使っている[模様](https://www.reddit.com/r/discordapp/comments/3k3ux1/q_how_to_allow_discord_through_firewall/)です。
疎通ができない場合、その辺りから疑うと良いのかも。

##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`
あとは[ここ](http://qiita.com/lazynick/items/05e434e6d1ae656bbcbb)らへんを参考にしつつscreenを作ってBotを叩き、デタッチすれば完了です。

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