Ruby 3.1 を install した

Ruby で何かやろうと思ったけどせっかくなので新しい方をinstallしてみた

色々引っかかったのでもうこれ記事でいいなって思ったので書いた

1年ぶりくらいの brew upgrade rbenv

  • 結構時間かかった
  • 色々アップデートされてたけどウインドウ閉じちゃって見返せないので割愛

rbenv install --list 打ってみる

> rbenv install --list
2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.9.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.3.0
truffleruby+graalvm-22.3.0

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

3.1系の最新は3.1.2なので落としてみる

rbenv install 3.1.2

Installing ruby-3.1.2...
ruby-build: using readline from homebrew
ruby-build: using gmp from homebrew

BUILD FAILED (macOS 11.6.8 using ruby-build 20221101)

Last 10 log lines:
compiling dln.c
compiling localeinit.c
In file included from yjit.c:158:
./yjit_iface.c:17:10: fatal error: 'capstone/capstone.h' file not found
#include <capstone/capstone.h>
         ^~~~~~~~~~~~~~~~~~~~~
compiling array.c
1 error generated.
make: *** [Makefile:434: yjit.o] Error 1
make: *** Waiting for unfinished jobs....

早速のError

まぁ久しぶりだしね・・・

./yjit_iface.c:17:10: fatal error: 'capstone/capstone.h' file not found

エラーの原因はcapstoneとやらが無いからのようで・・・

yjit_iface.cこれが噂のYJITか・・・!

capstoneはディスアセンブラフレームワークらしい

YJITはこれを使ってるってことなのか

www.capstone-engine.org

brew install capstoneを打ってみるが既に入っている

ググってみると以下を発見

github.com

あ、なるほど、CFLAGSとLDFLAGS渡してあげればいいのか

/usr/local/Cellar以下に入っていたので

$ export CFLAGS="-I/usr/local/Cellar/capstone/4.0.2/include"
$ export LDFLAGS="-L/usr/local/Cellar/capstone/4.0.2/lib"

これで通ってそう...と思ったらまた新たなエラーを踏む

/private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:240:in `mkdir': Permission denied @ dir_s_mkdir - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/Users (Errno::EACCES)
    from /private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:240:in `fu_mkdir'
    from /private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:221:in `block (2 levels) in mkdir_p'
    from /private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:219:in `reverse_each'
    from /private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:219:in `block in mkdir_p'
    from /private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:211:in `each'
    from /private/var/folders/6j/q4gjr83j1kn6y1gszxjwdzdh0000gn/T/ruby-build.20221115235314.327.LDBVvA/ruby-3.1.2/lib/fileutils.rb:211:in `mkdir_p'
    from ./tool/rbinstall.rb:218:in `makedirs'
    from ./tool/rbinstall.rb:331:in `prepare'
    from ./tool/rbinstall.rb:432:in `block in <main>'
    from ./tool/rbinstall.rb:1127:in `block in <main>'
    from ./tool/rbinstall.rb:1124:in `each'
    from ./tool/rbinstall.rb:1124:in `<main>'
make: *** [uncommon.mk:383: do-install-all] Error 1

Permission denied !?何故?全然わからん

ググってみると同じような状態の人が見つかる

github.com

@BytesGuy Do you have this line export SDKROOT=$(xcrun -sdk macosx --show-sdk-path) in .barhrc or .zshrc?

For me, after i comment this line out, it works fine.

ドンピシャでこれだった

.zshrcexport SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"コメントアウトすることで解決

これって何で入れたやつだっけ?

これからは.zshrcに何か書き足すときはコメント入れることにしよう・・・

無事インストール完了