ruby-on-rails - 在 Ubuntu 18.04 上安装 Rails 5.2.3 时出错
问题描述
我正在尝试使用 Ruby 版本 -2.5.5 在 Ubuntu 18.04 PC 上安装 Rails 5.2.3,在安装过程中我遇到了这个错误。
$ gem install rails -v 5.2.3
Building native extensions. This could take a while...
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
current directory: /home/amani/.rvm/gems/ruby-2.5.5/gems/nokogiri-1.10.4/ext/nokogiri
/home/amani/.rvm/rubies/ruby-2.5.5/bin/ruby -I /home/amani/.rvm/rubies/ruby-2.5.5/lib/ruby/site_ruby/2.5.0 -r ./siteconf20190831-23754-eu6kq8.rb extconf.rb
checking if the C compiler accepts ... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/amani/.rvm/rubies/ruby-2.5.5/bin/$(RUBY_BASE_NAME)
--help
--clean
/home/amani/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /home/amani/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/mkmf.rb:574:in `block in try_compile'
from /home/amani/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/mkmf.rb:521:in `with_werror'
from /home/amani/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/mkmf.rb:574:in `try_compile'
from extconf.rb:138:in `nokogiri_try_compile'
from extconf.rb:162:in `block in add_cflags'
from /home/amani/.rvm/rubies/ruby-2.5.5/lib/ruby/2.5.0/mkmf.rb:632:in `with_cflags'
from extconf.rb:161:in `add_cflags'
from extconf.rb:416:in `<main>'
要查看此扩展无法编译的原因,请查看 mkmf.log,可在此处找到:
/home/amani/.rvm/gems/ruby-2.5.5/extensions/x86_64-linux/2.5.0/nokogiri-1.10.4/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /home/amani/.rvm/gems/ruby-2.5.5/gems/nokogiri-1.10.4 for inspection.
Results logged to /home/amani/.rvm/gems/ruby-2.5.5/extensions/x86_64-linux/2.5.0/nokogiri-1.10.4/gem_make.out
这些是终端上的错误消息。
解决方案
我刚刚查看了您的终端日志,并意识到您正在使用RVM(Ruby 版本管理器)作为您的ruby 管理器。这里的问题是RVM似乎是重量级的,因为它不仅可以管理ruby version
您的ruby gems
. 一个更好的选择应该是使用rbenv (Ruby environment),它只管理你的ruby version
和管理ruby gems的Bundler。
这样,您将很少遇到RVM和Bundler会做同样事情(管理您的ruby gems
)的冲突,因为 rails 安装依赖于Bundler。
这是一个简单的内置命令,它将从您的系统中删除RVM及其相关目录:
rvm implode
为了删除 rvm 的最终痕迹,您还需要删除 rvm gem:
gem uninstall rvm
如果您对您的文件进行了修改,您PATH
可能也想拉出那些。检查您的.bashrc
,.profile
和.bash_profile
文件等。
您可能还有一个/etc/rvmrc
文件,或者您的主目录~/.rvmrc
中的一个文件也可能需要删除。
删除RVM及其所有文件和目录后,请按照本指南如何在 Ubuntu 18.04 上使用 rbenv安装 Ruby on Rails,在您的 Ubuntu 机器上安装带有rbenv的Ruby on Rails的新副本。
如果您在使用rbenv时仍然遇到与 bundler 有关的任何问题,只需按照以下说明进行操作:
您只需在本地安装 RubyGems 包管理器的更新即可。为此,请运行
gem update --system
如果您没有在本地安装 bundler 版本 2,则运行
gem install bundler
然后最后运行
bundler update --bundler
就这样。
我希望这有帮助。
推荐阅读
- c++ - 为什么逐个元素填充字符串的长度为零?
- node.js - 将二进制图像保存到文件
- oracle - Oracle occi - 来自 unix 时间的时间戳
- scala - "skip.header.line.count"="1" 在 SparkSession 中的 Hive 中不起作用
- python - 如何计算当前行和上一行之间的半正弦距离?
- javascript - 带有 for=DIV-ID 的HTML
- python - Python 断言异常与 Multiprocssing
- excel - 不知道为什么结果从 Excel 表中的 RecordSet 转置
- list - 从列表中创建列表列表,同时更改一个始终不同的值 Haskell
- elasticsearch - Elasticsearch 查询不适用于@value