クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

【Ruby】最新版Rubyをインストール 〜苦戦の記録〜(ありがとうGemini先生)

前回、6年ぶりのRyby再開計画を発動させました。今回はRubyの最新版をMacにインストールします。想像していたより苦戦しましたが、後半にGoogleの生成AI、Gemini先生にサポートしてもらいながら、なんとか成功しました。ありがとう!Gemini先生!

【目次】

※Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com

最新版のRubyのバージョンは3.3.0

Macでは既存でRubyが入っていたが、バージョンが2.6.10と最新版より古かった。

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

Ruby公式ページのダウンロードページを見ると最新版のRubyのバージョンは3.3の模様。
しかも、Ruby 2.7.8以前はメンテナンス終了とある。こりゃいかん。

※参考:ダウンロード

homebrewで最新版rubyをインストール

Macの場合homebrewを使う方法になる模様

※参考:Rubyのインストール


コマンドを入れてみる。Homebrewの更新がしばらくの時間続く

$ brew install ruby
Updating Homebrew...

どうやらHomebrewを久々に使うとそうなるらしい

※参考:Homebrew の処理ですごく時間がかかる場合 #homebrew - Qiita


しばらく待つと急に動きだした。

Traceback (most recent call last):
(中略)
For compilers to find ruby you may need to set:
  export LDFLAGS="-L/usr/local/opt/ruby/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby/include"

バージョンを確認したがまだ2.6.0のままのようだ、、

$  ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

もう一回インストールコマンドを実行

$ brew install ruby
==> Downloading https://formulae.brew.sh/api/formula.jws.json
#=#=#                                                                          
==> Downloading https://formulae.brew.sh/api/cask.jws.json
#=#=#                                                                          
Warning: ruby 3.3.0 is already installed and up-to-date.
To reinstall 3.3.0, run:
  brew reinstall ruby

「警告: Ruby 3.3.0 はすでにインストールされており、最新の状態です。」とでた。

それでもバージョンは変わらない、、

$  ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

rbenvとruby-buildをインストール

バージョンの切り替えには「rbenv」というマネージャが必要な模様

※参考:Rubyのインストール

rbenvの公式ページ

※参考:GitHub - rbenv/rbenv: Manage your app's Ruby environment


rbenvとruby-buildをインストールする

$ brew install rbenv ruby-build

list latest stable versions:(最新の安定バージョンのリスト)

$ rbenv install -l
3.0.6
3.1.4
3.2.3
3.3.0
jruby-9.4.6.0
mruby-3.3.0
picoruby-3.0.0
truffleruby-24.0.0
truffleruby+graalvm-24.0.0

