Ubuntu14.04での自分的環境構築をちゃんと書く

概要

先日なんとなくgnome3を使ってみようと思い、色々やっているうちにデスクトップが死んだ。 復旧するより入れなおしたほうが早い感じだったので、昔書いたものを見ながらインストールしようと思ったが、あまりに適当なことしか書いておらず絶望した。 今後のために、クリーンインストールされたubuntu14.04から、ちゃんと自分の設定を復元できるように書いておく。

インストールするものは以下とその他細かい諸々。

  • cuda
  • chainer
  • TensorFlow
  • Emacs

細かいこと色々

$ LANG=C xdg-user-dirs-gtk-update
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev  libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev linux-headers-`uname -r`
$ sudo apt-get install zsh
$ chsh -s /usr/bin/zsh
$ sudo apt-get install git
$ sudo apt-get install gimp ipython ipython-notebook

cudaのインストール

nvidiaのサイトから自分にあったグラフィックボードのドライバとcudaをダウンロードする。 TensorFlowは7.0をインストールしろと言っているので、最新版の7.5ではなく、7.0をダウンロードする。

まだよくわかってないけど、こちら にやれと書いてあるので、ブラックリストに登録をする。たぶんドライバが干渉するのを防ぐんだと思う。

$ sudo nano /etc/modprobe.d/blacklist-nouveau.conf

ファイルを開いて以下を記述。

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

その後色々

$ echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
$ update-initramfs -u
$ sudo update-initramfs -u
$ sudo reboot

再起動したらCUIに切り替えて以下を実行する。

$ sudo service lightdm stop
$ chmod +x NVIDIA-Linux-x86_64-352.63.run
$ sudo ./NVIDIA-Linux-x86_64-352.63.run
$ chmod +x cuda_7.0.28_linux.run
$ sudo ./cuda_7.0.28_linux.run

cudaの方でグラフィックドライバをインストールするかと聞かれるが、別途入れているのでnoを選択する。 ちなみにyesを選択すると、黒画面に白カーソルが表示されるだけで操作できず、しかもCUIにも入れないという悲しい事態になった。

$ sudo service lightdm start

ここで正しくGUIが表示されなかったら諦める。

.zshrcに以下を追記して、CUDAにパスを通す。

export CUDA_HOME=/usr/local/cuda-7.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CUDA_HOME}/lib64
export PATH=$PATH:${CUDA_HOME}/bin

chainerのインストール

とりあえずpipを入れる。最近はget-pip.pyを実行して入れるらしい。 こちらを参考にした。

chainerを入れるときにhdf5がなんとかかんとかと言われたが、こちら を見てごにょごにょするとうまくいった。 実行したのは以下。

$ curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | sudo python
$ sudo apt-get install python-dev
$ sudo pip install -U cython
$ sudo apt-get install libblas-dev liblapack-dev gfortran
$ sudo apt-get install g++
$ sudo pip install  numpy scipy
$ sudo apt-get install libhdf5-dev
$ sudo pip install chainer

ついでに使いそうなものを色々入れる

$ sudo pip install sklearn
$ sudo pip install pandas
$ sudo pip install xgboost

Emacsのインストール

とりあえずgit hubから自分の設定ファイルを落としてくる。

$ ssh-keygen

できた id_rsa.pub をgithubの自分のレポジトリに登録して、以下を実行。

$ git clone git@github.com:kskkwn/.emacs.d.git

依存しているものを色々入れる。

$ sudo apt-get install cmigemo pyflakes ruby
$ sudo pip install jedi epc autopep8

Emacsをインストールする。24.4用に設定ファイルを作っているので、面倒なことを避けるためにバージョンは固定。

$ sudo apt-get install build-essential
$ sudo apt-get build-dep emacs24
$ wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-24.4.tar.gz
$ tar -xf emacs-24.4.tar.gz
$ ./configure
$ make
$ sudo make install

ちゃんとできていればここまでで、いつものEmacsが起動するはず。 前に書いたやつからjedi入れたりtabbar入れたりhelm入れたりして、だいぶ変わっているし、またなんか書こう。

TensorFlow

基本的に公式サイト の言うとおりに実行すればいい。

GPU使いたいので、まずはcuDNNをインストールする。 cuDNNはNVIDIAのDeveloperサイトに登録しないとダウンロードできない。 ユーザー登録の際に色々聞かれるけど、「Tensor Flow使いたいねん。しゃす。」ぐらいのことを英語で書いて、数時間待ったらあっさり登録できた。これも最新版でないものをダウンロードする。

$ tar xvzf cudnn-6.5-linux-x64-v2.tgz
$ sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda-7.0/include
$ sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda-7.0/lib64

続いてTensorFlowのインストール。

$ sudo pip install --upgrade https://www.tensorflow.org/versions/master/get_started/os_setup.htmlhttps://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.6.0-cp27-none-linux_x86_64.whl

やってみるとこんな感じのメッセージが表示された。

>>> import tensorflow
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcublas.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcudnn.so.6.5 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcufft.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcuda.so locally
I tensorflow/stream_executor/dso_loader.cc:101] successfully opened CUDA library libcurand.so.7.0 locally

successfullyって言ってるし、大丈夫やろう。

今後の課題

  • pythonの仮想環境の構築 正直みんな何のためにやっているのかよくわからないので、今はやってないけど、そのうちやったほうがいいのかもしれない。
  • TeX環境の構築 家でTeX書くことないしなぁと思っていれていない。
  • C++環境の構築 ここ半年ぐらいC++書いてない。できれば今後も書きたくない。

参考