【问题标题】:Installing openssl in ruby / rbenv在 ruby​​ / rbenv 中安装 openssl
【发布时间】:2012-06-20 18:43:30
【问题描述】:

我需要在 ruby​​ 中使用 openssl。我应该如何安装相同的?我已经通过 rbenv 安装了 ruby​​,并且正在使用 ubuntu 12.04。

kprakasam@ubuntu:~$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

kprakasam@ubuntu:~$ irb
irb(main):001:0> require 'openssl'
LoadError: no such file to load -- openssl
    from /home/kprakasam/.rbenv/versions/1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /home/kprakasam/.rbenv/versions/1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):1
    from /home/kprakasam/.rbenv/versions/1.9.2-p180/bin/irb:12:in `<main>'

【问题讨论】:

  • 我认为你必须用 openssl 编译 ruby​​
  • sudo apt-get -y build-essential install zlib1g-dev libreadline-dev libssl-dev libcurl4-openssl-dev 比使用 rbenv 再次安装 ruby​​,你将拥有 openssl 支持

标签: ruby gem openssl rbenv


【解决方案1】:

对于 Mac OSX,这是拯救我的原因:

RUBY_CONFIGURE_OPTS=--with-openssl-dir=<openssl install dir> rbenv install

来自Ruby build wiki

但是..如何找到openssl 安装目录?:

$ brew list openssl
/usr/local/Cellar/openssl/1.0.2d_1/bin/c_rehash
/usr/local/Cellar/openssl/1.0.2d_1/bin/openssl
...

那么openssl安装目录就是:

/usr/local/Cellar/openssl/1.0.2d_1/

ruby 安装命令结束如下:

RUBY_CONFIGURE_OPTS=--with-openssl-dir=/usr/local/Cellar/openssl/1.0.2d_1/ rbenv install

【讨论】:

  • 我会补充一点,我在 OSX 上的编译错误提到了两个版本的 openssl,然后我从 brew 中删除了所有版本的 openssl(卸载和修剪)并重新安装了 openssl。然后编译使用ruby-install ruby 2.5.1 -- --with-openssl-dir=/usr/local/Cellar/openssl/1.0.2o_1/
  • 在 Debian 9 上也修复了 /tmp/ruby-build.20190501225018.25089/ruby-2.6.3/lib/rubygems/core_ext/kernel_require.rb:54:in `require': libssl.so.1.0.0: cannot open shared object file: No such file or directory - /tmp/ruby-build.20190501225018.25089/ruby-2.6.3/.ext/x86_64-linux/openssl.so (LoadError)
  • 谢谢!还修复了“无法配置openssl。它将不会被安装。”
  • brew --prefix openssl@1.1可用于获取openssl路径,即RUBY_CONFIGURE_OPTS=--with-openssl-dir=$(brew --prefix openssl@1.1)
【解决方案2】:

编辑:请注意,此答案可能已过时。 issue in question 已在 v0.8.1 中解决。


在阅读了这个问题的多个答案后,我设法使用以下命令使其在 macOS 10.15 上运行:

brew install rbenv/tap/openssl@1.0
OPENSSL_1_0_DIR=$(brew --prefix rbenv/tap/openssl@1.0)

export CPPFLAGS=-I${OPENSSL_1_0_DIR}/include
export LDFLAGS=-L${OPENSSL_1_0_DIR}/lib

ruby-install ruby 2.2.10 -- --with-openssl-dir=${OPENSSL_1_0_DIR}

【讨论】:

    【解决方案3】:

    openssl 需要安装在您的本地计算机上。

    然后您需要编译带有 openssl 支持的 Ruby,这是通过 --with-openssl-dir 命令行开关实现的。

    也许this 会帮助你。

    【讨论】:

    • 然后我面临以下错误 - Error running '__rvm_make -j4'
    【解决方案4】:

    首先,安装openssl:

    sudo apt-get -y install build-essential zlib1g-dev libreadline-dev libssl-dev libcurl4-openssl-dev
    

    之后,重新编译 Ruby。

    注意:仅修复上面@Nebojsa 的评论

    【讨论】:

    • 在将 ruby​​-2.0.0-p451 从源代码安装到 Ubuntu-Saucy 13.10 时,这对我有用。
    • 我已将我的 ubuntu 升级到 20.04.1 版,我的 ruby​​ 停止工作。使用这个命令并在我的 rbenv 上重新安装 ruby​​ 版本就可以了。谢谢!
    【解决方案5】:

    这可能会对您有所帮助:Rails: cannot load such file — openssl

    【讨论】:

    • 这在您使用 RVM 时很有用。如果使用 RBENV,请参阅接受的答案。
    猜你喜欢
    • 2013-11-16
    • 2020-09-27
    • 1970-01-01
    • 2013-01-18
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多