Edited at

Ubuntuでのrbenv,ruby-buildの使い方と事前準備に必要なaptパッケージ


この記事について

Linux に rbenv, ruby-build を使う機会が多いが、rbenv install x.y.z してからパッケージが足りないことに気が付がついて1つずつインストールしていると時間の無駄なので備忘録としてまとめたもの。

'19/02/05 追記

ruby-build の wikiに各OSに応じてインストールを推奨するシステムパッケージ一覧が紹介されていました。そのため、本記事のメインであるまとめは無用と分かりました。orz

皆さん、本家を参照しましょう。

(本記事を参照して頂いた人への共有の意味を込めてパッケージインストール部の記事は残しますが、将来的に本家wikiへのリンクのみへ修正する予定です)


はじめに - rbenv, ruby-build とは


rbenv とは

rbenv とは Ruby を使った製品において、必要となる Ruby バージョンを固定するための Ruby バージョン管理ツールである。

(Ruby 以外にも irb, gem, rake, rails のバージョンも固定できる)

rbenv をインストールするとファイル .ruby-version が存在するディレクトリ配下において Ruby コマンドを実行した時のバージョンを指定する。(rbenv をローカル指定でバージョン固定する場合)


rbenv の仕組み

特定のディレクトリに寄らず利用する Ruby バージョンを固定する場合はシェル単位又はグローバルに設定することも可能である。シェル単位で指定する場合は環境変数 RBENV_VERSION 又は rbenv shell X.Y.Z により指定する。グローバルに指定する場合は、 rbenv global 又は ~/.rbenv/version により指定する。

(優先順位は rbenv#choosing-the-ruby-version を参照)

rbenv は環境変数 PATH に Ruby インストール先よりも優先度の高い順番として仮 ruby コマンドを指定し、その中でバージョンの制御を行う。(詳細な動作はrbenv#how-it-worksを参照)

rbenv はあくまで Ruby バージョンを固定するためのアプリケーションなので、その他、任意のバージョンの Ruby をインストールするためには別途 Ruby を ruby-build を使ってビルドする必要がある。

(rbenv をインストール → ruby インストール → rbenv によるバージョン指定という流れ)


ruby-build とは

ruby-build は Ruby をバージョンごとに異なるディレクトリにビルドするためのツールであり、rbenv の plugin としても動作させることが出来る。


rbenv, ruby-build をインストールする対象の環境

Ubuntu Server 16系で確認。

Windows の WSL 環境の Ubuntu でも同様。


インストールしておく必要のある apt パッケージ


インストールコマンド

'19/02/05 追記

ruby-build の wikiに各OSに応じてインストールを推奨するシステムパッケージ一覧が紹介されていました。


インストールコマンド

# Depending on your version of Ubuntu/Debian/Mint, libgdbm5 won't be available. In that case, try with libgdbm3.

$ apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev


rbenv, ruby-build のインストール方法


rbenvのインストール方法

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ ~/.rbenv/bin/rbenv init # 出力される指示に従う
$ source ~/.bash_profile


rbenv コマンドリスト


Rubyインストール・アンインストール


インストールされたRubyバージョン一覧を確認する

$ rbenv versions



インストールできるRubyバージョン一覧を確認する

$ rbenv install -l



インストールできるRubyバージョン一覧を更新する

$ cd $(dirname `which rbenv`) && git pull  # rbenv のリポジトリを最新化している ※bashで動作確認済



特定のRubyバージョンをインストールする

$ rbenv install X.Y.Z



特定のRubyバージョンをアンインストールする

$ rbenv uninstall X.Y.Z


※ ~/.rbenv/versions/X.Y.Z を消してもよい


Rubyバージョン指定


特定のディレクトリ配下で実行するRubyバージョンを固定する

$ cd ${固定化したいディレクトリへのパス}

$ rbenv local X.Y.Z # ./.ruby-version ファイルが作成される


実行しているシェル単位で実行するRubyバージョンを固定する

$ rbenv shell X.Y.Z  # 環境変数 `RBENV_VERSION` が設定される



グローバルに実行するRubyバージョンを固定する(ユーザ単位)

$ rbenv global X.Y.Z  # ~/.rbenv/version ファイルが作成される



Rubyバージョン確認


現在のディレクトリで実行されるRubyバージョンを確認する

$ cd ${調べたい対象のディレクトリ配下へ移動する}

$ ruby -v


特定のディレクトリ配下で固定化されているRubyバージョンを確認する

$ cd ${固定化したいディレクトリへのパス}

$ rbenv local


実行しているシェル単位で固定化されているRubyバージョンを確認する

$ rbenv shell



グローバルで固定化されているRubyバージョンを確認する(ユーザ単位)

$ rbenv global



関連情報


本記事に対する編集リクエストを受けて修正した履歴とお礼

編集リクエストを頂いた皆様に感謝致します。


  • nak1114 さんより libyaml-dev が必要なVersionがあるとのリクエストを頂きました