Debian 9 Stretch に rbenv をインストールして Ruby の最新バージョンを使う

## Debian 9 Stretch 環境を用意

今回は macOS 上で Docker for Mac を使用して Debian 9 Stretch 環境を用意する。

[Docker For Mac \| Docker](https://www.docker.com/docker-mac) から Docker For Mac をインストールして、以下のコマンドで Docker コンテナを起動してログインする。

```
$ docker run --interactive --tty --detach --name foo debian:stretch
$ docker exec --interactive --tty foo bash --login
```

Debian パッケージをインストールするので apt update コマンドでパッケージ情報を更新しておく。

```
# apt update
```

参考: [library/debian \- Docker Hub](https://hub.docker.com/_/debian/)

## rbenv のインストール

Debian の rbenv パッケージをインストールする。

```
# apt install rbenv
```

参考: [GitHub \- rbenv/rbenv: Groom your app’s Ruby environment](https://github.com/rbenv/rbenv), [Debian \-\- stretch の rbenv パッケージに関する詳細](https://packages.debian.org/stretch/rbenv)

## rbenv をインストールしただけでは Ruby をインストールできない

試しに実行してみると rbenv install が見つからない。

```
# rbenv install
rbenv: no such command `install'
```

ヘルプコマンドを打っても rbenv install が載っていない。

```
# rbenv -h
Usage: rbenv <command> [<args>]

Some useful rbenv commands are:
   commands    List all available rbenv commands
   local       Set or show the local application-specific Ruby version
   global      Set or show the global Ruby version
   shell       Set or show the shell-specific Ruby version
   rehash      Rehash rbenv shims (run this after installing executables)
   version     Show the current Ruby version and its origin
   versions    List all Ruby versions available to rbenv
   which       Display the full path to an executable
   whence      List all Ruby versions that contain the given executable

See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/rbenv/rbenv#readme
```

rbenv だけでは Ruby をインストールすることはできない。 Ruby のソースコードをダウンロードしてコンパイルするプログラムである ruby-build が必要となる。

## ruby-build のインストール

Debian にも ruby-build パッケージはあるが、それでは Ruby の最新バージョンをインストールできない。そのため GitHub リポジトリにある最新の ruby-build を持ってくる。

Debian の git パッケージをインストールする。

```
# apt install git
```

GitHub リポジトリにある最新の ruby-build をダウンロードして rbenv の plugins/ruby-build ディレクトリに置く。

```
# mkdir -p "$(rbenv root)"/plugins
# git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
```

参考: [GitHub \- rbenv/ruby\-build: Compile and install Ruby](https://github.com/rbenv/ruby-build)

## Ruby をインストールするために必要なパッケージのインストール

Ruby のソースコードをダウンロードするために必要な Debian パッケージをインストールする (curl または wget)。

```
# apt install wget
```

参考: [ruby\-build/ruby\-build at master · rbenv/ruby\-build · GitHub](https://github.com/rbenv/ruby-build/blob/master/bin/ruby-build)

Ruby　のソースコードをコンパイルするために必要な Debian パッケージをインストールする。
ruby-build は、コンパイルの前にシステムの依存関係をチェックしないとのこと。必要なライブラリを先にインストールしておく必要がある。

```
# apt install gcc-6 autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
```

参考: [Home · rbenv/ruby\-build Wiki · GitHub](https://github.com/rbenv/ruby-build/wiki#suggested-build-environment)

## Ruby 最新バージョンのインストール

インストール可能なバージョン一覧を確認する。

```
# rbenv install --list
```

バージョンを指定してインストールする。今回は現時点で最新の 2.4.2 をインストールする (2017-09-15現在)。

```
# rbenv install 2.4.2
Downloading ruby-2.4.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2
Installing ruby-2.4.2...
Installed ruby-2.4.2 to /root/.rbenv/versions/2.4.2
```

インストールできているか確認する。

```
# rbenv versions
* system (set by /root/.rbenv/version)
  2.4.2
```

使用する Ruby のバージョンを指定する。

```
# rbenv global 2.4.2

# rbenv versions
  system
* 2.4.2 (set by /root/.rbenv/version)
```

## PATH を設定する

rbenv で指定したバージョンの Ruby を実行するためには $HOME/.rbenv/shims の実行パス設定が必要。

```
# export PATH="$(rbenv root)/shims:$PATH"

# ruby --version
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
```

ログインするたびに手動で設定するのは不便なので、ログイン時に設定されるように書いておくと便利。

```
# echo 'export PATH="$(rbenv root)/shims:$PATH"' >> ~/.bash_profile
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
```

(rbenv init は今回の環境では無くても動作した。Debian の rbenv パッケージを使っているからだろうか)

## ruby-build のアップデート

Ruby の新しいバージョンがリリースされたときは、 ruby-build を更新する。

```
$ cd "$(rbenv root)"/plugins/ruby-build
$ git pull
```

これによって、また新しいバージョンをインストールすることができる。

```
# rbenv install x.x.x
```