月別アーカイブ: 2014年9月

【Linux】CentOS6.5にrbenvをsudoで呼び出せるよう環境構築

先日Sassを使うためにRubyをインストールしようと思い、我がCentOS6.5に環境構築をしようとしたところ色々とハマったので備忘録程度に記述。

色々と調べたところどうやらrbenvという管理ツールを使ってRubyをインストールする方法がいいらしいので、rbenvを使って環境構築する方法を書いていく。

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

まず始めに

rbenvのGitHubにある環境構築の方法はHOMEディレクトリにrbenvをインストールするものでユーザーを変えると使えなくなる。面倒なのでどのユーザーでもsudoでrbenvを呼び出せるよう/usr/local/rbenvにインストールする。

sudoersを編集

sudoersはsudoコマンドについての色々な設定が書かれているファイル。sudoコマンドを実行した時にPATHが引き継がれるよう設定を変える。

次のコマンドを打ってsudoers編集画面に行く。

sudo visudo

編集画面にて次のコマンドを打つ(“/”はviの検索コマンド)

/secure_path

次のような行を見つける。

# Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

このsecure_pathというのはsudo実行時に通すことのできるPATHのリストである。ここに書かれていない場所にあるPATHはsudo実行時に通らないので、rbenvをインストールする予定のPATHを追加していく。まず、先頭のシャープ「#」を外しコメントアウトする(すでに外されているかもしれない)。コロン「:」でPATHを追加していく。追加するPATHは「/usr/local/rbenv/bin」と「/usr/local/rbenv/shims」だ。これらを実行すると次のような感じになる。

Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims"

次にsecure_pathの上の方に「Defaults env_keep」と書かれた行がいくつかあるのでその下に次の行を追加する。

Defaults env_keep += "PATH RBENV_ROOT"

この「PATH」を追加することによってsudo実行時にPATHが引き継がれるようになる(すでに追加されているかもしれない)。「RBENV_ROOT」は後の設定で通すPATHである。

rbenvをインストール

次のコマンド打ってrbenvをGitHubから取得する。なおgitをインストールしていないのであれば、あらかじめ「sudo yum -y install git」でgitをインストールしておく。

sudo git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv

次のコマンドを打ち、rbenvの初期設定をする。

sudo rbenv init -

PATHを設定する

ログイン時にPATHが自動で通るようにホームディレクトリにある「.bash_profile」にPATHを通すコマンドを書く。「.bash_profile」は直接編集せず、次のコマンドを打ち「.bash_profile」にPATHを通すコマンドが書かれるようにする。

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

exportというのはPATHを通すコマンドで、これが「.bash_profile」に書かかれることによって、ログイン時にrbenvへのPATHが自動で通るようになる。

次のコマンドでシェルを再起動する

exec ${SHELL} -l

これでrbenvを使えるようになる

ruby-buildをインストール

Rubyをインストールするためにruby-buildというプラグインを使うので、次のコマンドを打ってruby-buildをGitHubから取得する。

sudo git clone git://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build

OpenSSLをインストール

rbenvでRubyインストールする際、OpenSSLがインストールされていないとRubyのインストールに失敗する。次のコマンドを打ちOpenSSLをインストールする。

sudo yum -y install openssl-devel

Rubyをインストール

ここまででRubyをインストールする準備が整ったのでRubyをインストールする。しかし、インストールするRubyのバージョンによっては失敗する。Rubyのバグのようである。修正されたruby 2.0.0-p353以降は失敗しないようなのでこれを次のコマンドでインストールする。

sudo rbenv install -v 2.0.0-p353

インストールされたら、次のコマンドでrubyのバージョンを設定する。

sudo rbenv global 2.0.0-p353

最後に次のコマンドを打つ

sudo rbenv rehash

これでgemコマンドもsudoを通して使えるようになる。「rbenv rehash」はgemを使って何かコマンドをインストールしたりする度に実行する必要があるようだ。例えば「sudo gem install sass」でsassをインストールした後など「sudo rbenv rehash」とコマンドを打つ必要がある。

インストールしたrbenvを消す方法

もし何か失敗してrbenvを再インストールしたりすることになった時のためにその方法も書いておく。rbenvを消すにはrbenvをインストールしたディレクトリを削除すればいい。今回は/usr/local/rbenvにインストールしたのでこれを次のコマンドで消す。ただし、gemでインストールしたコマンドも丸ごと消える。

sudo rm -rf /usr/local/rbenv

これでrbenvは消えるが、「.bash_profile」に書いたコマンドは消えないので、ログインする度にrbenvが呼ばれて、「command not found rbenv」みたいな表示が出る。これも消したい場合は、「vi ~/.bash_profile」で「PATHを設定する」の項で書いた設定を消せばいい。つまり、rbenvを再インストールする際は、再び「.bash_profile」にPATHを通すコマンドを書く必要はない。