我有一个新的 Ubuntu 12.04 VM,我想安装 Ruby 2.0.0-p0。我能够很容易地安装 Ruby,但我无法让 gem 工作。
$ gem install bundler
ERROR: Loading command: install (LoadError)
cannot load such file -- openssl
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
我已经安装了开放 SSL,所以我不太清楚问题是什么。
$ sudo apt-get install libssl1.0.0 libssl-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl-dev is already the newest version.
libssl1.0.0 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
相似地,
$ which openssl
/usr/bin/openssl
如果我回到安装,有两行内容令我担心。
$ sudo make install
Failed to configure openssl. It will not be installed.
Failed to configure readline. It will not be installed.
谢谢!
答案1
在您的源位置,cd ext/openssl
然后ruby extconf.rb
。这将生成一个 makefile在 ext/openssl 目录中. 只需这样make && sudo make install
就可以构建 rubyopenssl扩展,并将.so 安装到适当的位置。
ext/readline
对于 readline 支持也同样如此。
然后你就能够make
正确地使用 ruby 了。
编辑:如果我说的不够清楚:
pushd ext/openssl
ruby extconf.rb
make && sudo make install
popd
pushd ext/readline
ruby extconf.rb
make && sudo make install
popd
make
sudo make install
答案2
我遇到了同样的问题,我必须安装以下两个包
libssl-dev
libreadline-dev
事实上,我发现我必须安装以下软件包才能让 ruby 2.0.0 和 postgres 9.2 在 ubuntu 13.04 上使用 openssl 和 readline 进行编译,所以我想分享它们
sudo apt-get -y update
sudo apt-get install -y make g++
sudo apt-get install -y curl git-core python-software-properties
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev
sudo apt-get install -y libgdbm-dev libreadline6-dev libncurses5-dev
sudo apt-get install -y libpq-dev libffi-dev
答案3
对我来说,这是一个缺少依赖项的情况。
我想法我拥有安装 ruby 所需的所有依赖项,但我也收到了 openSSL 和 readline 错误。
我尝试使用 RVM 在没有 root 权限的情况下安装 ruby,但失败了,但给了我一个缺少依赖项的列表。然后我用包管理器安装了依赖项。然后我重新尝试从源头安装 ruby,一切正常
对我来说缺少的依赖项是:
patch libyaml-devel autoconf gcc-c++ readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel
但对你来说可能有所不同。
更新:我最初不记得究竟在哪里找到此列表,但通过快速搜索在以下页面上找到了类似的列表,这可能对您有所帮助:
https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-on-centos-6-with-rvm
答案4
安装 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
确保 rubygems 安装成功完成。 这可能是修复该路径而不重新安装的更好方法,但这应该可以做到。