【作業メモ】CentOS 7 上で PyMOL をソースからビルド

昔（いつのことだろう）は自力で PyMOL をソースからビルドしようとすると依存性地獄にハマったりして大変だった気がするが、久しぶりにやってみたら簡単だったのでその作業メモ。（筆者の初 Qiita 記事）

前半は PyMOL のビルドの話だが、後半は単に NVIDIA のビデオカードが Linux 環境でちゃんと駆動されてないことに対するトラブルシューティングで、特に PyMOL に限った話ではなく一般に Linux に NVIDIA ドライバーを入れるとき必要な作業。

#対象環境
- CentOS。一時 EPEL に PyMOL があって yum で入れられた時もあった？ようだが今（本記事執筆時2015年12月）はダメぽなのでソースからやることにした。古めの rpm は探せば転がっているが新しいのが見当たらない（気がする）。
- Fedora の場合は yum install pymol でイケる模様。比較的新しいバージョンの PyMOL の rpm も転がっているのでそれを使っても OK。
- まぁいずれにしろ、最新版 PyMOL を使いたかったら自力ビルド。
（単に分子ビューワーとして使うぶんには古いバージョンでも特に困ることは無いと思うが。）

- Ubuntu でも apt-get install pymol だけで入る模様。Mac の場合も brew install pymol だけで入るっぽいし、[アルファツイッタラー銀すみす氏](https://twitter.com/ag_smith) の詳細な記事（[PyMOL 1.7.6.0+APBS plugin works on Mac Yosemite using Homebrew](http://blog.livedoor.jp/ag_plusplus/archives/68263304.html) や [PyMOL ver 1.6 インストール for Windows](http://blog.livedoor.jp/ag_plusplus/archives/65108543.html)）があるのでそちらがオススメ。[こちらの記事](http://bi.biopapyrus.net/protein/pymol/install.html)（bi.biopapyrus.net: PyMOL のインストール）も簡潔で good。

#PyMOL のビルド作業
[この記事](http://www.pymolwiki.org/index.php/Linux_Install)（PyMOLWiki: Linux Install）に従うだけ。簡単。

```bash:必要なものをインストール
yum install subversion gcc gcc-c++ kernel-devel python-devel tkinter python-pmw \ 
glew-devel freeglut-devel libpng-devel freetype-devel libxml2-devel
```
```bash:ソースをSubversionからダウンロード
cd /tmp
svn co svn://svn.code.sf.net/p/pymol/code/trunk/pymol
cd pymol
```
```bash:ビルド・インストール
prefix=/opt/pymol-svn
modules=$prefix/modules
export CPPFLAGS="-std=c++0x"
python setup.py build install \
    --home=$prefix \
    --install-lib=$modules \
    --install-scripts=$prefix
```
おしまい。

```bash:これで起動できる
/opt/pymol-svn/pymol
```
```bash:リンク貼りたければ適宜
sudo ln -s /opt/pymol-svn/pymol /usr/bin/pymol
```

![pymol_1.8x.png](https://qiita-image-store.s3.amazonaws.com/0/54184/d2b75e22-752d-8db0-dc9f-cf451d2a32f7.png)

これで使える

、、が、使えてはいるものの全然ヌルヌル動いてくれてなかった。

これはビルドした PyMOL の問題ではなく、Linux からビデオカードがちゃんと駆動できていないせいで、
CUDA とか使いたい時も直面する問題。

![PyMOL_nouveau.png](https://qiita-image-store.s3.amazonaws.com/0/54184/082cc29a-4256-190f-1fed-7ae72b9b78fb.png)


#CentOS に純正ビデオカードドライバを入れる

Nouveau とかいう OS 付属のフリーのドライバを無効化して、NVIDIA の純正ドライバを入れる。

```bash:確認：ぬ～ぼ～入ってる
lsmod | grep nouveau
```

まず無効化作業。
[こちら](http://qiita.com/mpkato/items/3a9428f408e7e15d0a1b)（Qiita: CentOS 7にNVIDIA GeForce GTX TITAN Xを導入）にも記載があるように、
`/etc/modprobe.d/modprobe.conf` と `/etc/modprobe.d/nouveau_blacklist.conf` に

```
blacklist nouveau
```
の一行を足せばよいらしいのでやってみたが、再起動しても相変わらず nouveau 切れてなかった。謎。

埒が明かなかったので、[こちら](http://www.dedoimedo.com/computers/centos-7-nvidia.html)を参考に
今度は grub のコンフィグ (`/etc/default/grub`) を編集し、`GRUB_CMDLINE_LINUX` 内に

```
rdblacklist=nouveau
```
これを追記。

```bash:コンフィグファイル作成
grub2-mkconfig -o /boot/grub2/grub.cfg
```
で、これで再起動するとめでたく nouveau 切れている。

あとは NVIDIA ドライバのインストール作業。

```bash:ビデオカード確認
lspci | grep -i nvidia
```
[NVIDIA のサイト](http://www.nvidia.co.jp/Download/index.aspx?lang=jp)から対応するドライバインストーラーをゲット。
あとで CUI 環境から実行することになるので、分かりやすく /tmp あたりに置いておく。


```bash:ランレベル変更
init 3
```
CUI モードになる。
root でログインし、ダウンロードしておいたドライバインストーラーを実行。

```bash:インストーラ―実行
chmod +x <Nvidia file>.run
./<Nvidia file>.run
```
インストーラーの指示に従いインストール。

それが済んだら、

```bash:ランレベル戻す
init 5
```
これで完了、PyMOL もヌルヌル動くようになった。