参考サイト:OS X で rbenv を使って ruby 1.9.3 の環境を作る
参考サイト:make install したソフトを Paco で削除する
参考サイト:rbenvの導入
#概要(インストールする前に)
このページは自分が自分のruby環境構築のために、ちょっと他では書かれていないことをやっております。
一般論とは外れています。ご了承お願いします。
あと、このサーバはインターネットに直接繋げない環境ですので、
tarボールとかダウンロードしてきたのをサーバにアップしています。
ruby
rubyのバージョンを変更して使っていくために、rbenvの管理下に置くようにする。
こうしておくことで、脆弱性の修正パッチとかあてることになっても
ゆっくりインストールした後で、コマンドで切り替えるだけなので停止時間を
可能な限り短くしておくことができる。
あと、アンインストール時のことを考えて Pacoを使ってファイルを管理しておくようにする。
checkinstallを使ってruby をrpm管理する方法もあるが、以下の欠点があって見送った。
- ruby本体がrpmに含まれない
- 依存関係までは簡単に面倒見てくれない。
- rubyとは関係ないが、phpインストール時に、httpd.confもrpmに含まれために、ファイル競合エラーが発生しインストール不可となった。
rbenv
rbenvって何?
rubyのバージョンをいつでも任意に切り替えるツール。
bashでできているため、他のソフトにも応用は可能。
SamStephenson(37signals)氏が作成した。
インストールの方針
- rubyアカウントを作成し、rbenvもrubyも該アカウントで管理する。
- ホームディレクトリを/opt/rubyとする。
- .rbenvディレクトリの作成場所も/opt/ruby配下。
- rubyの本体もここで管理していく
- rbenv-buildは使用しない(インターネットに繋がっていないので、ruby本体はmake installでインストールする)
rubyアカウントを作成する理由
rbenvのインストール先及びruby本体のインストール先が~/.rbenv 配下となっている。
何も考えずにインストールしてしまうと、いつも使っているユーザがruby本体を消してもよい権限すらもらっていることになる。
あと、各ユーザが各ホームディレクトリの配下に同一バージョンのrubyを持つことになってしまう。
気持ち悪いのでrubyアカウントで管理していく方針にしました。
セキュリティの基本事項「最小権限の原則」に反するので、特別にrubyを管理できるユーザを作る。システムメンテナンスの部類にはいる
と思うのでrootグループ配下にする。
インストール手順
システムアカウントの作成(以降、全てrootユーザで実施。)
useradd -r -g root -d /opt/ruby -s /sbin/nologin ruby
rbenvインストール
rbenv-master.zip を/opt/rubyに配置する。
その後、gitの展開
cd /opt/ruby
unzip rbenv-master.zip
mv rbenv-master ./.rbenv
rm rbenv-master.zip
mkdir /opt/ruby/.rbenv/versions/
echo "system" > /opt/ruby/.rbenv/version
誰でもrubyを切り替えることが出来るように権限を開放する。
chmod a+w /opt/ruby/.rbenv
chmod a+w /opt/ruby/.rbenv/versions
全員ログイン時にrbenvの環境を使えるようにする。
vi /etc/profile.d/rbenv.sh
export RBENV_ROOT=/opt/ruby/.rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
rubyインストール
まずはローカルリポジトリから必要なパッケージをインストール
yum install readline-devel openssl-devel zlib-devel
yum install libffi-devel gdbm-devel
yum install tk tk-devel tcl tcl-devel
ruby-build使っている人は必要無いが、make install で導入する場合はyamlを手作業で
バージョン毎にインストールする必要がある。
tar zxf yaml-0.1.4.tar.gz
cd yaml-0.1.4
./configure --prefix=/opt/ruby/.rbenv/versions/1.9.3-p374
make
paco -D make install
脇道にそれるが、yamlをインストールしていなかった場合、ruby実行時に以下のメッセージが出る。
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
ruby本体をインストールする。
tar xfz ruby-1.9.3-p374.tar.gz
cd ruby-1.9.3-p374
ここでインストール先をrbenvに沿って変更しておくこと。
./configure --prefix=/opt/ruby/.rbenv/versions/1.9.3-p327 --enable-debug-env
make
# (※ここでFailedの行が出力されないようにすること。)
# (出力例:Failed to configure -test-/win32/dln. It will not be installed.)
# (出力例:Failed to configure dl/win32. It will not be installed.)
# (出力例:Failed to configure curses. It will not be installed.)
# (出力例:Failed to configure dbm. It will not be installed.)
# (出力例:Failed to configure fiddle. It will not be installed.)
# (出力例:Failed to configure gdbm. It will not be installed.)
# (出力例:Failed to configure openssl. It will not be installed.)
# (出力例:Failed to configure readline. It will not be installed.)
# (出力例:Failed to configure tk. It will not be installed.)
# (出力例:Failed to configure tk/tkutil. It will not be installed.)
# (出力例:Failed to configure win32ole. It will not be installed.)
# (出力例:Failed to configure zlib. It will not be installed.)
# (出力された場合、パッケージが不足している可能性があるため検討すること)
# (以下のエラーが出力された場合は、ソースのドキュメント生成に失敗しているっぽく、doxygenをインストールすると解消するはず。)
# Generating RDoc documentation
# Parsing sources...
# lib/irb/inspector.rb:36:36: Couldn't find INSPECTORS. Assuming it's a module
# lib/mkmf.rb:1117:29: Couldn't find STRING_OR_FAILED_FORMAT. Assuming it's a module
# Enclosing class/module 'mDigest' for class MD5 not known
# Enclosing class/module 'mDigest' for class RMD160 not known
# Enclosing class/module 'mDigest' for class SHA1 not known
# Enclosing class/module "cASN1ObjectId" for alias short_name sn not known
# Enclosing class/module "cASN1ObjectId" for alias long_name ln not known
# (RDoc生成時のエラーのよう。"RDoc"・・・Ruby で書かれたソースコードから ドキュメントを自動生成する)
paco -D make install
インストールを完了したらrbenvを使えるようにする。
source /etc/profile.d/rbenv.sh
有効化したら必ず以下も実施する。この操作で初めてコマンドが使えるようになる。
rbenv rehash
rbenv global 1.9.3-p374
あとはインストールできたか確認する。
ruby -v
gem -v
gem list