Почему я получаю сообщение об ошибке «Расширение Ruby openssl не было скомпилировано ОШИБКА: установка Ruby прервана из-за отсутствия расширений»?

Когда я бегу

RUBY_CONFIGURE_OPTS=--with-openssl-dir=/usr/local/Cellar/openssl@3/3.0.1 rbenv install 3.1.0

Я получаю этот вывод:

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

BUILD FAILED (macOS 11.6.2 using ruby-build 20211227-3-gcdc215e)

Inspect or clean up the working tree at /var/folders/ts/k_8jb10136s3zw9k2k08nz3c0000gn/T/ruby-build.20220113093111.65052.FVpqjp
Results logged to /var/folders/ts/k_8jb10136s3zw9k2k08nz3c0000gn/T/ruby-build.20220113093111.65052.log

Last 10 log lines:
The Ruby openssl extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Configure options used:
  --prefix=/Users/jeremy/.rbenv/versions/3.1.0
  --enable-shared
  --with-readline-dir=/usr/local/opt/readline
  --with-openssl-dir=/usr/local/Cellar/openssl@3/3.0.1
  CC=clang
  LDFLAGS=-L/Users/jeremy/.rbenv/versions/3.1.0/lib
  CPPFLAGS=-I/Users/jeremy/.rbenv/versions/3.1.0/include

Я не вижу никаких подсказок в журналах. Я пробовал много вещей, таких как переустановка rbenv и openssl, без указания параметров настройки, обновлений системы, установки xcode и многого другого из Google. Может быть, я что-то упускаю.

3 ответа

Привет, я также продолжал сталкиваться с этим в «Mac OS X 10.15.7 с использованием ruby-build». Мне пришлось одновременно установить обе следующие переменные перед командой rbenv install 3.0.1:

      OPENSSL_CFLAGS=-Wno-error=implicit-function-declaration RUBY_CONFIGURE_OPTS=--with-readline-dir="$(brew --prefix readline)" rbenv install 3.0.1

Первый указывает компилятору игнорировать неявное объявление функций, а не выдавать ошибку, когда это происходит. А второй сообщает ruby, какой readline использовать (в данном случае тот, который установлен через homebrew).

Ruby (пока) не поддерживает OpenSSL 3.0. Реализация поддержки этой более новой версии отслеживается в https://github.com/ruby/openssl/issues/369 .

На данный момент вы должны использовать вместо этого Openssl 1.1, который вы можете установить с помощью

      brew install openssl@1.1

В конце концов мне просто пришлось удалить/переустановить rbenv, и это решило проблему.

brew uninstall rbenv

Другие вопросы по тегам