Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

【Ruby】HomebrewでrbenvをインストールしてRubyの最新版をインストール ついでにpyenvとplenvも入れる

こんばんは。

MacにはデフォルトでRubyが入っていますが、バージョンが古いです。
今回は、Rubyのバージョン管理ツールであるrbenvをHomebrewで入れ、rbenvからRubyの最新版を入れてバージョンを切り替えるようにします。
ついでに、同じようにPythonPerlのバージョン管理ツールであるpyenvとplenvも入れちゃいます。やり方はrbenvと一緒です。

ちなみにRubyには他にもrvmやgemがありますが、それとの違い(というか立ち位置?)はこちらのサイトが非常に参考になりますので、ご覧になってみてはどうでしょうか。

今回は手順を細かく示してくれているサイトがあったので、基本そちらのサイトの通りです。
私の記事では主に個人的なメモ用に書いていくので、やり方だけ知りたい方はこちらの記事にどうぞ。

なお、私の環境はOS X Mavericksとなっています。
また、事前にXcodeとHomebrewを入れといて下さい。色々ググるXcode Command Line Tools(CLT)をインストールするみたいな記述がありますが、最近はHomebrew入れると一緒にインストールされるはずです。

opnesslとreadline のインストール

まずはこの2つを入れます。rbenv入れるためにないといけないようです。
ただ、両方ともデフォルトで入っているので問題ないっちゃないのですが、デフォルトのは古かったり色々おかしいらしいのでHomebrewでインストールします。

ちなみにopensslは証明書とか発行するやつで、readlineはターミナル上で行頭移動とかヒストリ機能とかできるようになるやつです。(たぶん)

$ brew install openssl
$ brew install readline

これでインストールできますが、多分インストールしただけだとデフォルトのしか読み込まないので、brewで入れたものをシンボリックリンクさせます。

$ openssl version # バージョン確認
OpenSSL 0.9.8za 5 Jun 2014
$ which openssl  #場所を確認
/usr/bin/openssl

$ brew link openssl --force

$ openssl version
OpenSSL 1.0.1j 15 Oct 2014
$ which openssl
/usr/local/bin/openssl

上記のようになればOKです。readlinebrew link でやりましょう。 --force 付けないとWarning出てくるので注意です。
ここで一度ターミナルを再起動したほうが良いかもしれません。

ちなみに、自分の環境だとこの後に brew doctor やると、以下の様なWarningが出てきました。
これの消し方が分からないのですが、CLTとかXcodeアップデートしたら直ったりしないかな・・・(Yosemiteにしてないので)
一応消すだけなら unlink すれば消えるので、もしこれが消えなくて気になる人はlinkしないでデフォルトのままやったほうが良いかもです。

Warning: Some keg-only formula are linked into the Cellar.
Linking a keg-only formula, such as gettext, into the cellar with
`brew link <formula>` will cause other formulae to detect them during
the `./configure` step. This may cause problems when compiling those
other formulae.

Binaries provided by keg-only formulae may override system binaries
with other strange results.

You may wish to `brew unlink` these brews:

    openssl
    readline

rbenvのインストールとPATHの追加

次にrbenvをHomebrewからインストールします。

$ brew install rbenv ruby-build

インストールしたら .bash_profile などに以下を追加します。

eval "$(rbenv init -)"

その後ターミナルをまた再起動し、 .rbenv にPATHが通っているか確認します。

$ echo $PATH
/Users/****/.rbenv/shims

Rubyのインストール

いよいよRubyのインストールです。
まずはrbenvでインストール可能なバージョンを探し、それからインストールします。
自分の場合は2.1.5が最新版でしたのでそれをインストールします。

$ rbenv install -l
$ RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 2.1.5

