UNIXでPython,Ruby,Perl,Node.jsのバージョン管理環境構築

研究室の新入生向けに書いたやつ。
各種スクリプト言語のバージョン管理をするための環境を構築する。
pythonbrew, rvm, perlbrew, nvmでバージョン管理をし、pip, gem, cpanm, npmでパッケージの管理をする。

アプリについては[【まとめ】これ知らないプログラマって損してんなって思う汎用的なツール 100超](http://qiita.com/items/2183)を読んで適当に入れればいい。

Macの人は「homebrewのインストール」までは順番にやっていく。それ以降は必要なものだけやればいい。
その他のUNIX環境の人はyumなりaptなりを使って必要なパッケージを用意してから、「homebrewのインストール」以降で必要なものをやればいい。

#OSXのバージョンを上げる

[]->[Software Update...]

インストール完了するまで待つ

#Xcodeインストール

[Download](https://developer.apple.com/downloads/index.action)

ここからXcode for Lionの最新版をダウンロードしてインストール

##(任意)Xcode Command Line Toolsインストール

Xcodeを起動して[Xcode]->[Preferences]->[Downloads]からCommand Line Toolsを選んでインストール。
これがないとhomebrewが変になることが（極めて稀に）ある。

#Java Runtimeインストール

同様にJava for OS X Developer Packageをダウンロードしてインストール

#homebrewインストール(+git)

[Installation - homebrew](https://github.com/mxcl/homebrew/wiki/installation)

端末で以下を実行

```sh
$ ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
$ brew install git
$ brew update
```

homebrew自体のバージョン管理のためにgitが必要

#(任意)zshインストール

シェルにこだわりが無いなら

```sh
$ brew install zsh
```

##(任意)oh-my-zshインストール

今まで.zshrcを自分で用意したことがない人はこれをいれると捗る

```sh
$ curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
```

#python環境構築

[pythonbrew](https://github.com/utahta/pythonbrew/blob/master/README.rst)

```sh
$ curl -kL http://xrl.us/pythonbrewinstall | bash
$ echo '[[ -s "${HOME}/.pythonbrew/etc/bashrc" ]] && source $HOME/.pythonbrew/etc/bashrc' >> ~/.zshrc
$ pybrew install -fn 2.7.2 3.2  # 時間かかる
```

##(任意)virtualenvを分ける

virtualenvを作ってパッケージを切り分けたい場合は

```sh
$ pybrew venv create lab -p 2.7.2
$ pybrew venv create lab -p 3.2
```

これでpython2.7.2と3.2にそれぞれ`lab`という名前のvirtualenvが作成される。よく分からない人は、とりあえず作っておくと、後で後悔しなくて済む可能性が高いのでやっとくことを勧める。

##pythonのバージョンを切り替える方法

```sh
$ pybrew switch 2.7.2
$ pybrew switch 3.2
```

virtualenvを作った人は

```sh
$ pybrew venv use lab -p 2.7.2
$ pybrew venv use lab -p 3.2
```

venvをまたいで使いたいモジュールはvenvを切ってからインストールするといい（ipythonインストール参照)

##モジュールのインストール方法

インストールしたいバージョンにpybrewで切り替えてから以下を実行

```sh
$ pip install PACKAGE_NAME
```

##(任意)ipythonインストール

```sh
$ pybrew switch 2.7.2  # venv無しの2.7.2に移動
$ pip install ipython
$ pybrew venv use lab
```

ipythonの起動

```sh
$ ipython
```

このようにvenvなしの状態でインストールしたモジュールは全てのvenvから参照できる。

#ruby環境構築

[rvm](http://beginrescueend.com/)

```sh
$ curl -L get.rvm.io | bash -s stable
$ echo '[[ -s "${HOME}/.rvm/scripts/rvm" ]] && source $HOME/.rvm/scripts/rvm' >> ~/.zshrc
$ rvm install 1.9.3  # 時間かかる
```

##(任意)gemset

gemsetを使って環境の切り分け。こちらもよく分からない人はやっとくべき。

```sh
$ rvm use 1.9.3
$ rvm gemset create lab
$ rvm use 1.9.3@lab --default
```

globalという名前のgemsetが存在し、それに入っているgemは他の全てのgemsetからも参照できるので、汎用的なツールはglobalに入れるといい。(pryインストールの項目参照)

##(任意)gemでドキュメントのインストールをしないようにする

ドキュメントが要らない人だけ

```sh
$ echo 'gem: --no-ri --no-rdoc' >> ~/.gemrc
```

##gemのインストール

```sh
$ gem install PACKAGE_NAME
```

##(任意)pryのインストール

ruby用のインタラクティブシェル。gemsetに寄らず必要なのでglobalに入れる

```sh
$ rvm use 1.9.3@global
$ gem install pry
$ rvm use 1.9.3@lab  # 戻す
```

起動するには

```sh
$ pry
```

#perl環境構築

[perlbrew](http://perlbrew.pl/)

デフォルトでperlbrewは$HOME/perl5/perlbrewにインストールされる。これが嫌な場合は

```sh
$ echo 'export PERLBREW_ROOT=$HOME/.perl5/perlbrew' >> .zshrc
$ source ~/.zshrc
```

```sh
$ curl -kL http://install.perlbrew.pl | bash
$ echo '[[ -s "${HOME}/.perl5/perlbrew/etc/bashrc" ]] && source $HOME/.perl5/perlbrew/etc/bashrc' >> ~/.zshrc
$ perlbrew install perl-5.14.2  # 時間かかる
$ perlbrew switch perl-5.14.2
$ perlbrew install-cpanm
```

#node環境構築

[nvm](https://github.com/creationix/nvm)

```sh
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ echo '[[ -s "${HOME}/.nvm/nvm.sh" ]] && source $HOME/.nvm/nvm.sh' >> .zshrc
$ nvm install v0.6.15  # 時間かかる
$ nvm alias default v0.6.15
```

##パッケージのインストール

nvmでnodeを入れると自動的にnpmが使えるようになっている。
npmはデフォルトでプロジェクト単位でパッケージを管理するので、rvmにおいてgemsetでパッケージを分けて管理したようなことをする必要がない。

パッケージをインストールするには以下のようにする

```sh
$ npm install PACKAGE_NAME
```

これを実行するとカレントディレクトリにnode_modulesというディレクトリが作成される。カレントディレクトリ以下のnodeプロジェクト全てからこのnode_moduelsは参照される。

グローバルな箇所に置きたい場合は-gオプションをつける。CoffeeScriptのインストール参照

##(任意)CoffeeScriptのインストール

```sh
$ npm install -g coffee-script
```