下面是借用网上的结果,我复制文本的时候,putty崩溃了,提示主要内容一样:
  1. /home/michell/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20160425-25421-vzm9hx.rb extconf.rb
  2. creating Makefile
  3. make "DESTDIR=" clean
  4. make "DESTDIR="
  5. compiling generator.c
  6. In file included from generator.c:1:0:
  7. ../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’:
  8. ../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given
  9. VALUE result = rb_str_new(FBUFFER_PAIR(fb));
  10. ^
  11. ../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast [enabled by default]
  12. VALUE result = rb_str_new(FBUFFER_PAIR(fb));
  13. ^
  14. make: *** [generator.o] Error 1
  15. make failed, exit code 2
原因:
json1.8.1跟ruby2.2不兼容,要回到ruby2.1。
但是rubygem不支持2.1,无论哪个ports,在make时都会出现ruby2.2.5的编译。

于是又回到一个古老的问题:在FreeBSD下,如何强制使用一个软件的版本?

不是所有的软件都支持版本的选项,但是常用的几个大语言是可以的,在/usr/ports/Mk/目录下,一大堆mk文件,里面基本上都有版本的说明。

对于ruby,可以看bsd.ruby.mk
 
  1. vi /usr/ports/Mk/bsd.ruby.mk
  2. # RUBY_VER - (See below)
  3. # RUBY_DEFAULT_VER - Set to (e.g.) "1.9" if you want to refer to "ruby19"
  4. # just as "ruby".
  5. # RUBY_ARCH - (See below)
  6. # RUBY_RD_HTML - Define if you want HTML files generated from RD files.
  7. #
  8. #
对照说明添加一行就可以了:
RUBY_DEFAULT_VER=2.1

效果也是可见的:每次ports开始编译ruby相关的文件,都会抱怨一句:您已经强制使用ruby版本,我在乖乖地遵从您的指示!










---end---



12-17 19:01