rbenvをユーザー毎ではなく、システム全体で共有して利用できるようにします。
Out-of-Date!!!
この記事は2023年現在、一部古い内容となっています。
改版版をご覧ください。
前提
- gitが使用可能
- rbenv関連の書き込み権限を持つグループとして
rbnev
グループを作成、必要なユーザーを所属させる
環境
- CentOS7/8で確認しています
rbenvインストール
rbenvを操作できるグループを追加
$ sudo groupadd rbenv
追加したグループにユーザを追加
$ sudo gpasswd -a USERNAME rbenv
rbenv用のディレクトリを作成
$ sudo mkdir /usr/local/rbenv
ディレクトリの所有者(グループ)を変更
$ sudo chown .rbenv /usr/local/rbenv
ディレクトリにパーミッションを設定
$ sudo chmod 2775 /usr/local/rbenv
rbenvをインストール
Basic GitHub Checkoutを参考に。
以降、前述のrbenv
グループにユーザーが属していることを前提にしています。
id
コマンドで表示されるgroupsにrbenvが含まれない場合、再ログインする等してから実行します。
$ git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv
以下2行はお好みで。
$ sudo yum install -y gcc
$ cd /usr/local/rbenv && src/configure && make -C src
環境変数等設定
/etc/profile.d
下にrbenv.sh
等の名前のファイルに以下を記述して保存、rbenv
コマンドを利用できるようにします。
export RBENV_ROOT="/usr/local/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init --no-rehash -)"
source
コマンドでこのファイルを読み込み、初期化します。
$ source /etc/profile.d/rbenv.sh
sudoで使用可能にする
env_keep
、secure_path
に設定を追記します。
$ sudo visudo
# 既存の Defaults env_keep の下に追加
Defaults env_keep += "RBENV_ROOT"
# 既存の Defaults secure_path の末尾に :/usr/local/rbenv/bin:/usr/local/rbenv/shims を追記
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims
確認
一度ログアウト、ログインしコマンドを利用できることを確認します。
$ rbenv --version
rbenv 1.1.2-28-gc2cfbd1
rbenv-doctor
更に念を押して確認するには、rbenv-doctorを利用します。
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /usr/local/rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: not found
Unless you plan to add Ruby versions manually, you should install ruby-build.
Please refer to https://github.com/rbenv/ruby-build#installation
Counting installed Ruby versions: none
There aren't any Ruby versions installed under `/usr/local/rbenv/versions'.
You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK
この時点ではruby-build
を導入していないため、当該箇所はnot found
となっています。
ruby-buildインストール
本体
gitでcloneします。
$ git clone https://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build
Rubyビルド用パッケージ
Suggested build environmentを参考に、必要なパッケージをインストールします。
$ sudo yum install -y gcc-6 bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
CentOS8
2020/05/09時点のSuggested build environment CentOS: に従うと以下のようなエラーが出ます。
$ sudo yum install -y gcc-6 bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
Last metadata expiration check: 0:23:25 ago on Fri 08 May 2020 03:28:19 PM UTC.
No match for argument: gcc-6
No match for argument: libyaml-devel
Package ncurses-devel-6.1-7.20180224.el8.x86_64 is already installed.
Error: Unable to find a match: gcc-6 libyaml-devel
新しいRubyをビルドする上では必要なさそうですので、gcc-6とlibyaml-develを除外してしまいます。
$ sudo yum install -y bzip2 openssl-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel
確認
例えば、rbenv install --list
でインストール可能なRubyの一覧が出てきます。
$ rbenv install --list | grep ^2.7
2.7.0-dev
2.7.0-preview1
2.7.0-preview2
2.7.0-preview3
2.7.0-rc1
2.7.0-rc2
2.7.0
2.7.1
rbenv-doctor
rbenv-doctorも利用できます。
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /usr/local/rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20200401-7-g637ddf3)
Counting installed Ruby versions: none
There aren't any Ruby versions installed under `/usr/local/rbenv/versions'.
You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK
Rubyインストール
進捗が見える-v
オプションはお好みで。
$ rbenv install 2.7.1 -v
...
~
Installed ruby-2.7.1 to /usr/local/rbenv/versions/2.7.1
インストールしたRubyをデフォルトにする
$ rbenv global 2.7.1
$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
rubygems、bundlerを最新にする
$ gem update --system -N
$ gem update bundler -N
RubyGemsを操作した後は、rehashする習慣を!
$ rbenv rehash