普通にシステムワイド(/usr/local/rbenv配下)に rbenv をインストールした際、sudo 経由で rbenv を使いたいが、普通に sudo すると
$ sudo rbenv
sudo: rbenv: コマンドが見つかりません
という感じで rbenv を見つけることができない。(rbenv で入れた gem コマンドなども同様)
sudores の設定で secure_path という設定で特定のpath以外にはpathは通さない設定になっているのが原因。
対処方法としては3つ
- sudo するときに -i オプションをつける(対象ユーザの.profileなどを読み込んだ状態で実行される)
- secure_path の設定を解除する
- secure_path にrbenvのpathを追加する
今回、できるだけsecureな状態は維持しつつ面倒を省きたいので3番めの方法で対応することにした。
visudo で設定ファイルを開いて、secure_path の設定箇所を以下のように変更
(変更前)
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
↓
(変更後)
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims
これで sudo 経由で rbenv や gem コマンドが使えるようになった。