由于ruby的内存泄漏很严重,我在网上也找到了不少资料,为了利用已有的成果(打补丁什么地:解决ruby内存泄漏的超级大补丁发布啦 ),我就来了个蛮力ruby版本升级。
Ruby 1.8.6 p111
gem
通过外部安装了Redland ruby api
另外通过gem install安装了:
*** LOCAL GEMS ***
actionmailer (2.1.2)
actionpack (2.1.2)
activerecord (2.1.2)
activeresource (2.1.2)
activesupport (2.1.2)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.1)
gem_plugin (0.2.3)
mongrel (1.1.5)
mongrel_cluster (1.0.5)
mysql (2.7)
nokogiri (1.2.3)
rails (2.1.2)
rake (0.8.4)
ruby-ole (1.2.8.2)
现在需要对Ruby进行升级,并要求:
- 替换掉原来的Ruby版本
- 保证已有的gem包正常使用
- 外部安装的工具可以继续使用(最后我是没有实现,重新安装了一遍Redland)
- 各个已有工具可以继续开发
首先当然是下载通用版本Ruby 1.8.7p72和外部补丁,并按照补丁安装规程进行基本的配置。
2、下载MBARI补丁,并且解压缩
3、执行命令:MBARIp72patches/apply ruby-1.8.7-p72 打补丁
再通过以上操作后,现在我们需要编译了。
通过apt-get安装的工具中ruby是被放在/usr/lib/ruby里面的,所以在configure时候需要加入相关参数。
#如果是gcc3.3版本,要去掉 -fno-stack-protector编译参数;如果是64位机器,-mpreferred-stack-boundary=4才行。
make
在做完这些工作后,有很多朋友就开始考虑安装了,在这个时候大家需要小心,仔细参看gem安装文件中是否有完整的rubygems包,如果没有需要安装。(关系到Ruby gem的使用问题 ,详情可见:在mac上安装多个版本的ruby )
我这里没有,于是就通过gem install 安装了一个,现在的gem有
*** LOCAL GEMS ***
actionmailer (2.1.2)
actionpack (2.1.2)
activerecord (2.1.2)
activeresource (2.1.2)
activesupport (2.1.2)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.1)
gem_plugin (0.2.3)
mongrel (1.1.5)
mongrel_cluster (1.0.5)
mysql (2.7)
nokogiri (1.2.3)
rails (2.1.2)
rake (0.8.4)
ruby-ole (1.2.8.2)
rubygems-update (1.3.3)
现在大家可以放心大胆的安装了
sudo make install
然后我们现在看看ruby的版本吧
ruby -v
ruby 1.8.7 (2009-3-1 mbari 8B/0x8770 on patchlevel 72) [i686-linux]
安装完毕,现在开始清理工作。
ruby1.8 -v
很郁闷这个的版本没有变化,还是老版本,处理掉:
sudo rm /usr/bin/ruby1.8
sudo ln -s /usr/bin/ruby /usr/bin/ruby1.8
现在开始恢复rubygems,进入rubygems-update的目录,然后执行
sudo ruby setup.rb
这样一来我们的rubygems就可以使用了。
最后,至少我这里还需要重新安装下redland.(希望有朋友能给出好的解决办法)