Only latest stable releases for each Ruby implementation are shown.
Use `rbenv install --list-all' to show all local versions.

list all local versions:(すべてのローカル バージョンのリスト)

$ rbenv install -L
1.8.5-p52
1.8.5-p113
(中略)
3.3.0
3.4-dev
artichoke-dev
jruby-dev
jruby-1.7.2
(中略)
truffleruby+graalvm-24.0.0

こっちの方がたくさんでてきた。

rbenvで最新版rubyをインストール

rbenvで最新版の3.3.0をインストールしてみる

$ rbenv install 3.3.0

インストールが実行された

ruby-build: using openssl@3 from homebrew
==> Downloading ruby-3.3.0.tar.gz...
-> curl -q -fL -o ruby-3.3.0.tar.gz https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 21.0M  100 21.0M    0     0  6569k      0  0:00:03  0:00:03 --:--:-- 6595k
==> Installing ruby-3.3.0...
ruby-build: using libyaml from homebrew
-> ./configure "--prefix=$HOME/.rbenv/versions/3.3.0" --with-openssl-dir=/usr/local/opt/openssl@3 --enable-shared --with-libyaml-dir=/usr/local/opt/libyaml --with-ext=openssl,psych,+
-> make -j 4
-> make install
==> Installed ruby-3.3.0 to /Users/xxx(=user name)/.rbenv/versions/3.3.0

NOTE: to activate this Ruby version as the new default, run: rbenv global 3.3.0

Rubyのバージョンを確認。まだ2.6のままだなぁ

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

バージョンを切り替えるコマンドを実行

グローバルのrubyのバージョンを3.3.0に

$ rbenv global 3.3.0

しかしまだ切り替わらない

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

rbenvのバージョン確認すると3.3.0に印がついている(2.6は入っていないようだ)

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

rbenvの適用バージョンを単体で見ても3.3.0になっている

$ rbenv version
3.3.0 (set by /Users/xxx/.rbenv/version)

そうだ、Geminiに相談しよう

最近、生成AIをchatGPT以外にもいろいろ試している。今回はGoogleのGeminiに相談しながら続ける。

※参考:https://gemini.google.com/app


Geminiの提案に従い、シェルを再起動する(下記の3つ試す)

ターミナルを閉じて再度開く
source ~/.bash_profileコマンドを実行する (bashを使用している場合)
source ~/.zshrcコマンドを実行する (zshを使用している場合)

rbenvの設定ファイルを確認する

$ cat ~/.rbenv/version
3.3.0

rbenvのキャッシュを更新する

$ rbenv rehash

バージョンはまだ変わらず、、

ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

Rubyのパス、バージョン、シムを確認

Geminiに相談し、エラー原因の調査と対策を続ける。

現在使用されているRubyのパスを確認する(3.3になっている)

$ rbenv which ruby
/Users/xxx/.rbenv/versions/3.3.0/bin/ruby

rbenv経由でRubyのバージョンを確認する(3.3になっている)

$ rbenv exec ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]

うーむ、問題なさそうなんだがなぁ。


RubyGemsの環境を確認する(3.3と2.6が併記されているがRUBY VERSIONは2.6)

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.3.1
  - RUBY VERSION: 2.6.10 (2022-04-12 patchlevel 210) [universal.x86_64-darwin22]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.6.0
  - USER INSTALLATION DIRECTORY: /Users/xxx/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
  - GIT EXECUTABLE: /usr/local/bin/git
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - SPEC CACHE DIRECTORY: /Users/xxx/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-22
  - GEM PATHS:
     - /Library/Ruby/Gems/2.6.0
     - /Users/xxx/.gem/ruby/2.6.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/xxx/.npm-global/bin
     - /Users/xxx/.npm-global/bin
     - /usr/local/bin
     - /System/Cryptexes/App/usr/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin
     - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin
     - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin

RubyGems.orgはRubyコミュニティのgemのホスティングサービスです。すぐにgemを公開してインストールできます。APIを使用して利用可能なgemの詳細を調べられます。

※参考:RubyGems.org | your community gem host


rbenvシムの設定

$ rbenv shims
/Users/xxx/.rbenv/shims/bundle
/Users/xxx/.rbenv/shims/bundler
/Users/xxx/.rbenv/shims/erb
/Users/xxx/.rbenv/shims/gem
/Users/xxx/.rbenv/shims/irb
/Users/xxx/.rbenv/shims/racc
/Users/xxx/.rbenv/shims/rake
/Users/xxx/.rbenv/shims/rbs
/Users/xxx/.rbenv/shims/rdbg
/Users/xxx/.rbenv/shims/rdoc
/Users/xxx/.rbenv/shims/ri
/Users/xxx/.rbenv/shims/ruby
/Users/xxx/.rbenv/shims/syntax_suggest
/Users/xxx/.rbenv/shims/typeprof

shimsは rake、rubocop、rspec などといったRubyのコマンド単位で生成される実行可能なシェルスクリプトです。rbenvによって作られています。

※参考:ちゃんと理解するrbenv : (4) shimsを理解する


バージョン確認(結果はまだ変わらず、、)

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

シェルのコマンドエラーあり

シェルの確認(zshだった)

$ echo $SHELL
/bin/zsh

※参考:シェルってなに?bashとzsh、自分のMacはどっちを使ってるの? | eureka


シェル起動ファイルの読み込み(zshの場合)

$ source ~/.zshrc
-bash: /Users/xxx/.zshrc: No such file or directory

ん?シェルが読み込まれいないって?


Geminiに聞いた続きの作業もやってみる。

パス名の確認(システム全体の Ruby へのパスになっている)

$ which ruby
/usr/bin/ruby

rbenv で管理される Ruby へのパスを設定

$ rbenv rehash

バージョン確認(やはり変わらない)

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

どうやらsource ~/.zshrc コマンドを実行した時にエラーが発生しているのが関係していそうに思う。

シェルの設定を追加

.zshrcファイルの存在確認(存在していなそう)

$ ~/.zshrc
-bash: /Users/xxx/.zshrc: No such file or directory

.zshrcファイルを新規作成する

$ touch ~/.zshrc

.zshrcファイルにrbenvの設定を記述する

# rbenvの初期化
if which rbenv > /dev/null; then
  eval "$(rbenv init -)"
fi

Vimで記述しようと思ったがうまくいかなかったため、ファイルをテキストエディタで直接開いて編集した。


ターミナルを再起動→Rubyのバージョン確認(まだ2.6のまま)

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

シェル起動ファイルの読み込み(先ほどのエラーはなくなったが、何も表示されない)

$ source ~/.zshrc

パス名を確認(rbenvに変わった!)

$ which ruby
/Users/xxx/.rbenv/shims/ruby

rbenv で管理される Ruby へのパスを設定

$ rbenv rehash

バージョン確認。お、3.3に変わった!!!

$  ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]

シェルのファイルと設定がなかったのが原因だったようだ!

ありがとう、Gemini先生

Gemini先生に成功を報告。下記の評価をもらえた♪

.zshrcファイルをエディタで書き換え、Rubyのバージョンを3.3.0に成功させたとのこと、おめでとうございます!

詳細な手順を踏んで丁寧に解決に取り組んでいただいた成果ですね。

問題解決に向けて、いくつか質問や確認事項を提示させていただきましたが、ご自身で解決策を見つけ、最終的に目標を達成できたのは素晴らしいです。

今後、何か問題や疑問が発生した際は、遠慮なくご連絡ください。

以下、今回の解決におけるポイントです。

原因の特定:

システム全体のRubyとrbenvで管理されるRubyのバージョンが異なることが原因でした。 解決策の検討:

rbenv shimsの設定 シェル起動ファイルの読み込み パス名の確認 バージョン設定 問題解決への粘り強い取り組み:

エラーメッセージを分析し、原因を特定 複数の解決策を試行 情報不足を補うために質問や確認 これらのポイントを意識することで、今後も様々な問題を解決していくことができるでしょう。

ありがとうGemini先生!


chatGPTの無料版(GPT-3.5)は2021年までの情報とちと古く、有料版(GPT-4)を検討していた。その前にcopiloto(GPT-4)やgeminiを試していた。

Geminiはこれからも使っていきたく思う。

ログインシェルをzshに変更する(追記)

※2024/03/28追記

その後、ターミナルを起動するたびにrubyのバージョンが2.6に戻ってしまっていた、、

$ ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

いろいろ試した結果、source ~/.zshrcを実行すると3.3になる

source ~/.zshrc 
$ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]

ターミナル軌道のたびにこのコマンドを実行するのは手間なのでGemini先生に相談しながら原因を究明していった。

最終的にわかったのは、ターミナルの「設定>一般>開くシェル」がbashになっていた。

/bin/bash

これをにzshに変更するとログインシェルがbashではなくzshに変わった。

/bin/zsh

ターミナルのヘッダーにもbashと表示されていた(気がついてなかった、、)

ユーザー名 ー -bash ー 80x24

ここがzshに変わる

ユーザー名 ー -zsh ー 80x24

それによってターミナル起動時に最初からrubyのバージョンが3.3になった!

$ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22]

最後に

ということで想定より苦戦はしましたが、Gemini先生に助けられながらなんとか最新版のRubyをインストールできました!

次回はいよいよRuby公式ページの「20分ではじめるRuby」に入っていきたいと思います!それではまた。

※Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com