らくがきちょう

なんとなく

CentOS7 全体でユーザ共通に使える rbenv をインストールする

Ruby のバージョンを使い分けたい場合は rbenv を使います。通常であればユーザ毎に rbenv をインストールすることになり無駄です。システム全体に rbenv をインストールすることでユーザを限定せずに、しかもユーザ毎に rbenv を使うことが可能です。今回は「システム全体に rbenv をインストールする方法」をメモしておきます。作業は CentOS7 上で実施しました。

事前準備

必要なツール / ライブラリを事前にインストールしておきます。

sudo yum -y install git openssl-devel readline-devel zlib-devel

rbenv / ruby-build のインストール

/usr/local 配下に rbenv と ruby-build をインストールします。

sudo git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv
sudo git clone git://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build

secure_path の修正

/usr/local 配下に rbenv をインストールしましたが、デフォルトの状態では secure_path で許可されていない為、/usr/local/rbenv を sudo から実行することが出来ません。/usr/local/rbenv 配下の必要ディレクトリを sudo 経由で実行出来るよう、/etc/sudoers の secure_path を修正しておきます。

変更前

/etc/sudoers の中で下記の定義部分を探します。

#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

変更後

secure_path の定義を以下のように書き換えます。env_keep は追加します。

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims
Defaults    env_keep += "RBENV_ROOT"

Ruby のインストール

rbenv を使えるように準備します。尚、ユーザには書き込み権限の無い部分に rbenv をインストールしていますので、「Ruby をインストールする」等の変更処理は sudo 経由で実行します。

sudo rbenv init -

全ユーザ共通で rbenv のパスを追加します。全ユーザに反映されるよう、/etc/profile に以下を追記します。

export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

/etc/profile への修正を反映します(もしくはログアウト&ログインし直します)。

source /etc/profile

利用可能な Ruby を表示させてみます。

$ rbenv install -l | grep '  2.[34]'
  2.3.0-dev
  2.3.0-preview1
  2.3.0-preview2
  2.3.0
  2.3.1
  2.4.0-dev
  2.4.0-preview1
  2.4.0-preview2

今回は Ruby 2.3.1 をインストールしてみました。

sudo rbenv install 2.3.1
sudo rbenv rehash
sudo rbenv global 2.3.1

ついでに bundler もインストールしておきます。

sudo gem install bundler