この記事について
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 のインストール方法
$ 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インストール・アンインストール
$ rbenv versions
$ rbenv install -l
$ cd $(dirname `which rbenv`) && git pull # rbenv のリポジトリを最新化している ※bashで動作確認済
$ rbenv install X.Y.Z
$ rbenv uninstall X.Y.Z
※ ~/.rbenv/versions/X.Y.Z を消してもよい
Rubyバージョン指定
$ cd ${固定化したいディレクトリへのパス}
$ rbenv local X.Y.Z # ./.ruby-version ファイルが作成される
$ rbenv shell X.Y.Z # 環境変数 `RBENV_VERSION` が設定される
$ rbenv global X.Y.Z # ~/.rbenv/version ファイルが作成される
Rubyバージョン確認
$ cd ${調べたい対象のディレクトリ配下へ移動する}
$ ruby -v
$ cd ${固定化したいディレクトリへのパス}
$ rbenv local
$ rbenv shell
$ rbenv global
関連情報
- https://github.com/rbenv/rbenv
- https://github.com/rbenv/ruby-build
- https://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/
本記事に対する編集リクエストを受けて修正した履歴とお礼
編集リクエストを頂いた皆様に感謝致します。
- nak1114 さんより libyaml-dev が必要なVersionがあるとのリクエストを頂きました