年末なので #gentooinstallbattle 実況しつつPlay2の開発環境作ります。(その3：Scala+Playインストール編)

年末とか関係なく恒例 #gentooinstallbattle しましょうということで、今回はVirtualBox上にGentoo Linuxをインストールし、Scala+Play2の開発環境を作る様子を実況します。
[「その1：OSインストール編」はこちら](http://qiita.com/mazgi/items/b9ccfc28b72b5e6bdeec)
[「その2：ミドルウェアインストール編」はこちら](http://qiita.com/mazgi/items/50ddc0c29de188b0eb73)

----

## 本編

そろそろ開発用のユーザーでも作ろうと思います。

```shell-session
localhost ~ # useradd -m -gusers -Gwheel mazgi
localhost ~ # passwd mazgi
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: password updated successfully
localhost ~ # id mazgi
uid=1000(mazgi) gid=100(users) groups=100(users),10(wheel)
```

ユーザーができたので `su -` してみます。
gitとかで使うので鍵ペアを生成します。
ついでにsshで入りやすいように公開鍵を登録しておきます。

```shell-session
localhost ~ # su - mazgi
mazgi@PlayGentoo2 ~ $ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mazgi/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/mazgi/.ssh/id_rsa.
Your public key has been saved in /home/mazgi/.ssh/id_rsa.pub.
The key fingerprint is:
af:3c:3d:88:e1:ee:41:43:ad:39:33:58:4e:87:22:61 mazgi@PlayGentoo2
The key's randomart image is:
+--[ RSA 2048]----+
|  E              |
| . .   o         |
|  . . = o        |
|   . B +         |
|    . X S        |
|     ..= .       |
|     ..o o.      |
|      ooo.o      |
|     oo o. .     |
+-----------------+
mazgi@PlayGentoo2 ~ $ vi .ssh/authrized_keys
```

・・・ファイル名間違えました。

```shell-session
mazgi@PlayGentoo2 ~ $ mv .ssh/authrized_keys .ssh/authorized_keys
```

これからホームディレクトリにScalaやPlayをインストールするわけですが、 `/home` の容量が心もとない気がします。

```shell-session
mazgi@PlayGentoo2 ~ $ df -h ~
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/VG00-Home  4.0G  740K  4.0G   1% /home
```

`/home` はJFSでフォーマットしたので、LVを大きくしてresizeオプションを指定しつつremountすれば増えるはずです。

```shell-session
mazgi@PlayGentoo2 ~ $ su -
Password: 
PlayGentoo2 ~ # lvextend -L+4G /dev/VG00/Home 
  Extending logical volume Home to 8.00 GiB
  Logical volume Home successfully resized
PlayGentoo2 ~ # mount -o resize,remount /home/
PlayGentoo2 ~ # exit
logout
```

増えました。ホクホク♪

```shell-session
mazgi@PlayGentoo2 ~ $ df -h ~
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/VG00-Home  8.0G  1.3M  8.0G   1% /home
```

次は…そうですね、そろそろzsh使いたいです。
自分用の `.zshrc` がほしいのでgithubの https://github.com/mazgi/dot_files をcloneします。

```shell-session
mazgi@PlayGentoo2 ~ $ git clone git://github.com/mazgi/dot_files.git
Cloning into 'dot_files'...
remote: Reusing existing pack: 102, done.
remote: Total 102 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (102/102), 10.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (35/35), done.
Checking connectivity... done
```

とりあえず `.zshrc` だけsymlinkを張ってログインシェルをzshに変えます。

```shell-session
mazgi@PlayGentoo2 ~ $ ln -s dot_files/zsh/.zshrc .
mazgi@PlayGentoo2 ~ $ chsh 
Changing the login shell for mazgi
Enter the new value, or press ENTER for the default
	Login Shell [/bin/bash]: /bin/zsh
```

他の使いそうなdot_filesもsymlinkを張っておきます。

```shell-session
mazgi@PlayGentoo2 ~ $ zsh
[mazgi@PlayGentoo2] $ ln -s dot_files/git/.git* .
[mazgi@PlayGentoo2] $ ln -s dot_files/tmux/.tmux.conf .
[mazgi@PlayGentoo2] $ ln -s dot_files/vim/.vim* .
[mazgi@PlayGentoo2] $ cd dot_files
[mazgi@PlayGentoo2] $ git submodule update --init --recursive
Submodule 'vim/.vim/bundle/vundle' (git://github.com/gmarik/vundle.git) registered for path 'vim/.vim/bundle/vundle'
Cloning into 'vim/.vim/bundle/vundle'...
remote: Reusing existing pack: 2487, done.
remote: Total 2487 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2487/2487), 317.51 KiB | 199.00 KiB/s, done.
Resolving deltas: 100% (818/818), done.
Checking connectivity... done
Submodule path 'vim/.vim/bundle/vundle': checked out '3dcb0c32991026d0d226aaad57b622c6553cd0db'
```

さていよいよScalaとPlayをインストールします。
まずインストール先ディレクトリを作ります。
ちょっときもちわるいですが今回は `~/Applications` というディレクトリを作って、そこにインストールすることにします。

```shell-session
[mazgi@PlayGentoo2] $ mkdir -p ~/Applications/{Scala,Play,sbt}/Archives
```

まずScalaをダウンロードして展開します。

```shell-session
[mazgi@PlayGentoo2] $ cd ~/Applications/Scala/Archives
[mazgi@PlayGentoo2] $ curl -LO http://www.scala-lang.org/files/archive/scala-2.10.3.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.1M  100 29.1M    0     0   743k      0  0:00:40  0:00:40 --:--:--  859k
[mazgi@PlayGentoo2] $ cd ~/Applications/Scala/
[mazgi@PlayGentoo2] $ tar xf Archives/scala-2.10.3.tgz
[mazgi@PlayGentoo2] $ ln -fs scala-2.10.3 current
[mazgi@PlayGentoo2] $ ll
total 4
drwxr-xr-x 2 mazgi users  8 Dec 30 17:24 Archives/
lrwxrwxrwx 1 mazgi users 12 Dec 30 17:26 current -> scala-2.10.3/
drwxr-xr-x 9 mazgi users 64 Dec 30 17:44 scala-2.10.3/
```

次にPlayをダウンロードして展開します。

```shell-session
[mazgi@PlayGentoo2] $ cd ~/Applications/Play/Archives
[mazgi@PlayGentoo2] $ curl -LO http://downloads.typesafe.com/play/2.2.1/play-2.2.1.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  104M  100  104M    0     0  2292k      0  0:00:46  0:00:46 --:--:-- 2364k
[mazgi@PlayGentoo2] $ cd ~/Applications/Play
[mazgi@PlayGentoo2] $ unzip -o Archives/play-2.2.1.zip > /dev/null
[mazgi@PlayGentoo2] $ ln -fs play-2.2.1 current
[mazgi@PlayGentoo2] $ ll
total 4
drwxr-xr-x 2 mazgi users  8 Dec 30 17:27 Archives/
lrwxrwxrwx 1 mazgi users 10 Dec 30 17:30 current -> play-2.2.1/
drwxr-xr-x 5 mazgi users 96 Dec 30 17:52 play-2.2.1/
```

さいごにsbtをダウンロードして展開します。

```shell-session
[mazgi@PlayGentoo2] $ cd ~/Applications/sbt/Archives
[mazgi@PlayGentoo2] $ mkdir -p 0.13.1
[mazgi@PlayGentoo2] $ cd 0.13.1
[mazgi@PlayGentoo2] $ curl -LO http://repo.scala-sbt.org/scalasbt/sbt-native-packages/org/scala-sbt/sbt/0.13.1/sbt.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  971k  100  971k    0     0   190k      0  0:00:05  0:00:05 --:--:--  203k
[mazgi@PlayGentoo2] $ cd ~/Applications/sbt/
[mazgi@PlayGentoo2] $ tar xf Archives/0.13.1/sbt.tgz
[mazgi@PlayGentoo2] $ mv sbt sbt-0.13.1 
[mazgi@PlayGentoo2] $ ln -fs sbt-0.13.1 current
[mazgi@PlayGentoo2] $ ll
total 0
drwxr-xr-x 3 mazgi users  8 Dec 30 17:31 Archives/
lrwxrwxrwx 1 mazgi users 10 Dec 30 17:32 current -> sbt-0.13.1/
drwxr-xr-x 5 mazgi users 32 Dec 30 17:54 sbt-0.13.1/
```

じつは `.zshrc` でScalaやPlayのディレクトリが存在すればPATHを通すようにしているのでこれでzsh起動時にPATHが通るはずです。
確認してみます。

```shell-session
[mazgi@PlayGentoo2] $ zsh
[mazgi@PlayGentoo2] $ echo $PATH
/home/mazgi/Applications/Play/current:/home/mazgi/Applications/Scala/current/bin:/home/mazgi/Applications/bin:/home/mazgi/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3
[mazgi@PlayGentoo2] $ scala -version
Scala code runner version 2.10.3 -- Copyright 2002-2013, LAMP/EPFL
[mazgi@PlayGentoo2] $ play --version
sbt launcher version 0.13.0
[mazgi@PlayGentoo2] $ sbt --version
Loading /home/mazgi/Applications/sbt/sbt-0.13.1/bin/sbt-launch-lib.bash
sbt launcher version 0.13.1
```

よさそうです。

![Screen Shot 2013-12-31 at 3.05.07 AM.png](https://qiita-image-store.s3.amazonaws.com/0/9676/79907a87-f80e-4b36-2e2b-6f2ef33cac0d.png)

以上です。