我正在使用 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正常工作
答案 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 强>
卸载rvm
rvm implode
或
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)
只是遇到了同样的问题。需要一点时间,但是用
升级opensslbrew 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