Rbenv и Apple m1. Не удалось установить ruby ​​3.2, 2.7 и 2.6

Я не могу установить рубиновую версию с помощью rbenv. Пробовал 2.6.10 2.7.7 или 3.2.0.

Это ошибка, которую я получил при выполнении:

❯ rbenv install 3.2.0
To follow progress, use 'tail -f /var/folders/4v/kyv3nw1s7lq8s7lz7r6djvsr0000gn/T/ruby-build.20230125170342.85553.log' or pass --verbose
Downloading openssl-3.0.7.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/83049d042a260e696f62406ac5c08bf706fd84383f945cf21bd61e9ed95c396e
Installing openssl-3.0.7...
Installed openssl-3.0.7 to /Users/idanahal/.rbenv/versions/3.2.0

Downloading ruby-3.2.0.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0.tar.gz
Installing ruby-3.2.0...
ruby-build: using readline from homebrew
ruby-build: using gmp from homebrew

BUILD FAILED (macOS 13.1 using ruby-build 20221225)

Inspect or clean up the working tree at /var/folders/4v/kyv3nw1s7lq8s7lz7r6djvsr0000gn/T/ruby-build.20230125170342.85553.VSOgmw
Results logged to /var/folders/4v/kyv3nw1s7lq8s7lz7r6djvsr0000gn/T/ruby-build.20230125170342.85553.log

Last 10 log lines:
compiling ossl_x509ext.c
compiling ossl_x509name.c
compiling ossl_x509req.c
compiling ossl_x509revoked.c
compiling ossl_x509store.c
installing default openssl libraries
linking shared-object date_core.bundle
linking shared-object openssl.bundle
linking shared-object ripper.bundle
make: *** [build-ext] Error 2

При установке с помощью Homebrew он работает. Я не знаю, что делать. Должен ли rbenv вообще работать с компьютерами m1?

у меня макос 13.1

🤔 А знаете ли вы, что...
Ruby обладает сильной системой типов, но при этом переменные не требуют объявления типов.


257
1

Ответ:

Решено

Установка переменной среды ниже решает проблему:

export RUBY_CONFIGURE_OPTS = "--with-zlib-dir=$(brew --prefix zlib) --with-openssl-dir=$(brew --prefix [email protected]) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-gdbm-dir=$(brew --prefix gdbm)"

перед запуском rbenv install для всех версий.

Примечание. Конфигурация --with-openssl-dir=$(brew --prefix [email protected]) нужна только для версий 2.6.* и 2.7.*. Вы можете (и должны) удалить его, если пытаетесь установить ruby ​​3.*.*.

Для 2.6 и 2.7 иногда также требовалась эта переменная среды:

export RUBY_CFLAGS = "-Wno-error=implicit-function-declaration"

Если все вышеперечисленное не сработало, вы можете установить ruby ​​с помощью Homebrew. Если вы хотите управлять установленной версией Homebrew из rbenv, прочитайте этот ответ.