bundle install 尝试构建 json 1.4.6 失败——我没有引用它
bundle install fails trying to build json 1.4.6 - which I'm not referencing
我正在尝试 运行 在 ruby 项目上进行捆绑安装,但失败并出现以下错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/chrismc/.rvm/rubies/ruby-2.1.0/bin/ruby -r ./siteconf20150317-85350-hx8dcj.rb extconf.rb
checking for re.h... no
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling parser.c
parser.rl:165:20: error: expected '(' after 'if'
if RTEST(rb_funcall(klass, i_json_creatable_p, 0)) {
^
/Users/chrismc/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/ruby/ruby.h:437:18: note: expanded from macro 'RTEST'
#define RTEST(v) !(((VALUE)(v) & ~Qnil) == 0)
^
1 error generated.
make: *** [parser.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/chrismc/.rvm/gems/ruby-2.1.0/gems/json-1.4.6 for inspection.
Results logged to /Users/chrismc/.rvm/gems/ruby-2.1.0/extensions/x86_64-darwin-14/2.1.0/json-1.4.6/gem_make.out
An error occurred while installing json (1.4.6), and Bundler cannot continue.
Make sure that `gem install json -v '1.4.6'` succeeds before bundling.
我正在使用 rvm,我已经在 Ruby 的几个不同版本上尝试过,结果相似。
我没有在项目的任何地方引用 json 1.4.6。
我不清楚为什么 bundler 甚至试图安装这个 gem,更不用说如何解决这个问题了。我同样无法使用 "gem install."
安装 gem
我的 OS 是 Mac OSX.
gemenv的输出如下:
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.6
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin14.0]
- INSTALLATION DIRECTORY: /Users/chrismc/.rvm/gems/ruby-2.1.0
- RUBY EXECUTABLE: /Users/chrismc/.rvm/rubies/ruby-2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /Users/chrismc/.rvm/gems/ruby-2.1.0/bin
- SPEC CACHE DIRECTORY: /Users/chrismc/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/chrismc/.rvm/rubies/ruby-2.1.0/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/chrismc/.rvm/gems/ruby-2.1.0
- /Users/chrismc/.rvm/gems/ruby-2.1.0@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/chrismc/.rvm/gems/ruby-2.1.0/bin
- /Users/chrismc/.rvm/gems/ruby-2.1.0@global/bin
- /Users/chrismc/.rvm/rubies/ruby-2.1.0/bin
- /Users/chrismc/.rvm/bin
- /usr/local/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
我不知道如何继续。
您的编译器设置似乎有问题,而且您使用的是过时的 Ruby 版本。
解析器文件不应该有那个错误,不太可能(恕我直言)是因为你的 Ruby 版本,或者 JSON。您更有可能尝试使用不正确的编译器进行编译。
你能安装纯 JSON gem 吗?
gem install json-pure
你能安装当前的 JSON 本机 gem 吗?
gem install json -v "1.8.2"
如果您能够同时安装:
然后下一个要看的地方是什么迫使旧 json gem。
阅读你的 Gemfile.lock,并寻找较旧的 json gem。
此外,最好将 Gemfile 中的所有内容更新为最新的,例如将固定到某个版本的任何内容更改为 gem 'foo', '~>x.y.z'
到 gem 'foo', '>= x.y.z'
然后 运行 bundle update
以发现会发生什么。如果 gem 版本与您自己的代码库不兼容,您可能需要稍后恢复 Gemfile。
如果您可以安装纯 gem,但不能安装当前的本机 gem:
- 然后下一个要检查的地方是你的编译器。
你能安装当前的 Ruby 吗?
rvm install ruby --latest
如果是,是否解决了 JSON 问题?
你的 GCC 在哪里?
command -v gcc
这是什么版本?
gcc --version
Configured with:
--prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix
您的错误消息表明结果已记录到此文件:
/Users/chrismc/.rvm/gems/ruby-2.1.0/extensions/x86_64-darwin-14/2.1.0/json-1.4.6/gem_make.out`
你能 post 整个文件吗?
(如果您担心该文件包含半私人信息,请随时将其 post 私密或通过电子邮件发送;我在 GitHub 上 "joelparkerhenderson",Google, 等等)
这个问题的答案是 chefspec gem 间接要求 json 1.4.6。碰巧我在这段代码中不需要 chefspec,所以我可以简单地删除引用并继续我的业务。
如果我需要,我不知道如何实际使用 chefspec。
我正在尝试 运行 在 ruby 项目上进行捆绑安装,但失败并出现以下错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/chrismc/.rvm/rubies/ruby-2.1.0/bin/ruby -r ./siteconf20150317-85350-hx8dcj.rb extconf.rb
checking for re.h... no
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling parser.c
parser.rl:165:20: error: expected '(' after 'if'
if RTEST(rb_funcall(klass, i_json_creatable_p, 0)) {
^
/Users/chrismc/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/ruby/ruby.h:437:18: note: expanded from macro 'RTEST'
#define RTEST(v) !(((VALUE)(v) & ~Qnil) == 0)
^
1 error generated.
make: *** [parser.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/chrismc/.rvm/gems/ruby-2.1.0/gems/json-1.4.6 for inspection.
Results logged to /Users/chrismc/.rvm/gems/ruby-2.1.0/extensions/x86_64-darwin-14/2.1.0/json-1.4.6/gem_make.out
An error occurred while installing json (1.4.6), and Bundler cannot continue.
Make sure that `gem install json -v '1.4.6'` succeeds before bundling.
我正在使用 rvm,我已经在 Ruby 的几个不同版本上尝试过,结果相似。
我没有在项目的任何地方引用 json 1.4.6。
我不清楚为什么 bundler 甚至试图安装这个 gem,更不用说如何解决这个问题了。我同样无法使用 "gem install."
安装 gem我的 OS 是 Mac OSX.
gemenv的输出如下:
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.6
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin14.0]
- INSTALLATION DIRECTORY: /Users/chrismc/.rvm/gems/ruby-2.1.0
- RUBY EXECUTABLE: /Users/chrismc/.rvm/rubies/ruby-2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /Users/chrismc/.rvm/gems/ruby-2.1.0/bin
- SPEC CACHE DIRECTORY: /Users/chrismc/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/chrismc/.rvm/rubies/ruby-2.1.0/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/chrismc/.rvm/gems/ruby-2.1.0
- /Users/chrismc/.rvm/gems/ruby-2.1.0@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/chrismc/.rvm/gems/ruby-2.1.0/bin
- /Users/chrismc/.rvm/gems/ruby-2.1.0@global/bin
- /Users/chrismc/.rvm/rubies/ruby-2.1.0/bin
- /Users/chrismc/.rvm/bin
- /usr/local/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
我不知道如何继续。
您的编译器设置似乎有问题,而且您使用的是过时的 Ruby 版本。
解析器文件不应该有那个错误,不太可能(恕我直言)是因为你的 Ruby 版本,或者 JSON。您更有可能尝试使用不正确的编译器进行编译。
你能安装纯 JSON gem 吗?
gem install json-pure
你能安装当前的 JSON 本机 gem 吗?
gem install json -v "1.8.2"
如果您能够同时安装:
然后下一个要看的地方是什么迫使旧 json gem。
阅读你的 Gemfile.lock,并寻找较旧的 json gem。
此外,最好将 Gemfile 中的所有内容更新为最新的,例如将固定到某个版本的任何内容更改为
gem 'foo', '~>x.y.z'
到gem 'foo', '>= x.y.z'
然后 运行bundle update
以发现会发生什么。如果 gem 版本与您自己的代码库不兼容,您可能需要稍后恢复 Gemfile。
如果您可以安装纯 gem,但不能安装当前的本机 gem:
- 然后下一个要检查的地方是你的编译器。
你能安装当前的 Ruby 吗?
rvm install ruby --latest
如果是,是否解决了 JSON 问题?
你的 GCC 在哪里?
command -v gcc
这是什么版本?
gcc --version
Configured with:
--prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix
您的错误消息表明结果已记录到此文件:
/Users/chrismc/.rvm/gems/ruby-2.1.0/extensions/x86_64-darwin-14/2.1.0/json-1.4.6/gem_make.out`
你能 post 整个文件吗?
(如果您担心该文件包含半私人信息,请随时将其 post 私密或通过电子邮件发送;我在 GitHub 上 "joelparkerhenderson",Google, 等等)
这个问题的答案是 chefspec gem 间接要求 json 1.4.6。碰巧我在这段代码中不需要 chefspec,所以我可以简单地删除引用并继续我的业务。
如果我需要,我不知道如何实际使用 chefspec。