【问题标题】:OpenSSL, RVM, Brew, conflicting errorOpenSSL、RVM、Brew、冲突错误
【发布时间】:2014-02-25 20:20:24
【问题描述】:

当我在终端中运行 brew doctor 时: 我收到以下错误:

Warning: Some keg-only formula are linked into the Cellar.
You may wish to `brew unlink` these brews:

openssl

如果我取消链接并输入 rvm 要求: 我会得到以下错误。

Checking requirements for osx.
dyld: Library not loaded: @@HOMEBREW_CELLAR@@/openssl/1.0.1f/lib/libssl.1.0.0.dylib
  Referenced from: /usr/local/opt/openssl/bin/openssl
  Reason: image not found
Failed reading certificates path for '/usr/local/opt/openssl/bin/openssl' with return       code: ().
RVM autolibs is now configured with mode '2' => 'check and stop if missing',
please run `rvm autolibs enable` to let RVM do its job or run and read `rvm autolibs [help]`
or visit https://rvm.io/rvm/autolibs for more information.
Requirements installation failed with status: 133.

当我运行 brew unlink openssl 时,myssl 版本从 OpenSSL 1.0.1f 更改为 2014 年 1 月 6 日 至 OpenSSL 0.9.8y 2013 年 2 月 5 日

所以问题是:如何让 Brew Doctor 和 RVM 要求都满意?通过拥有相同的 OpenSSL 版本? (假设)

【问题讨论】:

  • 不!听说 macports 和 homebrew 冲突,所以没有安装
  • 你试过brew reinstall openssl吗?
  • 是的,它有效。 openssl 工作正常。但它的运行版本是 0.9 而不是 1.0。这就是导致问题的原因。

标签: ruby openssl rvm


【解决方案1】:

尝试brew reinstall openssl 然后brew link openssl --force

【讨论】:

  • Homebrew 不再允许 --force 了。
【解决方案2】:

恒杰已经成功了一半。

问题是 OSX 在 /usr/bin 中附带了一个版本的 openssl。试试这个:

$ /usr/bin/openssl version

当 homebrew 安装 openssl 时,它会将其安装到 /usr/local/Cellar/openssl,但默认情况下它不会创建链接,因为它会创建版本冲突。要创建您需要输入的链接:

$ brew link --force openssl

这将创建指向 brew 版本的符号链接,您应该能够通过键入以下内容来查看新版本号:

$ /usr/local/bin/openssl version

还有最后一个问题。如果您的路径变量在 /usr/local/bin 之前有 /usr/bin,就会发生这种情况。输入:

$ echo $PATH

如果您在 /usr/local/bin 之前看到 /usr/bin,那么您需要更新您的 .bash_profile 以在其中包含类似的内容:

export PATH="/usr/local/bin:$PATH"

这意味着新版本将在旧版本之前使用。

警告:brew 包显示“Mac OS X 已经提供此软件,并行安装另一个版本可能会导致各种问题。”

所以使用风险自负!我其实不知道什么是“各种麻烦”。

【讨论】:

  • 精彩的回复,对我帮助很大。
  • 即使在最新的 Mac 10.10 Yosemite 上也能正常工作。谢谢
  • 强制链接openssl不违背最佳实践吗? github.com/Homebrew/brew/commit/…
  • 较新的自制软件开始拒绝将opensslbrew link --force 链接。要解决此问题并强制rvm 使用openssl 的brew 版本,您需要在PATH 上设置它:export PATH="/usr/local/opt/openssl/bin:/usr/local/sbin:/usr/local/bin:$PATH" 放入~/.bash_profile 以保持
【解决方案3】:

在 Mavericks 上遇到同样的错误,只需运行“brew remove openssl”然后“rvm install ruby​​”

RVM 现在将安装正确版本的 OpenSSL。

【讨论】:

    【解决方案4】:

    或做“哪个openssl” 从该位置复制到 "/usr/local/opt/openssl/bin/openssl" 。然后尝试。 问题是“/usr/local/opt/openssl/bin/openssl”有旧的或损坏的证书。

    【讨论】:

      【解决方案5】:

      这似乎是需要注意的关键点,我已将其复制并粘贴到文本文档中以供以后使用。 一般来说,这对您没有任何后果。如果你建立你的 自己的软件,它需要这个公式,你需要添加到你的 构建变量:

      LDFLAGS:  -L/usr/local/opt/openssl/lib
      CPPFLAGS: -I/usr/local/opt/openssl/include
      

      但是有没有人认为这会对我们的 Mac 产生影响? 更好的选择是强制链接到现有的 openssl 吗?或者为了正确设置我们的 Ruby 开发环境,是否需要使用 homebrew 的版本。 我很想知道,因为我正在进行大量配置以开发网站,并且我希望我的开发环境尽可能稳定。 我感谢您的任何回复,经过一个学期的 unix 和大量其他研究,还有很多东西要知道!但知识就是力量!

      【讨论】:

        【解决方案6】:

        专门用于莫哈韦沙漠,

        sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /`
        

        来自 https://gorails.com/setup/osx/10.14-mojave

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多