Фікс проблеми встановлення Ruby 3.4.3 (і не тільки) через RVM на macOS (Apple Silicon)

Обкладинка допису: Фікс проблеми встановлення Ruby 3.4.3 (і не тільки) через RVM на macOS (Apple Silicon)
ЗмістНатисність на посилання, щоб перейти до потрібного місця
Під час встановлення Ruby 3.4.3 через RVM на macOS (ARM / Apple Silicon) можна зіткнутися з помилкою:
rvm install "ruby-3.4.3"
ruby-3.4.3 - #removing src/ruby-3.4.3 - please wait
Searching for binary rubies, this might take some time.
No binary rubies available for: osx/26.2/arm64/ruby-3.4.3.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for osx.
Installing requirements for osx.
Updating system - please wait
Installing required packages: pkg-config - please wait
Certificates bundle '/opt/homebrew/etc/[email protected]/cert.pem' is already up to date.
Requirements installation successful.
Installing Ruby from source to: /Users/username/.rvm/rubies/ruby-3.4.3, this may take a while depending on your cpu(s)...
ruby-3.4.3 - #downloading ruby-3.4.3, this may take a while depending on your connection...
ruby-3.4.3 - #extracting ruby-3.4.3 to /Users/username/.rvm/src/ruby-3.4.3 - please wait
ruby-3.4.3 - #configuring - please wait
ruby-3.4.3 - #post-configuration - please wait
ruby-3.4.3 - #compiling - please wait
Error running '__rvm_make -j10',
please read /Users/username/.rvm/log/1767089315_ruby-3.4.3/make.log
There has been an error while running make. Halting the installation.
Логи з make будуть виглядати так:
+__rvm_make:0> make -j10
file2lastrev.rb: does not seem to be under a vcs: .
        BASERUBY = /Users/username/.rvm/rubies/ruby-3.4.4/bin/ruby --disable=gems
        CC = gcc
        LD = ld
        LDSHARED = gcc -dynamiclib
        CFLAGS = -O3 -I/opt/homebrew/opt/libyaml/include -I/opt/homebrew/opt/libksba/include -I/opt/homebrew/opt/readli$
        XCFLAGS = -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include$
        CPPFLAGS = -I/opt/homebrew/opt/node@22/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D$
        DLDFLAGS = -L/opt/homebrew/opt/libyaml/lib -L/opt/homebrew/opt/libksba/lib -L/opt/homebrew/opt/readline/lib -L/$
        SOLIBS = -ldl -lobjc -lpthread
        LANG = C.UTF-8
        LC_ALL =
        LC_CTYPE = UTF-8
        MFLAGS = - --jobserver-fds=3,4 -j
        RUSTC = no
        YJIT_RUSTC_ARGS = --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C lto=thin -C opt-level=3 -C over$
Apple clang version 17.0.0 (clang-1700.6.3.2)
Target: arm64-apple-darwin25.2.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
compiling ./main.c
compiling dmydln.c
compiling miniinit.c
translating probes probes.d
RVM не знаходить готового бінарного білду для цієї версії ОС і намагається зібрати Ruby з source, але компіляція падає.

Причина

Ruby 3.4.x вимагає OpenSSL 3, але за замовчуванням RVM:
  • або підтягує OpenSSL 1.1
  • або не передає шлях до OpenSSL взагалі
Через це make завершується з помилкою.

Рішення

Потрібно явно вказати шлях до OpenSSL 3, встановленого через Homebrew.
Переконайтесь, що OpenSSL 3 встановлений:
brew install openssl@3
Встановіть Ruby з явним параметром:
rvm install ruby-3.4.3 --with-openssl-dir=$(brew --prefix)/opt/openssl@3
Після цього Ruby успішно:
  • скомпілюється
  • встановиться
  • створить gemset-и
  • стане доступним для використання 

Корисно знати

  • Повідомлення No binary rubies available - не помилка, а лише означає, що RVM перейшов у режим збірки з source
  • Ruby 3.4.x на macOS ARM наразі часто потребує ручної конфігурації
  • Аналогічна проблема може виникати і з іншими менеджерами версій
Якщо Ruby 3.4.x не ставиться через RVM на macOS - майже завжди допомагає явне підключення openssl@3.

Цей допис поки що не має жодних доповнень від автора/ки.

Що таке Middleware у Ruby on Rails і коли воно використовується
04 лист., 10:39

Що таке Middleware у Ruby on Rails і коли воно використовується

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Vanilla Rails approach?
14 лист., 16:48

Що таке Vanilla Rails approach?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке Elasticsearch і як він працює?
22 лист., 12:35

Що таке Elasticsearch і як він працює?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке time-series база даних?
22 лист., 12:42

Що таке time-series база даних?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22 лист., 12:49

Що таке VACUUM у PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Що таке B-Tree (Balanced Tree)?
22 лист., 12:58

Що таке B-Tree (Balanced Tree)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska