ruby 2.0 rails gem安装错误“无法加载此类文件 - openssl”

时间:2013-02-28 06:54:43

标签: ruby-on-rails ruby

我正在使用 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

我有红宝石1.9.x和rails 3.2.x正常工作

14 个答案:

答案 0 :(得分:48)

您必须先安装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

答案 1 :(得分:30)

如果您正在使用RVM,请按照:

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

它对我有用。

答案 2 :(得分:7)

我对这个错误感到非常糟糕。 最后我完成了它。无论是使用RVM还是没有RVM,都只有一次解决方案。

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

<强> RVM

  1. 卸载rvm

    rvm implode

  2. 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。

    OR

    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
    

    THEN

    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
    

    我希望这对你有所帮助。

答案 3 :(得分:3)

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

var s2idx = 0;
foreach(s1 in series1)
{
    // go forward through series2 until you find the next interp target
    while(series2[s2dix].Item1 < s1.Item1 && s2idx < series2.Length)
        s2idx++;
    if(s2idx == series2.Length)
        // all s1 Xs are > the biggest s2 X, so just add the rest of the s1 points to your output 
        // or whatever else you want to do, then quit the foreach loop
    var s2 = series2[s2idx];
    if(s1.Item1 == s2.Item1)
        // Xs are equal, handle this case as you like
    else
        // calculate the interpolated point and put it in your output
}

答案 4 :(得分:2)

我针对ruby 2.1.2修复了以下错误。

rvm pkg install openssl
rvm reinstall ruby-2.1.2 --with-openssl-dir=$rvm_path/usr

答案 5 :(得分:1)

安装ruby 2.0时,由于openssl,rubygems 2.0安装可能无法正常完成。 确保提供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

确保rubygems安装成功完成。 可能是一种更好的方法来修复该路径而无需重新安装,但这应该做到。

答案 6 :(得分: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错误

答案 7 :(得分: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

答案 8 :(得分:1)

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

rvm pkg install openssl
rvm reinstall all --force

答案 9 :(得分: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到底做了什么?我猜它会自动下载依赖项,但我希望得到一个明确的答案。

答案 10 :(得分:0)

在尝试使用gem install <package>时,我在Fedora上遇到了同样的openssl错误。您似乎需要使用yum / dnf

安装其他软件包
sudo dnf install rubygems rubygem-bundler ruby-devel mariadb-devel

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

答案 11 :(得分:0)

只是遇到了同样的问题。需要一点时间,但是用

升级openssl
brew upgrade openssl@1.1

为我工作。将来版本可能会有所不同,请键入brew install openssl以查看可以升级到的版本。希望对您有所帮助。

答案 12 :(得分:0)

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

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

答案 13 :(得分:-1)

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

ruby-install ruby-2.0.0-p247 -- --with-openssl-dir=/usr/local/opt/openssl