インストールするときは、rbenv install より前のオプションを必ず付けて下さい。
これつけないと文字化けとか起きるらしいです。(参考: rbenv 環境の Ruby の irb で日本語が文字化けするので直した | EasyRamble

Rubyの切り替え

次にインストールしたRubyに切り替えます。

$ ruby -v
ruby 2.0.0p247~

$ rbenv versions
* system(set by /Users/***/.rbenv/version)
2.1.5

$ rbenv global 2.1.5
$ rbenv rehash

$ ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin13.0]

$ rbenv versions
system
* 2.1.5(set by /Users/***/.rbenv/version)

rehashを忘れないで下さい。

これでRuby最新版のインストールは終了しました。

Bundlerのインストールとgemの自動インストール可

常に最新版を利用するgem(Bundlerなど)は、下記のコマンドでインストールしたほうが便利みたいです。

$ rbenv exec gem install bundler
$ rbenv rehash

また、rbenv install する度に gem install し直さなければならないので、brewで rbenv-default-gems をインストールして自動化します。

$ brew install rbenv-default-gems

インストールしたら以下の設定ファイルを用意します。

~/.rbenv/default-gems

bundler
rbenv-rehash
pry
haml
sass
compass

これでruby install した時に default-gems に書いたgemも自動でインストールしてくれるようになります。
reashも書いてるので、次回以降rehashもいらなくなります。

Python, Perlのインストール

ついでにPythonPerlもインストールしちゃいます。
ただ、rbenvの時とまったく同じです。
brewでpyenv, plenv, perl-build をインストールし、.bash_profile に init を書き、それぞれのenvでバージョン確認してインストールしてrehashして終わりです。

$ brew install pyenv plenv perl-build

.bash_profile

eval "$(pyenv init -)"
eval "$(plenv init -)"

ここでターミナルを再起してPATHを確認します。

次に本体のインストールです。

$ pyenv install -l
$ pyenv install 3.4.2

$ pyenv global 3.4.2
$ pyenv rehash

$ plenv install -l
$ plenv install 5.21.6

$ plenv global 5.21.6
$ plenv rehash

$ python --version
Python 3.4.2
$ pyenv versions
  system
* 3.4.2 (set by /Users/furudate/.pyenv/version)

$ perl -v
This is perl 5, version 21, subversion 6 (v5.21.6) built for darwin-2level
$ plenv versions
  system
* 5.21.6 (set by /Users/furudate/.plenv/version)

以上で両者のインストールは終わりです。簡単ですね。

Python関係のWarningの消し方

さて、ここまでやって brew doctor やると、Python関係のWarningが2つ出ます。
これを消しましょう。ただ、1個は消せないようです。

1つ目のWarning

Warning: python is symlinked to python3
This will confuse build scripts and in general lead to subtle breakage.

これはHomebrewではpythonコマンドがPython 2であるとされているために発生するWarningです。
これを回避するために、Python 2系の最新版をインストールして pythonコマンドが常に Python 2 を指すようにしておきます。

$ pyenv install 2.7.8

$ pyenv global 2.7.8 3.4.2
$ pyenv rehash
$ pyenv versions
  system
* 2.7.8 (set by /Users/furudate/.pyenv/version)
* 3.4.2 (set by /Users/furudate/.pyenv/version)

以上のことをやると、Warningが消えるはずです。

2つ目のWarning

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:

これは結論から言えば消せないようです。
configファイルがいっぱい見つかったけど大丈夫?みたいなことを聞いているようですが、pyenvで管理できるので問題ないようです。
Warningが表示されるのは諦めるしかないようです。残念。


さて、これでRubyPythonPerlの最新版を入れることが出来ました。

それでは。

参考にさせていただいたサイト

OS X Mavericks (10.9) に Homebrew + rbenv で Ruby をインストールする | deadwood

Rubyのrvmやgemってなんだ?て調べたらrbenvが出てきたの巻 - むかぁ~ どっと こむ

rbenv 環境の Ruby の irb で日本語が文字化けするので直した | EasyRamble

MacOSX - Mac OSX で開発環境を構築するための環境構築 (Homebrew, Git, SVN, Ruby, Perl, Python) - Qiita