我使用的是Fedora 20,安装了Ruby 2.0版和Rails 4.1.6版。
我尝试过rails new example
,但得到了这个错误:
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.6.11
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h
Gem files will remain installed in /home/sntr/.gem/ruby/gems/json-1.8.1 for inspection.
Results logged to /home/sntr/.gem/ruby/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
An error occurred while installing json (1.8.1), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.1'` succeeds before bundling.
run bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`
我尝试过gem install json -v '1.8.1'
或sudo yum install json
...但是它没有改变,我不能运行Rails。
发布于 2015-07-03 12:27:28
我尝试了gem install json -v '1.8.1‘或sudo yum install json ...但是它没有改变,我不能运行Rails。
系统包实际上可以解决这个问题,但您需要将其版本锁定在Gemfile中。
也许你不知道,但是整个Ruby on Rails框架实际上是打包的,所以运行:
# yum install rubygem-rails
将为您安装Rails。但由于您最有可能安装的是其他一些gem或其更新版本,因此也可以通过安装ruby-devel
包来安装Ruby头文件:
# yum install ruby-devel
使用system Ruby包实际上是一个很好的选择,它很容易安装,并为您提供安全更新等。只有当你需要操作系统没有提供的其他Ruby版本时,使用Ruby版本管理器才会对你有所帮助。
发布于 2014-10-30 18:55:26
请改用RVM。
如果您还是新手,它为您提供了在不同版本和环境中进行实验的选项。
发布于 2015-04-01 05:01:15
这里的问题是,如果rubygems.org提供了较新的版本,则bundler不会使用系统rubygems。因此,即使您从Fedora包安装了rubygem-json,例如它是1.8.1版,它也会被忽略,因为1.8.2版包含在rubygems中。
同样的问题也发生在其他几个gem上,但除非gem使用本机扩展(即需要编译的C代码),否则不会导致包失败。因此,json gem安装失败,但其他gem可以成功安装(来自rubygems,而不是yum)。
这个问题是discussed in depth on Github的,不幸的是it has no solution,而不是涉及Bundler的问题。Bundler的目的是确保在给定Gemfile/Gemfile.lock的情况下,无论在什么系统上运行,它都能安装与给定的gem完全相同的版本。
如果您必须只使用系统gem,那么您需要使用rails new app --no-gemfile
创建您的应用程序,自己安装所有必要的系统gem,并记录它们是哪些gem,以便以后可以重复安装gem以进行测试和部署。特别是,您的应用程序将不会有Gemfile或Gemfile.lock。通常情况下,您只需要在特定的OS发行版(例如RHEL 7)上进行部署开发,并且只允许使用系统提供的包。这在企业软件开发中很常见。如果您不在这个场景中,那么您可能根本不应该使用系统ruby或rubygems,而应该使用RVM。
https://stackoverflow.com/questions/26661062
复制相似问题