先日、システムワイドにインストールしようとした時には失敗したけど、ググっていたらヒントになりそうな記事を見つけた。
cf. Centos7にNginx + UnicornでRedmine3.3構築方法 – Qiita
つまり、/usr/local/rbenv のパーミッションの問題を解決してやればいいんではないか。
前提
/usr/local/rbenv 以下には、先日インストール(というか git clone)したファイルが残っている。
新しいユーザーとグループの作成
takatoh にはユーザーローカルに rbenv がインストールされてしまっていて、ここで作業するとややこしい事になりそうなので、別のユーザーを作ることにする。
[takatoh@aybesea ~]$ sudo useradd bill
[sudo] takatoh のパスワード:
[takatoh@aybesea ~]$ sudo passwd bill
ユーザー bill のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードは 8 未満の文字列です。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
新しいグループ staff を作って、いま作ったユーザー bill を所属させる。
[takatoh@aybesea ~]$ sudo groupadd staff
[sudo] takatoh のパスワード:
[takatoh@aybesea ~]$ sudo usermod -G staff bill
ついでに wheel グループにも所属させておこう。
[takatoh@aybesea ~]$ sudo usermod -G wheel bill
さて、ここからはユーザー bill での作業。
rbenvの設定とインストール
/etc/profile.d/rbenv.sh をつぎのとおりに作成。
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init --no-rehash -)"
/usr/local/rbenv のグループと権限を変更。
[bill@aybesea ~]$ sudo chgrp -R staff /usr/local/rbenv
[bill@aybesea ~]$ sudo chmod -R 755 /usr/local/rbenv
/etc/profile.d/rbenv.sh を読み込んだあと、ruby-build をインストール。
[bill@aybesea ~]$ source /etc/profile.d/rbenv.sh
[bill@aybesea ~]$ cd /usr/local/rbenv/plugins/ruby-build
[bill@aybesea ruby-build]$ sudo ./install.sh
さあ、これでどうだ。rbenv がインストールされているか、確認。
[bill@aybesea ruby-build]$ rbenv -v
rbenv 1.1.1-28-gb943955
[bill@aybesea ruby-build]$ which rbenv
/usr/local/rbenv/bin/rbenv
Rubyのインストール
いよいよ Ruby のインストール。先日の 2.5.0 と間違わないように 2.4.3 をインストールしてみる。
[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
mkdir: ディレクトリ `/usr/local/rbenv/versions/2.4.3' を作成できません: 許可がありません
BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)
Inspect or clean up the working tree at /tmp/ruby-build.20180102092705.32107
Results logged to /tmp/ruby-build.20180102092705.32107.log
Last 10 log lines:
/tmp/ruby-build.20180102092705.32107 /usr/local/rbenv/plugins/ruby-build
/tmp/ruby-build.20180102092705.32107/ruby-2.4.3 /tmp/ruby-build.20180102092705.32107 /usr/local/rbenv/plugins/ruby-build
ああ、ダメだ。なんでだ?
もう一度、/usr/local/rbenv のパーミッションを確認してみる。
[bill@aybesea ~]$ ls -l /usr/local | grep rbenv
drwxr-xr-x. 12 root staff 263 12月 31 05:58 rbenv
あ、ディレクトリのパーミッションが 755 になってる。多分このせいだ。さっき間違えたようだ。
[bill@aybesea ~]$ sudo chmod -R 775 /usr/local/rbenv
[sudo] bill のパスワード:
これでもう一度インストールにチャレンジ。
[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
mkdir: ディレクトリ `/usr/local/rbenv/versions/2.4.3' を作成できません: 許可がありません
BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)
Inspect or clean up the working tree at /tmp/ruby-build.20180102094304.32661
Results logged to /tmp/ruby-build.20180102094304.32661.log
Last 10 log lines:
/tmp/ruby-build.20180102094304.32661 ~
/tmp/ruby-build.20180102094304.32661/ruby-2.4.3 /tmp/ruby-build.20180102094304.32661 ~
ああ、これでもダメか。
bill のグループを確認してみる。
[bill@aybesea ~]$ groups
bill wheel
あれ?staff グループに所属してない。
調べたところ usermod -G コマンドでは2次グループに所属させることはできるが、複数回実行すると2次グループが置き換えられるようだ。所属するグループを3つ以上にするには usermod -aG コマンドを使うようだ。
なので、次のようにする。
[bill@aybesea ~]$ sudo usermod -aG staff bill
[sudo] bill のパスワード:
[bill@aybesea ~]$ groups
bill wheel
あれ、追加されてない?id コマンドで見てみよう。
[bill@aybesea ~]$ id bill
uid=1002(bill) gid=1002(bill) groups=1002(bill),10(wheel),1003(staff)
こっちには追加されている。
それじゃ、もう一度インストールにチャレンジ。
[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
mkdir: ディレクトリ `/usr/local/rbenv/versions/2.4.3' を作成できません: 許可がありません
BUILD FAILED (CentOS Linux 7 using ruby-build 20171226)
Inspect or clean up the working tree at /tmp/ruby-build.20180102095649.535
Results logged to /tmp/ruby-build.20180102095649.535.log
Last 10 log lines:
/tmp/ruby-build.20180102095649.535 ~
/tmp/ruby-build.20180102095649.535/ruby-2.4.3 /tmp/ruby-build.20180102095649.535 ~
まだダメか。
いったん、ログアウトしてからログインし直してみよう。それからまたチャレンジ。
[bill@aybesea ~]$ rbenv install 2.4.3
Downloading ruby-2.4.3.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.3.tar.bz2
Installing ruby-2.4.3...
Installed ruby-2.4.3 to /usr/local/rbenv/versions/2.4.3
[bill@aybesea ~]$ rbenv versions
2.4.3
[bill@aybesea ~]$ rbenv global 2.4.3
[bill@aybesea ~]$ ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]
今度はうまくいった!
これで完了。
[追記]
ユーザー takatoh での設定も変更しておく。.bash_profile から rbenv 関係の記述を削除してログインし直したところ、次のようになった。
[takatoh@aybesea ~]$ rbenv -v
rbenv 1.1.1-28-gb943955
[takatoh@aybesea ~]$ which rbenv
/usr/local/rbenv/bin/rbenv
[takatoh@aybesea ~]$ rbenv versions
* 2.4.3 (set by /usr/local/rbenv/version)
[takatoh@aybesea ~]$ rbenv version
2.4.3 (set by /usr/local/rbenv/version)
ユーザーローカルでインストールした 2.5.0 は現れず、さっきシステムワイドにインストールした 2.4.3 を使うようになっている。
~/.rbenv 以下はもう要らないので削除。
[takatoh@aybesea ~]$ rm -rf .rbenv
Ruby を使うだけならこれでいいけど、他のバージョンのインストールができないので、staff グループに所属させておく。
[takatoh@aybesea ~]$ sudo usermod -aG staff takatoh
もう一度ログインし直せば完了。