I updated to macOS 12.6 on 3 of my Macs: 2 of them Intel, and one of them Apple Silicon (M1 MacBook Air, 2020).
I am able to install Ruby 2.7.6 and 3.1.2 with ruby-install on the Intel machines, but I can't anymore on the M1 Air. It fails with ld: symbol(s) not found for architecture arm64. Here is an excerpt from the end:
linking shared-object -test-/arith_seq/extract.bundle
Undefined symbols for architecture arm64:
"_rb_arithmetic_sequence_extract", referenced from:
_arith_seq_s_extract in extract.o
"_rb_ary_new_capa", referenced from:
_arith_seq_s_extract in extract.o
"_rb_ary_store", referenced from:
_arith_seq_s_extract in extract.o
"_rb_define_singleton_method", referenced from:
_Init_extract in extract.o
"_rb_path2class", referenced from:
_Init_extract in extract.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [../../../../.ext/arm64-darwin21/-test-/arith_seq/extract.bundle] Error 1
make[1]: *** [ext/-test-/arith_seq/extract/all] Error 2
make: *** [build-ext] Error 2
!!! Compiling ruby 3.1.2 failed!
I've also attached the full log.
So then I tried compiling Ruby manually, and it failed after the first make with the same error:
brew install wget
cd ~/src
wget https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.2.tar.xz
tar -xzvf ruby-3.1.2.tar.xz
cd ruby-3.1.2
./configure --with-opt-dir="$(brew --prefix openssl@1.1):$(brew --prefix readline):$(brew --prefix libyaml):$(brew --prefix gdbm)"
make
I even reset my entire dev setup (uninstalled Homebrew, removed the command line tools, removed all Ruby-related folders, etc.), and reinstalled everything from scratch.
So then I tried rbenv, and it worked just fine. Any ideas what rbenv/ruby-build might be doing differently?
Could it be something with the ./configure options?
So then I tried installing 2.6.10 on my Intel machines, and it failed on my iMac with ruby-install, but it worked with rbenv. However, it failed with rbenv on Apple Silicon. To make things more confusing, it worked on my Intel MacBook Air with both ruby-install and rbenv! The difference is that the iMac used to be on macOS 12.5.1, and the Intel Air was upgraded to Monterey from Big Sur.
I know this used to work before, so something must have changed with macOS 12.6.
Interestingly, 2.6.9 works on the Intel iMac (the one where 2.6.10 failed) with ruby-install.
Any ideas?
ruby-install-failure.txt
I updated to macOS 12.6 on 3 of my Macs: 2 of them Intel, and one of them Apple Silicon (M1 MacBook Air, 2020).
I am able to install Ruby 2.7.6 and 3.1.2 with
ruby-installon the Intel machines, but I can't anymore on the M1 Air. It fails withld: symbol(s) not found for architecture arm64. Here is an excerpt from the end:I've also attached the full log.
So then I tried compiling Ruby manually, and it failed after the first
makewith the same error:I even reset my entire dev setup (uninstalled Homebrew, removed the command line tools, removed all Ruby-related folders, etc.), and reinstalled everything from scratch.
So then I tried rbenv, and it worked just fine. Any ideas what rbenv/ruby-build might be doing differently?
Could it be something with the
./configureoptions?So then I tried installing 2.6.10 on my Intel machines, and it failed on my iMac with
ruby-install, but it worked withrbenv. However, it failed withrbenvon Apple Silicon. To make things more confusing, it worked on my Intel MacBook Air with bothruby-installandrbenv! The difference is that the iMac used to be on macOS 12.5.1, and the Intel Air was upgraded to Monterey from Big Sur.I know this used to work before, so something must have changed with macOS 12.6.
Interestingly, 2.6.9 works on the Intel iMac (the one where 2.6.10 failed) with
ruby-install.Any ideas?
ruby-install-failure.txt