【问题标题】:ruby 2.0 rails gem install error "cannot load such file -- openssl"ruby 2.0 rails gem 安装错误“无法加载此类文件--openssl”
【发布时间】:2013-02-28 06:54:42
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

    【讨论】:

    • 我建议你将ruby_configure_flags=--with-openssl-dir="$rvm_path/usr"添加到~/.rvm/user/db,这样如果你重新安装Ruby来添加另一个包,你就不会忘记包含OpenSSL。
    • 在 Windows 上怎么样??
    • @ValeryKvon 我正在从源代码编译 ruby​​。然后我执行了 gem install bundler。我收到了这个错误:ERROR: Loading command: install (LoadError) cannot load such file -- zlib ERROR: While executing gem ... (NoMethodError) undefined method invoke_with_build_args' for nil:NilClass`
    • 这对我有用没有 --with-gcc 标志,FWIW。
    • -bash: rvm: command not found,见:rvm: command not found MAC OX
    【解决方案2】:

    如果您使用的是 RVM,请关注:

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

    它对我有用。

    【讨论】:

    • 这个答案不错!重新安装 --all --force 需要很长时间,但如果你有很多红宝石......做好准备......
    【解决方案3】:

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

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

    RVM

    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
    

    希望对您有所帮助。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        brew install openssl
        CONFIGURE_OPTS=--with-openssl-dir=$(brew --prefix openssl) rbenv install whatever-ruby-version
        

        【讨论】:

          【解决方案6】:

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

          rvm pkg install openssl
          rvm reinstall all --force
          

          【讨论】:

            【解决方案7】:

            安装 ruby​​ 2.0 时,rubygems 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 安装成功完成。 可能是无需重新安装即可修复该路径的更好方法,但应该这样做。

            【讨论】:

              【解决方案8】:

              请务必在 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 错误

              【讨论】:

                【解决方案9】:

                我在使用相同的操作系统版本时遇到了同样的问题。我使用 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
                

                【讨论】:

                  【解决方案10】:

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

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

                  【讨论】:

                    【解决方案11】:

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

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

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

                    【讨论】:

                      【解决方案12】:

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

                      升级 openssl
                      brew upgrade openssl@1.1
                      

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

                      【讨论】:

                        【解决方案13】:

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

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

                        【讨论】:

                          【解决方案14】:

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

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

                          【讨论】:

                            猜你喜欢
                            • 2020-04-08
                            • 1970-01-01
                            • 2013-10-24
                            • 2013-11-04
                            • 2022-10-23
                            • 1970-01-01
                            • 1970-01-01
                            • 2012-12-03
                            • 1970-01-01
                            相关资源
                            最近更新 更多