参考サイト:CentOS 6.3 にrbenv + ruby をインストール
#概要(インストールする前に)
自分の記事の焼き直しです。
このページは自分が自分のruby環境構築のために、ちょっと他では書かれていないことをやっております。
一般論とは外れています。ご了承お願いします。
ruby
rubyのバージョンを変更して使っていくために、rbenvの管理下に置くようにする。
こうしておくことで、脆弱性の修正パッチとかあてることになっても
ゆっくりインストールした後で、コマンドで切り替えるだけなので停止時間を
可能な限り短くしておくことができる。
rbenv
rbenvって何?
rubyのバージョンをいつでも任意に切り替えるツール。
bashでできているため、他のソフトにも応用は可能。
インストールの方針
- rubyアカウントを作成し、rbenvもrubyも該アカウントで管理する。
- ホームディレクトリを/opt/rubyとする。
- .rbenvディレクトリの作成場所も/opt/ruby配下。
- rubyの本体もここで管理していく
- rbenv-buildを使用してインストールする
rubyアカウントを作成する理由
rbenvのインストール先及びruby本体のインストール先が~/.rbenv 配下となっている。
何も考えずにインストールしてしまうと、いつも使っているユーザがruby本体を消してもよい権限すらもらっていることになる。
あと、各ユーザが各ホームディレクトリの配下に同一バージョンのrubyを持つことになってしまう。
気持ち悪いのでrubyアカウントで管理していく方針にしました。
セキュリティの基本事項「最小権限の原則」に反するので、特別にrubyを管理できるユーザを作る。システムメンテナンスの部類にはいると思うのでrootグループ配下にする。
インストール手順
システムアカウントの作成
$ mkdir /opt/ruby
$ useradd -r -g root -d /opt/ruby -s /usr/sbin/nologin ruby
rbenv本体インストール
$ sudo bash
$ cd /opt/ruby
$ apt-get install -y git
$ git clone https://github.com/rbenv/rbenv.git /opt/ruby/.rbenv
$ cd /opt/ruby/.rbenv
$ ./src/configure && make -C src
$ exit
$ /opt/ruby/.rbenv/bin/rbenv init
$ type rbenv
rbenv is /opt/ruby/.rbenv/bin/rbenv
が出たらOK
ruby-buildインストール
$ sudo bash
$ git clone https://github.com/rbenv/ruby-build.git /opt/ruby/.rbenv/plugins/ruby-build
$ ./install.sh
$ exit
誰でもrubyを切り替えることが出来るように権限を開放する。
$ chmod a+w /opt/ruby/.rbenv
ruby インストール
$ rbenv install 2.4.0
2.4.0の部分は最新バージョンを調べて入れました。
以下の様なエラーが出ました。
Downloading ruby-2.4.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
Installing ruby-2.4.0...
BUILD FAILED (Raspbian 8.0 using ruby-build 20161225)
Inspect or clean up the working tree at /tmp/ruby-build.20170111132826.1356
Results logged to /tmp/ruby-build.20170111132826.1356.log
Last 10 log lines:
installing capi-docs: /home/pi/.rbenv/versions/2.4.0/share/doc/ruby
The Ruby openssl extension was not compiled.
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `apt-get install -y libssl-dev libreadline-dev` to fetch missing dependencies.
Configure options used:
--prefix=/home/pi/.rbenv/versions/2.4.0
LDFLAGS=-L/home/pi/.rbenv/versions/2.4.0/lib
CPPFLAGS=-I/home/pi/.rbenv/versions/2.4.0/include
メッセージに従ってパッケージを追加インストールしてから、
rubyインストール再挑戦
$ sudo bash
$ apt-get install -y libssl-dev libreadline-dev
$ exit
$ rbenv install 2.4.0
Downloading ruby-2.4.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
Installing ruby-2.4.0...
Installed ruby-2.4.0 to /home/pi/.rbenv/versions/2.4.0
今度はうまくいきました。\(^o^)/
と思ったら、、、、インストール先が/home/piになってましたorz
/opt/ruby/.rbenv配下にしたいので、やり直しします。
(pi ユーザ)
$ cd ~
$ rm -rf .rbenv
$ export HOME=/opt/ruby
$ rbenv install 2.4.0
$ export HOME=/home/pi
、、、、スマートじゃない。。。
CONFIGURE_OPTS
とか RUBY_CONFIGURE_OPTS
を /opt/ruby/.rbenv/versions
に
設定してみましたが、インストールに失敗したので、やむなくこの形で無理やり入れました。
仕上げ
$ rbenv rehash
$ rbenv global 2.4.0
細かい環境の整備
全員ログイン時にrbenvの環境を使えるようにする。
vi /etc/profile.d/rbenv.sh
export RBENV_ROOT=/opt/ruby/.rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
あとはインストールできたか確認する。
ruby -v
gem -v
gem list