60

我正在使用osx 10.8.2安装的ruby​​ 2.0并且....在尝试运行“sudo gem install rails”时得到了这个

$ sudo 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

我之前有 ruby​​ 1.9.x 和 rails 3.2.x 工作正常

4

14 回答 14

88

您必须先安装 OpenSSL 并再次重新编译 ruby​​:

RVM:

rvm pkg install openssl
rvm reinstall ruby-2.0.0-p0 --with-gcc=gcc-4.7 --with-openssl-dir=$rvm_path/usr
于 2013-02-28T10:42:03.243 回答
38

如果您使用的是 RVM,请遵循:

$ brew install automake
$ rvm pkg install openssl
$ rvm requirements run
$ rvm reinstall all --force
$ gem install rails

它对我有用。

于 2013-03-05T08:58:32.690 回答
9

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

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

虚拟机

  1. 卸载 rvm

    rvm 内爆

或者

rm -rf ~/.rvm

不要忘记删除 .bashrc 和/或 .bash_profile(或您正在使用的任何 shell)中的脚本调用。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

然后安装 RVM,发布 ruby​​。

或者

rvm pkg install openssl
rvm reinstall ruby-2.0.0-p0 --with-gcc=gcc-4.7 --with-openssl-dir=$rvm_path/usr

没有 RVM

首先你应该找到 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:12:03.910 回答
6

我为 ruby​​ 2.1.2 修复了这个错误,如下所示。

rvm pkg install openssl
rvm reinstall ruby-2.1.2 --with-openssl-dir=$rvm_path/usr
于 2020-03-26T18:44:36.530 回答
4

在 OSX 上,使用 rbenv 和 homebrew,以下对我有用:

brew install openssl
CONFIGURE_OPTS=--with-openssl-dir=$(brew --prefix openssl) rbenv install whatever-ruby-version
于 2016-01-06T21:26:36.810 回答
3

这对我有用,类似于已经发布的其他一些答案。

rvm pkg install openssl
rvm reinstall all --force
于 2013-03-17T01:35:54.413 回答
1

安装 ruby​​ 2.0 时,可能 ruby​​gems 2.0 安装没有完成,因为 openssl。确保提供 openssl 配置文件的有效路径;你可以:

find . -type f -name "openssl.cnf"

路径通常是 $HOME/.rvm/usr 或 $HOME/.rvm/usr/ssl

然后

[sudo] rvm reinstall ruby-2.0.0-p0 --with-openssl-dir=[openssl.cnf path] --verify-downloads 1

确保 ruby​​gems 安装成功完成。可能是在不重新安装的情况下修复该路径的更好方法,但这应该可以。

于 2013-03-01T18:40:49.010 回答
1

请务必在 rvm 网站上查看此页面: https ://rvm.io/packages/openssl/

跑步

rvm requirements run

给我:

Missing required packages: autoconf, automake, libtool, pkg-config, apple-gcc42, readline, libxml2, libxslt, libksba, openssl, sqlite

brew install autoconf automake ...

我能够rvm reinstall 2.0.0没有openssl错误

于 2013-03-02T14:12:43.787 回答
1

我在相同的操作系统版本上遇到了同样的问题。我使用 rvm 并按照此命令中的步骤操作:

$ rvm requirements

按照这些说明,我跑了:

$ brew update
$ brew tap homebrew/dupes
$ brew install bash curl git
$ brew install autoconf automake apple-gcc42 libtool pkg-config openssl readline libyaml sqlite libxml2 libxslt libksba
于 2013-03-06T22:32:10.023 回答
1

我之前遇到过同样的问题,尝试了所有的片段,但都没有成功。环顾四周后,以下内容对我有用:

$ rvm remove 2.0.0 # get rid of unsuccessful installation
$ rvm get head --autolibs=3 # get the latest RVM and build required libs
$ rvm requirements # just in case, install all other required stuff
$ rvm install ruby-2.0.0
$ rvm --default use ruby-2.0.0

具体做什么rvm get head --autolibs=3?我猜它会自动下载依赖项,但我希望有一个明确的答案。

于 2013-09-07T19:37:23.060 回答
0

我在 Fedora 上尝试使用时遇到了同样的 openssl 错误gem install <package>。看来您需要使用 yum/dnf 安装其他软件包

sudo dnf install rubygems rubygem-bundler ruby-devel mariadb-devel

运行上述命令后,gem install <package>现在应该可以工作了。

于 2016-01-14T01:14:50.803 回答
0

刚刚经历了同样的问题。需要一点时间,但是,升级 openssl

brew upgrade openssl@1.1

为我工作。以后版本可能会有所不同,输入 brew install openssl 查看可以升级到哪个版本。我希望它有所帮助。

于 2020-06-12T09:09:55.517 回答
0

如果您有 libssl 1.1,您的问题可能是这些旧版本的 ruby​​(2.4 是截止)仅与 libssl1.0 兼容。

对于 debian/ubuntu,请确保apt-get install libssl1.0-dev成功。

于 2020-12-21T02:16:41.223 回答
-1

如果您使用ruby-install,它将采用与 rvm 相同的 openssl 参数:

ruby-install ruby-2.0.0-p247 -- --with-openssl-dir=/usr/local/opt/openssl
于 2020-02-20T17:36:36.090 回答