LoginSignup
25
26

More than 5 years have passed since last update.

CentOS 6.3 にrbenv + ruby をインストール

Last updated at Posted at 2013-02-01

参考サイト: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ユーザで実施。)

rubyアカウントの作成
useradd -r -g root -d /opt/ruby -s /sbin/nologin ruby

rbenvインストール

rbenv-master.zip を/opt/rubyに配置する。
その後、gitの展開

zipの解凍から配置まで。
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を手作業で
バージョン毎にインストールする必要がある。

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本体をインストールする。

ruby本体の解凍
tar xfz ruby-1.9.3-p374.tar.gz
cd ruby-1.9.3-p374

ここでインストール先をrbenvに沿って変更しておくこと。

ruby本体のコンパイル設定
./configure --prefix=/opt/ruby/.rbenv/versions/1.9.3-p327 --enable-debug-env
ruby本体のコンパイル
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 で書かれたソースコードから ドキュメントを自動生成する)
ruby本体のインストール
paco -D make install

インストールを完了したらrbenvを使えるようにする。

rbenv有効化
source /etc/profile.d/rbenv.sh

有効化したら必ず以下も実施する。この操作で初めてコマンドが使えるようになる。

rbenvお約束
rbenv rehash
rbenv global 1.9.3-p374

あとはインストールできたか確認する。

起動確認
ruby -v
gem -v
gem list
25
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
26