12月 302012
 

rbenv のインストール手順は個人のローカル環境に対するものになっています。が、それだと Passenger と組み合わせるときに都合がよろしくない。

ということで rbenv をシステムワイドにインストールする手順を整理しました。

目標は以下の通りです。

  • /usr/local/rbenv にインストール (RBENV_ROOT=/usr/local/rbenv)
  • Ruby のインストールやシステムへの RubyGem のインストール等は sudo を経由させる

では行ってみましょう。

sudoers の設定

まず sudoers を設定します。

デフォルトで PATH が参照しない場所にインストールしますので、sudo がそれを認識しないと困ります。.profile 等で操作ユーザの PATH を変更しても通常は sudo はそれを認識してくれませんので、操作ユーザの PATHsudo が引き継げるように sudoers を設定します。

sudo visudo -f /etc/sudoers.d/00_base

個人の趣味や管理方針等もありますが、僕は基本的にシステムの設定ファイルを直接いじらない方針でやってますので、/etc/sudoers じゃなくて /etc/sudoers.d/ 以下に固有設定を上書きで行うようにしています。

設定する内容は下記の2行。

Defaults !secure_path
Defaults env_keep += "PATH RBENV_ROOT"

env_keepsudo が引き継ぐべき環境変数を追加します。PATH はもちろん、rbenv が認識る自身のインストール場所を示す RBENV_ROOT も必要です。

secure_pathsudo が認識する「安全と確認されたパス」を設定する項目です。これが設定されている場合、sudo はコマンドの検索パスを実行時の環境を無視してこの設定値に限定します。これを使用すると安全度は上がりますが、今回は利便性向上のために(操作ユーザの PATH を信用して)設定をオフにしています。安全サイドに倒すのであれば、secure_path の値に /usr/local/rbenv/bin を含むように修正します。

ちなみに sudoers の変更はかならず visudo を使用してください。万が一記述ミスしたまま保存してしまうと、その環境では二度と sudo が実行できなくなります。visudo は記述にエラーがある場合、保存の前に確認してくれますのでやらかしてしまうことを防げます。

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

/usr/local/rbenv に rbenv および rbenv のプラグインとして ruby-build をインストールします。

操作の簡略化のために環境変数を設定しておきます。

export RBENV_ROOT=/usr/local/rbenv
export PATH=${RBENV_ROOT}/bin:${PATH}

次にgitで最新のコードをとってきて配置します。

sudo git clone git://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
sudo git clone git://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build

以後、バージョンアップする場合はそれぞれのディレクトリに移動して sudo git pull すれば簡単に最新版にできるようになります。

配置ができたら rbenv の初期設定(ディレクトリ作成等)を行います。rbenvのマニュアルだと .profile に記述することで自動化してますが、今回の環境では root 権限がないとエラーになりますので、予め手動で実行する必要があります。

sudo rbenv init -

最後に、rbenv を自分の環境から呼べるよう、.profile に設定を追加します。

bash -c 'cat <<\__EOT__ >> ~/.profile
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
__EOT__'

CentOSやAmazonLinux等のRedHat系Linux OSの場合は .profile の代わりに .bash_profile に対して上記のような設定追加を行なってください。

設定を追加したらシェルを再起動します。

exec ${SHELL} -l

これで rbenv が使えるようになりました。

rbenv install -l

とするとインストール可能なバージョン一覧が表示されるはずです。

Ruby のインストール、他

Ruby のバージョンをインストールする場合は、sudo を通して renv install を実行します。

sudo rbenv install 1.9.3-p362

インストールしたバージョンをシステムのデフォルトする場合は、やはり sudo を通して rbenv global を実行します。

sudo rbenv global 1.9.3-p362

現在使用中の Ruby バージョンに RubyGem を追加する場合、sudo を通して gem を実行します。

sudo gem install padrino

デフォルトバージョンを変えた場合や、追加コマンドをインストールするようなタイプの RubyGem をインストールした場合、renv rehash が必要ですが、これも sudo を通して実行します。

sudo rbenv rehash

これで大体、日々の運用が出来るようになりました。

おわり

  4 Responses to “rbenvをシステムワイドにインストールする”

  1. […] 基本的にこのサイト「rbenvをシステムワイドにインストールする」に書いてあることを忠実にやっていく。ただし、それでもハマる部分がいくつかあるので必要な部分を付け足しながら […]

  2. […] つくば日記(仮) rbenvをシステムワイドにインストールする uehatsu’s tech blog rbenv, ruby-buildを使って さくらのVPSにRubyをインストール Qiita Rails開発環境の構築(rbenvでRuby導入からBundler、Ra […]

  3. […] インストールする際に参考にしたページはこちら […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*