1

我在 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 狮子 10.8.4
  • OpenSSL 1.0.1e 2013 年 2 月 11 日
  • 红宝石 2.0.0p291
  • Nodejs v0.10.15
4

2 回答 2

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 无效或不存在,请忽略它。

于 2013-08-18T15:36:44.060 回答
0

我在这个错误上度过了非常糟糕的时光。最后我完成了。只有使用 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

我希望这对你有帮助。

于 2013-12-07T18:14:34.937 回答