在Ruby旧版本上进行升级

本文分享了解决Ruby内存泄漏问题的经验,通过升级Ruby版本至1.8.7并应用MBARI补丁来修复内存泄漏。文章详细记录了升级过程中的步骤及注意事项,包括编译配置、gem包管理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于ruby的内存泄漏很严重,我在网上也找到了不少资料,为了利用已有的成果(打补丁什么地:解决ruby内存泄漏的超级大补丁发布啦 ),我就来了个蛮力ruby版本升级。

原先的系统环境 写道
原先的系统各个工具均来自apt-get,所以有如下基本安装的东西:
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进行升级,并要求:

  1. 替换掉原来的Ruby版本
  2. 保证已有的gem包正常使用
  3. 外部安装的工具可以继续使用(最后我是没有实现,重新安装了一遍Redland)
  4. 各个已有工具可以继续开发

首先当然是下载通用版本Ruby 1.8.7p72和外部补丁,并按照补丁安装规程进行基本的配置。

基本步骤 写道
1、下载ruby 1.8.7-p72,并且解压缩
2、下载MBARI补丁,并且解压缩
3、执行命令:MBARIp72patches/apply ruby-1.8.7-p72 打补丁

 再通过以上操作后,现在我们需要编译了。

通过apt-get安装的工具中ruby是被放在/usr/lib/ruby里面的,所以在configure时候需要加入相关参数。

配置并编译 写道
CFLAGS="-O2 -fno-stack-protector -mpreferred-stack-boundary=2" ./configure --prefix=/usr/lib
#如果是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.(希望有朋友能给出好的解决办法)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值