所以我安装Redmine并在安装完所有先决条件后,下一步是(我的家是/ home / sbh /)
/home/sbh/SW/Ruby/dev/execprefix/bin/bundle install --path vendor/bundle --without development test
导致(几个)错误,例如;
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /home/sbh/SW/Redmine/redmine/vendor/bundle/ruby/2.4.0
/gems/sqlite3-1.3.11/ext/sqlite3
/home/sbh/SW/Ruby/dev/execprefix/bin/ruby -r
./siteconf20160904-12703-1l1dktl.rb extconf.rb
mkmf.rb can't find header files for ruby at /home/sbh/SW/Ruby
/dev/execprefix/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /home/sbh/SW/Redmine/redmine/vendor
/bundle/ruby/2.4.0/gems/sqlite3-1.3.11 for inspection.
Results logged to /home/sbh/SW/Redmine/redmine/vendor/bundle/ruby/2.4.0
/extensions/x86_64-linux/2.4.0-static/sqlite3-1.3.11/gem_make.out
An error occurred while installing json (1.8.3), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.3'` succeeds before bundling.
(我使用vendor / bundle因为我试图保持Ruby的东西处理redmine本地 - 如果我理解gem帮助正确安装的话)所以我试试这个;
sbh@sbh-laptop-M18 ~/SW/Redmine/redmine $ /home/sbh/SW/Ruby
/dev/execprefix/bin/gem install json -v '1.8.3'
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
current directory: /home/sbh/SW/Ruby/dev/execprefix/lib/ruby/gems/2.4.0
/gems/json-1.8.3/ext/json/ext/generator
/home/sbh/SW/Ruby/dev/execprefix/bin/ruby -r
./siteconf20160904-13928-17xfuw8.rb extconf.rb
mkmf.rb can't find header files for ruby at /home/sbh/SW/Ruby
/dev/execprefix/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /home/sbh/SW/Ruby/dev/execprefix
/lib/ruby/gems/2.4.0/gems/json-1.8.3 for inspection.
Results logged to /home/sbh/SW/Ruby/dev/execprefix/lib/ruby/gems/2.4.0
/extensions/x86_64-linux/2.4.0-static/json-1.8.3/gem_make.out
我确实检查过该位置不好,即使最低的文件夹也不存在,即(没有 / include / );
sbh@sbh-MacBookPro ~ $ ls /home/sbh/SW/Ruby/dev/execprefix/lib/ruby/
2.4.0 gems site_ruby vendor_ruby
此外, make check 在svn中构建Ruby成功了(我理解这是dev分支,所以我不知道为什么我需要apt-get install任何ruby-devs);
svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby
所以我这样做了;
find . -name ruby.h -print -exec ls -Alrt {} \;
产生四个文件;
sbh@sbh-laptop-M18 ~/SW/Ruby $ find . -name ruby.h -print -exec ls
-Alrt {} \;
./dev/ruby/include/ruby.h
-rw-r--r-- 1 sbh sbh 868 Sep 4 20:29 ./dev/ruby/include/ruby.h
./dev/ruby/include/ruby/ruby.h
-rw-r--r-- 1 sbh sbh 77600 Sep 4 20:29 ./dev/ruby/include/ruby/ruby.h
./dev/prefix/include/ruby-2.4.0/ruby.h
-rw-r--r-- 1 sbh sbh 868 Sep 4 20:29 ./dev/prefix/include/ruby-
2.4.0/ruby.h
./dev/prefix/include/ruby-2.4.0/ruby/ruby.h
-rw-r--r-- 1 sbh sbh 77600 Sep 4 20:29 ./dev/prefix/include/ruby-
2.4.0/ruby/ruby.h
我不知道为什么有四个或两个根据大小判断,虽然我不认为它们是链接...(?)所以我添加到〜/ .profile ,位于底部;
export LD_LIBRARY_PATH=/home/sbh/SW/Ruby/dev/prefix/include/ruby-
2.4.0/ruby/
export LD_LIBRARY_PATH=/home/sbh/SW/Ruby/dev/ruby/include/ruby/
然后运行 sudo ldconfig 和 source~ / .profile 。但是在关闭终端并再次启动它之后它仍然无法工作。
互联网产生了这些想法;
Error while installing json gem 'mkmf.rb can't find header files for ruby',
nokogiri will not install - ERROR: Failed to build gem native extension,
`require': no such file to load -- mkmf (LoadError)
但他们似乎都希望OP能够 sudo apt-get install ruby-dev ,而我只想解决我的本地树问题。 - 所以没有apt-get。
难道这不是超级简单吗?或者Redmine以某种方式期望这些头文件的某个路径?对于默认的Ruby安装,有些东西可能是硬编码的吗?
有什么想法吗?
P.S。我想要一个本地的'像Anaconda / Python一样构建Ruby ......
P.P.S。我也意识到我也可以使用apt-get只将包下载到存档,然后使用dpkg或ar提取文件,然后将它们移动到我的Ruby安装中(我想也是一个路径),但没有添加任何新的PPA,我的默认源只覆盖ruby2.3-dev而我的svn拉2.4。我不知道是否有什么不同但我不知道为什么我无法从ruby-lang.org获得所有内容...
P.P.P.S。在构建Ruby时,我把所有东西放在这里;
./configure --prefix=/home/sbh/SW/Ruby/dev/prefix
--exec-prefix=/home/sbh/SW/Ruby/dev/execprefix
--oldincludedir=/home/sbh/SW/Ruby/dev/oldincludedir
答案 0 :(得分:1)
您正在使用the new-and-shiny 2.4.0。
它最近得到了一个“统一整数类型”,它将BigDecimal和Fixnum组合成整数。
您的项目依赖于the json rubygem,这也是基于C的扩展。 json gem v1.8.3不知道处理数字的新方法。
以下是如何要求json gem的更新版本:
在你的Gemfile中,添加:
gem 'json', '~> 2.0', '>= 2.0.2'
(可以理解为“至少2.0.x系列”,还有“至少2.0.2”。)
希望这有帮助!
PS:Here is a typical patch更新了这种处理数字的新方式的基于C的扩展。
PPS:解决方法是使用ruby-build并自己构建一个Ruby 2.3.1,它将支持Redmine默认安装的gem版本。