ruby-on-rails Ruby安装因缺少扩展名而中止:openssl,读取行,zlib编译错误

7d7tgy0s  于 2023-01-06  发布在  Ruby
关注(0)|答案(3)|浏览(154)

我正在使用macOs Catalina。我尝试通过rbenv安装旧版本的Ruby(1.9.3,2.1.2)。然而,我在尝试安装旧版本时,一直收到下面的错误。* 安装2.4或更新版本时没有问题。
我已经试过了

brew install openssl
brew install readline
brew install zlib

以及酿造更新。我有一切安装和最新的,但仍然下面的错误不断出现。
我还尝试使用配置选项进行安装

RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.1.2

请让我知道我该怎么做。
ruby-build:使用自制程序中的readline
构建失败(Mac OS X 10.15.7使用ruby构建版本20201005)
检查或清理/var/文件夹/80/ts3rxpm5199g71p1vm4xzydj03b4g3/T/ruby-build.20201113153529.74484.A9uFGC中的工作树结果记录到/var/文件夹/80/ts3rxpm5199g71p1vm4xzydj03b4g3/T/ruby-build.20201113153529.74484.log
最后10个日志行:未编译Ruby openssl扩展。未编译Ruby readline扩展。未编译Ruby zlib扩展。错误:Ruby安装因缺少扩展名而中止配置使用的选项:

  • -前缀=/用户/用户名/. rbenv/版本/2.1.2
  • -带有开放ssl-目录=/usr/本地/选项/开放ssl@1.0
  • -带有读取行-目录=/usr/本地/选择/读取行
    CC =叮当声
    LDFLAGS =-L/用户/用户名/. rbenv/版本/2.1.2/库
    CPPFLAGS =-I/用户/用户名/. rbenv/版本/2.1.2/包含
fhity93d

fhity93d1#

  1. ruby-build需要clang 11来安装ruby的旧版本:GitHub评论链接
    1.如果clang已经更新到12,你需要先核击它:sudo rm -rf /Library/Developer/CommandLineTools(源代码GitHub注解)
    1.然后,从official Apple Developers's websiteclang 11安装 * Xcode_11.5.dmg命令行工具 *(至少需要Free Apple Developer Account
    1.确保在安装旧版本的ruby时选择openssl 1.0
  2. ruby-build安装相应的openssl,例如2.1.2内部版本
  3. echo $RUBY_CONFIGURE_OPTS以确保它为空或设置为使用openssl@1.0
    1.如果ruby-build仍然选择openssl 1.1,那么你可以显式地选择brew install rbenv/tap/openssl@1.0RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.0)"(来源GitHub评论)
uidvcgyl

uidvcgyl2#

嗨,我也经常在“Mac OS X 10.15.7 using 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安装的)。
另外,我还将openssl设置为1.1.1

js81xvg6

js81xvg63#

我在Intel和M1 Mac上安装Ruby时都遇到了问题,100%正常的是ruby-install

# install ruby-install from source
wget -O ruby-install-0.8.5.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.5.tar.gz
tar -xzvf ruby-install-0.8.5.tar.gz
cd ruby-install-0.8.5/
sudo make install

# install via homebrew (macOS)
brew install ruby-install openssl@1.1 readline zlib

# install specific version
ruby-install ruby 3.1.2

# install specific version (macOS)
ruby-install ruby-2.7.2 -- --with-openssl-dir=$(brew --prefix openssl@1.1)

# list rubies
ruby-install

# update all rubies
ruby-install --update

不确定它可以追溯到多远,因为CDN/FTP必须存在,但对于v2.7.*,它似乎有一个长尾。

>>> Downloading https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.xz into /Users/lance.stephens/src ...
--2023-01-05 14:40:04--  https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.xz
Resolving cache.ruby-lang.org (cache.ruby-lang.org)... 151.101.1.178, 151.101.65.178, 151.101.129.178, ...
Connecting to cache.ruby-lang.org (cache.ruby-lang.org)|151.101.1.178|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2023-01-05 14:40:05 ERROR 404: Not Found.

!!! Download of https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.xz failed!

截至目前的稳定版本:

λ ruby-install
Stable ruby versions:
  ruby:
    2.6.8
    2.7.4
    3.0.2
  jruby:
    9.3.4.0
  rbx:
    5.0
  truffleruby:
    22.1.0
  truffleruby-graalvm:
    22.1.0
  mruby:
    3.0.0

相关问题