【问题标题】:Failing to build Ruby 2.5.0 with rbenv and ruby-build on macOS Sierra无法在 macOS Sierra 上使用 rbenv 和 ruby​​-build 构建 Ruby 2.5.0
【发布时间】:2018-01-02 13:09:11
【问题描述】:

我尝试在 macOS Sierra 上使用 rbenv 和 ruby​​-build 安装 ruby​​ 2.5.0,但失败了,我收到如下错误消息:

$ rbenv install 2.5.0
Downloading openssl-1.1.0g.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/de4d501267da39310905cb6dc8c6121f7a2cad45a7707f76df828fe1b85073af
Installing openssl-1.1.0g...
Installed openssl-1.1.0g to /Users/hikaru/.rbenv/versions/2.5.0

Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...

BUILD FAILED (OS X 10.12.6 using ruby-build 20171226)

Inspect or clean up the working tree at 
/var/folders/5q/dy9blchn6fq1_673pm0ybt0h0000gn/T/ruby-
build.20180102205530.13528
Results logged to /var/folders/5q/dy9blchn6fq1_673pm0ybt0h0000gn/T/ruby-build.20180102205530.13528.log

Last 10 log lines:
make[1]: *** Waiting for unfinished jobs....
installing default ripper libraries
compiling ancdata.c
compiling raddrinfo.c
compiling ifaddr.c
installing default socket libraries
linking shared-object zlib.bundle
linking shared-object socket.bundle
linking shared-object ripper.bundle
make: *** [build-ext] Error 2

我检查了日志文件,发现以下错误:

  ossl_x509cert.c:334:59: error: member reference type 'int' is not a pointer
if (!i2a_ASN1_OBJECT(out, X509_get0_tbs_sigalg(x509)->algorithm)) {
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~  ^

我不知道为什么会发生这个错误。如果您能解释如何解决这个问题,我将不胜感激。

之后,我尝试在 macOS High Sierra 上使用 Xcode 提供的 gcc rbenv install 2.5.0,结果出现了同样的问题。

【问题讨论】:

  • 我认为this 是同一个问题,有人在 10 月份报告过。您是否将您的结果/库版本与该讨论进行了比较?
  • 我在尝试使用 rvm 在 Sierra 上安装 2.5 时遇到了同样的问题。
  • 如果有帮助,我在rvm 上修复它的方法是通过rvm install 2.5 --with-openssl-dir=/usr/local/opt/opensslrvm install 2.5 --with-openssl-dir=brew --prefix openssl` 覆盖openssl 的位置。也许有办法对 rbenv/ruby-build 做同样的事情?

标签: ruby rbenv


【解决方案1】:

它适用于我在同一个操作系统上。 An issue in ruby-build that produced this error was reported and fixed recently.

更新 rbenv 和 ruby​​-build

  • 如果你从 git 获取它们:

    cd ~/.rbenv
    git pull
    cd plugins/ruby-build
    git pull
    
  • 如果您从自制软件中获取它们:

    brew update
    brew upgrade rbenv ruby-build
    

然后再次尝试rbenv install 2.5.0

如果您使用的是 rbenv 和 ruby​​-build 自制软件,您可以尝试在 git 中使用它们。

【讨论】:

  • 我知道你提出的问题,即使我安装了cd ~/.rbenv && git pull && cd plugins/ruby-build && git pull,我也无法安装 ruby​​ 2.5.0。我担心gcc的版本。我使用与 MacPorts 一起安装的 gcc 6。这种差异会导致这些麻烦吗?
【解决方案2】:

我终于解决了这个问题。当这个问题发生时,我的 rbenv 尝试使用 openssl-1.1.0g 安装 ruby​​ 2.5.0。这个 openssl 是由 rbenv 和 ruby​​-build 选择的。 在我的环境中,我通过 MacPort 安装了 openssl@1.0.2n_0。我选择了这个 openssl 来使用 rbenv 和 ruby​​-build 安装 ruby​​ 2.5.0。

$ rbenv versions
  system
* 2.4.0 
$ port installed | grep openssl
  openssl @1.0.2n_0 (active)
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/local --with-gdbm-dir=/opt/local"  rbenv install -v 2.5.0
$ rbenv versions
  system
* 2.4.0 
  2.5.0

当我没有使用--with-gdbm-dir=/opt/local时,我收到以下消息:

*** Following extensions are not compiled:
gdbm:
    Could not be configured. It will not be installed.
    Check ext/gdbm/mkmf.log for more details.
*** Fix the problems, then remove these directories and try again if you want.

【讨论】:

    【解决方案3】:

    使用它来安装带有 rbenv 的 ruby​​ 最新版本

    RUBY_CONFIGURE_OPTS="--disable-dtrace" rbenv install 2.5.1
    

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 2020-01-21
      • 2022-11-06
      相关资源
      最近更新 更多