rbenv install
とか gem install
とか,どんな権限で実行すればいいのかわかんなかったのでたしかめました。
rbenv install とか利用できるユーザを限定する場合
rbenv
ディレクトリの group (たとえば staff
) を設定して chmod g+ws
とかする方法。
たぶん rbenv GitHub Wiki の Shared install of rbenv というページが元になってるんだろうけど,この Wiki ページは今やもう存在しないのでよくわかりません。
インストール手順
Qiita にもいくつかあるし,kyanny さんの記事もあるので,方法は割愛します。
rbenv install の際
インストールできる権限 (例だと staff
所属) のユーザが,
$ rbenv install 2.0.0-p0
などのようにする。
で,自分の環境だと chmod g+s
しててもインストールしたユーザの user ID と primary group ID で versions
下に 0755
(drwxr-xr-x
) でインストールされました (umask にもよるとは思いますが)。
ということは,結局アンインストールとか gem install
とかは,そのバージョンの Ruby をインストールしたユーザーが行う必要がありそうです。
違っていたらすみません。
gem install の際
インストールできる権限 (例だと staff
所属) のユーザが,
$ gem install bundler
などのようにする。
んだけど,結局前項で書いたように,そのバージョンの Ruby をインストールしたユーザが system wide な gem install をする必要があり (そう) です。
rbenv install とかしていいのは root 権限だけ (の場合)
(どうしても rbenv を system-wide にインストールしたい場合は) 個人的にはこちらのほうがおすすめ。
インストール手順
適当ですが,/usr/local/rbenv
にインストールする場合。/usr/lib/rbenv
要するに chown
とか chmod
とかしてないだけです。
$ git clone https://github.com/sstephenson/rbenv.git
$ cd rbenv
$ mkdir versions
$ mkdir shims
$ mkdir plugins && cd plugins
$ git clone https://github.com/sstephenson/ruby-build.git
(ほか rbenv-gemset とか rbenv-default-gems とか rbenv-vars とかお好みで)
$ cd ../..
$ sudo cp -R rbenv /usr/local/
ruby-build
の install.sh
は実行していません。ruby-build
コマンドを使わない (つねに rbenv install
等で実行する) のであれば,必要ないと思います。
あとは /etc/profile.d/rbenv.sh
とか /etc/skel/.bash_profile
とかに必要事項を書く。
# cat > /etc/profile.d/rbenv.sh
export RBENV_ROOT="/usr/local/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
CTRL+D
sudo の設定
以下のインストール等を (su -
や sudo -Hi
等で) root shell でおこなうならやる必要のないことですが, sudo
でおこなうなら,sudo 先から rbenv
や ruby
等が見えるようにする必要があります。
(root shell だと,個人ユーザの rbenv version と違ってくるので,sudo
使うほうがおすすめではあります)
-
Defaults
のenv_keep
にPATH
,RBENV_ROOT
,RBENV_VERSION
を追加する -
Defaults
のsecure_path
を設定しない (か,secure_path
に$RBENV_ROOT/shims
,$RBENV_ROOT/bin
を追加する)
rbenv install の際
root 権限で実行する。たとえば sudo
経由の場合,
$ sudo rbenv install 2.0.0-p0
などのようにする。
gem install の際
root 権限で実行する。たとえば sudo
経由の場合,
$ sudo gem install bundler
などのようにする。
もちろん,root 権限は使わずに個人ディレクトリに
$ gem install --user-install bundler
のようにしてインストールすることもできますが,個人ディレクトリの gem 用 bin
ディレクトリに普通 PATH
は通していないので
WARNING: You don't have /home/dayflower/.gem/ruby/2.0.0/bin in your PATH, gem executables will not run.
みたくおこられます。もちろん個人用に PATH
通してもいいんだけど,そうすると rbenv
使う意味がないですね。
Gem を system wide にインストールしたくないなら bundler 使えってことで。
ちょっと困ること
rbenv rehash
すると
rbenv: cannot rehash: /usr/local/rbenv/shims isn't writable`
みたく怒られてしまいます。
個人的には実害ほぼないのでいいんですけど。