首页 > 解决方案 > 在 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

这些是终端上的错误消息。

标签: ruby-on-railsrubynokogiri

解决方案


我刚刚查看了您的终端日志,并意识到您正在使用RVM(Ruby 版本管理器)作为您的ruby​​ 管理器。这里的问题是RVM似乎是重量级的,因为它不仅可以管理ruby version您的ruby gems. 一个更好的选择应该是使用rbenv (Ruby environment),它只管理你的ruby version和管理ruby​​ gems的Bundler

这样,您将很少遇到RVMBundler会做同样事情(管理您的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

就这样。

我希望这有帮助。


推荐阅读