LoginSignup
17
15

More than 5 years have passed since last update.

CentOS7にRails環境を整えるまで①−2(rbenv編)

Last updated at Posted at 2014-12-30

前回の記事では直接rubyの最新版をインストールしてしまいました。
大きく問題がある訳ではないのですが、
今後のバージョン管理が煩雑になるのでrbenvを導入します。

1.rbenvを取得

rbenvとruby-buildの取得

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

gitリポジトリからのクローン
[https://github.com/sstephenson/rbenv]
rbenvはRuby environmentの略みたいですね。linuxのenvコマンドと同じ意味か。

2.rbenvのPATHを設定

bashシェルの設定

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL

やってることは、CentOSの~/.bash_profile、PATHを通してるってことです。
1行目はechoコマンドで表示した文字列'export PATH="$HOME/.rbenv/bin:$PATH"'を「~/.bash_profile」にリダイレクト(直接書き込み)する。

2行目はechoコマンドで表示した文字列'eval "$(rbenv init -)"'を「~/.bash_profile」にリダイレクト(直接書き込み)する。

3行目はシェルの再起動。

この3行で行われる事は、
bashシェル用の環境設定ファイルにrbenv用のPATHを記述して、
その環境設定ファイルの内容を反映した状態にするという事です。
bashシェルって何かって?今あなたがコマンド打ち込んでるものです。

ちゃんと書けているかはviを使ってみてみましょう。

# .bash_profile 

~ 省略

export PATH 
export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(rbenv init -)" 
~                          

ありましたね。OK問題ありません。
下のコマンドを実行すると正常にインストールしてるか確認出来ます。

$ rbenv
(結果)rbenv 0.4.0-129-g7e0e85b

ちなみにrbenvコマンドの正体ですが、
rbenv関数を動かしているみたいですね。[$type rbenv]でみれます。

$ type rbenv

rbenv () 
{ 
    local command;
    command="$1";
    if [ "$#" -gt 0 ]; then
        shift;
    fi;
    case "$command" in 
        rehash | shell)
            eval "`rbenv "sh-$command" "$@"`"
        ;;
        *)
            command rbenv "$command" "$@"
        ;;
    esac
}

3.rubyのインストール

rubyのインストール

インストール可能なrubyのバージョンをみてみましょう。

$ rbenv install -l

Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  (つづく)

rbenv installコマンドが使えるのは「ruby-build」を導入しているからです。
また、パラメータの「ーl」は「--list」でも代用可です。

僕はlinuxコマンドを覚える為に、「--list」を使っています。

$ rbenv install 2.2.0

Downloading ruby-2.2.0.tar.gz...

正常に・・・終わらず。あれ?

BUILD FAILED (CentOS Linux 7 using ruby-build 20141225-3-g1c0509a)って出てしまいました。

こういうときは、焦らずログを確認する。

$ cat /tmp/ruby-build.201412XXXXXXX.XXXXX.log

調べてみると、
./libffi-3.2.1/.libs/libffi.a: シンボルを読み込めませんでした: 不正な値です。
となっていました。

同じような事象を解決している方が居られたので参考にしました。

Ruby 2.2.0をrbenvとruby-buildでインストール
[http://qiita.com/MorimotoYasunori@github/items/fb81946fc088b18d6a3a]

つまり、libffiってパッケージがないってことなのか。なるほど。

$ sudo yum install libffi
パッケージ libffi-3.0.13-11.el7.x86_64 はインストール済みか最新バージョンです
何もしません

あれ。探してみよう。

$ sudo yum search libffi-dev
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
=========================== N/S matched: libffi-dev ============================
ghc-libffi-devel.x86_64 : Haskell libffi library development files
libffi-devel.i686 : Development files for libffi
libffi-devel.x86_64 : Development files for libffi

この中だと、libffi-devel.x86_64なのかな…

$ sudo yum install libffi-devel.x86_64
(インストール後)
$ rbenv install 2.2.0
...
Installed ruby-2.2.0 to /home/XXX/.rbenv/versions/2.2.0

あ、完了しました。

ただ、よくよく考えたらリンクが正しく設定されてないだけだったのかもしれない。
インストール済ってなってましたし。

$ rbenv versions
* system (set by /home/XXX/.rbenv/version)
  2.2.0

インストールしたrubyバージョンを使用するように設定

$ rbenv global 2.2.0
$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

とりあえず、rubyの設定は完了しました。

でも、なんだか腑に落ちないけど、これでいいのかな。

17
15
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
17
15