MacBook Pro 2016にHomebrew、rbenvを導入してシステムと別バージョンのRubyを使用する

FreeBSD に由来する MacOS Sierra には初めからプログラム言語 Ruby が備わっています。 ただ少しばかりバージョンが古いものなので新しいバージョンに置き換えたいものですが 何もごっそり丸さら置き換えなくとも新しい別バージョンを導入して並立出来得るものならばさせたい処です。 Macには固より此の様な場合に rbenv なるRubyのバージョン管理システムを利用するという確立された方法が用意されています。 此のrbenvを導入するには更にまた Homebrew なるMacのパッケージ管理システムが用意されています。 Rubyのバージョンを幾つか並立させる為には此れ等を逆から導入していく段取りとなります。

従って先ず手元の MacBook Pro 2016 にHomebrewを導入します。 インストールにはネットに繋がった状態でMacのターミナルを起動し Homebrewの公式サイト に用意される一行 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" をコピペして実行するだけで宜しいとされています。 手元の環境で以下の如く入力、実行しました。

Last login: Sat Mar 4 11:45:42 on ttys000
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然る後要求されたMacBook Pro 2016のパスワードを入力すると以下の如く出力されました。

==> Installation successful!

==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
http://docs.brew.sh/Analytics.html

==> Next steps:
- Run `brew help` to get started
- Further documentation:
http://docs.brew.sh
Run `brew doctor` before you install anything
Run `brew help` to get started

インストール成功の表示の後に上に赤字で記した様に出力にされるインストール診断とヘルプ表示を実行し、 バージョンを確認してみればどうやら首尾良く運んだのが分かります。

$ brew doctor
Your system is ready to brew.

$ brew help
Example usage:
…(ry

$ brew -v
Homebrew 1.1.10
Homebrew/homebrew-core (git revision 8f25; last commit 2017-03-04)

Homebrewの準備が整えば次はrbenvの導入です。 以下ではRubyのバージョンを確認した後、 Homebrewを用いてrbenvをインストールしています。

スポンサーリンク
Last login: Sun Mar 5 10:59:38 on console
$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

$ brew install rbenv ruby-build
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
librealsense shellshare
==> Updated Formulae
…(ry
################################################## 100.0%
==> Pouring rbenv-1.1.0.sierra.bottle.tar.gz
🍺 /usr/local/Cellar/rbenv/1.1.0: 36 files, 63.2K

どうやら上手く醸造できたような絵文字が表示されます。 rbenvがインストールされているか否かの確認を兼ねて恐らくは1.1.0であろうバージョンを確認し、 利用可能なrubyのリストの確認をします。

$ rbenv --version
rbenv 1.1.0

$ rbenv install -l
Available versions:
  1.8.5-p113
  …(ry
  1.8.7
  1.9.0-0
  …(ry
  1.9.3-p551
  2.0.0-dev
  2.0.0-preview1
  2.0.0-preview2
  …(ry
  2.1.0-dev
  2.1.0-preview1
  2.1.0-preview2
  2.1.0-rc1
  2.1.0
  …(ry
  2.4.0-rc1
  2.4.0
  2.5.0-dev
  jruby-1.5.6
  …(ry
  jruby-9.1.7.0
  maglev-1.0.0
  maglev-1.1.0-dev
  maglev-2.0.0-dev
  mruby-dev
  mruby-1.2.0
  rbx-2.2.2
  …(ry
  ree-1.8.7-2012.02
  topaz-dev

ずらずらと使用可能なバージョンが列挙されますが Ruby公式のダウンロードサイト を見ると現時点の最新の安定バージョンは 2.4.0 とされていますので此れを選択しrbenvから 今回の本来の目的の別バージョンRubyとしてインストールします。

$ rbenv install 2.4.0
ruby-build: use openssl from homebrew
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 /Users/username/.rbenv/versions/2.4.0

$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

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

別バージョンである2.4.0をインストールした後 Rubyのバージョンを確認しますが 未だ 2.0.0p648 となっており切り替わってはいません。 此れを切り替えるにはrbenvからGlobalなRubyを変更します。

$ rbenv global 2.4.0

$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

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

$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

$ rbenv rehash
$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

$ rbenv global 2.4.0
$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

しかし此処で上で示すようにRubyのバージョンが新しくインストールしたものに 切り替わってくれない問題が発生してしまいました。 rehash など試してみても変化は見られません。

しかし此の問題の原因は結論から言えば .bash_profileが正常に読み込まれていない からでした。 実は本記事の一つ前に配信した記事 MacBook Pro 2016のターミナル.appで履歴を保存する は此の問題のちょうど此の時点で実践したもので ターミナル.appの履歴を保存するためとは謳っていますが 半分は此の.bash_profileを正常に機能させ rbenvでRubyのバージョンを切り替えさせるためのものとも言えます。 参考にした情報としては以下のQiitaに2015年12月5日に配信せられた記事が挙げられます。 幾つか同症状に於ける原因が挙げられていますので同じ問題に悩む向きに 孰れかに問題解決を齎すかも知れません。 手元の環境では.bash_profileの中身自体を反映させたとされる部分がヒントになったものです。

rbenvでバージョンがうまく切り替わらなかった時にやったこと    

MacBook AirでもRubyバージョンのrbenvに依る切り替え機能は導入しており なればちょうど其の.bash_profileを参考にすれば良いのではないかと考え MacBook Airの.bash_profileを取得した記述か以下です。

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

上記を 一つ前の記事 で生成した.bash_profileファイルに追記すれば良い筈だと言う目論見です。 PCを再び MacBook Pro に切り替えてターミナルから以下の操作をしました。

Last login: Tue Mar 7 17:02:28 on console
$ cat .bash_profile
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

$ cp .bash_profile .bash_profile.bak.170307

$ vi .bash_profile
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi
:i
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
:wq

$ cat .bash_profile
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"

先ず.bash_profileの現状の内容を確認し、 念のためバックアップを取り、 viで編集して上記赤字で示した部分が.bash_profileの最終的な記述となります。 処で斯うして編集した.bash_profileをシステムに反映するにはもう一つ 以下に記したsourceコマンドを実行する手順が必要となります。 然る後にrubyのバージョン確認します。

$ source ~/.bash_profile

$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

どうやら目論見は達成されたようです。 最後に念の為Qiitaの2015年6月4日から2016年9月29日に掛けての記事 rbenv で ruby の環境を整える など参考に指定したバージョンのRubyにパスが通っているか確認してみれば旨い塩梅にrbenv下にパスが通っていました。

Last login: Tue Mar 7 18:10:17 on ttys000
$ which ruby
/Users/username/.rbenv/shims/ruby
$ which gem
/Users/username/.rbenv/shims/gem

1件のコメント

コメントは受け付けていません。