【问题标题】:Installing Ruby on Rails from Source - cannot load such file -- openssl从源代码安装 Ruby on Rails - 无法加载此类文件 - openssl
【发布时间】:2013-08-13 23:58:35
【问题描述】:

我在 Mac 上,使用 Lion。我正在为 Ruby on Rails 开发配置我的系统,但遇到了一些问题。我不想使用 brew 或其他快捷方式,而是想从源代码配置 Ruby on Rails。所以,这就是我所做的。

已安装 Ruby 2.0

  • 从 Ruby 网站下载源代码
  • 通过运行以下代码编译它:

    ./configure --prefix=/Users/user/Applications/ruby2

    制作

    进行安装

  • 并确保 $PATH 文件已更新为指向 /Users/user/Applications/ruby2/bin

所以,我可以调用ruby -v 或者如果我调用which ruby,它确实指向我自定义编译的Ruby 版本。

已安装 Node.js

  • 从主网站下载源代码
  • 通过运行以下代码编译它:

    ./configure --prefix=/Users/user/Applications/nodejs

    制作

    进行安装

  • 并确保 $PATH 文件已更新为指向 /Users/user/Applications/nodejs/bin

所以,我可以调用node -v,或者如果我调用which node,它确实指向我自定义编译的Ruby 版本。

我也对 openssl 执行了相同的步骤,它也可以从控制台访问,或者如果我这样做 which openssl 它指向 /Users/user/Application/openssl/bin

但是当我执行gem install rails 时仍然出现以下错误:

ERROR:  Loading command: install (LoadError)
    cannot load such file -- openssl
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

知道为什么吗?

系统规格

  • Mac Lion 10.8.4
  • OpenSSL 1.0.1e 2013 年 2 月 11 日
  • 红宝石 2.0.0p291
  • Nodejs v0.10.15

【问题讨论】:

  • OS X 已经预装了openssl 的版本,可以试试这个版本吗?

标签: ruby-on-rails openssl ruby-on-rails-4


【解决方案1】:

我通过执行以下操作设法解决了这个问题。主要问题是我编译 openssl 本身所遵循的步骤。

由于我使用的是 64 位机器,所以我必须先运行以下命令来配置 openssl

./configure --prefix=/Users/user/Applications/openssl darwin64-x86_64-cc
./make
./make install

然后重新编译 ruby​​

./configure --prefix=/Users/user/Applications/ruby2 --with-openssl-dir=/Users/user/Applications/openssl
./make
./make install

注意:即使在编译 ruby​​ 时它可能会说...选项 --with-openssl-dir 无效或不存在,请忽略它。

【讨论】:

    【解决方案2】:

    我在这个错误上度过了非常糟糕的时光。 最后我完成了。使用 RVM 或不使用 RVM 只有一次解决方案。

    确保在安装 ruby​​ 之前先安装了 OpenSSL。

    首先你应该找到 Ruby 在哪里:

    whereis ruby
    

    将列出它在您的系统上存在的所有位置,然后您可以显式删除它们。或者你可以使用这样的东西:

    rm -rf /usr/local/lib/ruby
    rm -rf /usr/lib/ruby
    rm -f /usr/local/bin/ruby
    rm -f /usr/bin/ruby
    rm -f /usr/local/bin/irb
    rm -f /usr/bin/irb
    rm -f /usr/local/bin/gem
    rm -f /usr/bin/gem
    

    那么

    sudo apt-get install zlib1g zlib1g-dev build-essential openssl libssl-dev libmysqlclient18 libmysqlclient-dev libyaml-dev curl git-core python-software-properties libpq-dev nodejs
    
    apt-get -y update
    apt-get -y install build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
    cd /tmp
    wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
    tar -xvzf ruby-2.0.0-p247.tar.gz
    cd ruby-2.0.0-p247/
    ./configure --prefix=/usr/local
    make
    make install
    

    希望对您有所帮助。

    【讨论】:

    • 这个答案可能至少部分被否决了,因为当 OP 说他们试图在 Mac 上执行此操作时,它假定基于 Debian 的 Linux 版本(例如 Ubuntu)。
    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 2014-04-23
    • 2014-04-24
    • 2018-10-19
    • 1970-01-01
    • 2022-10-23
    • 2012-03-09
    • 1970-01-01
    相关资源
    最近更新 更多