论坛首页 入门技术论坛

在Ruby旧版本上进行升级

浏览 2932 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-18   最后修改:2009-05-18

由于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.(希望有朋友能给出好的解决办法)

 

   发表时间:2009-05-19  

When I type script/console, I get this error:

  [root@trebek2 readline]# /usr/local/bin/myapp/script/console
  Loading development environment.
   /usr/local/lib/ruby/1.8/irb/completion.rb:10:in `require': no such file to load -- readline (LoadError)
           from /usr/local/lib/ruby/1.8/irb/completion.rb:10
           from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `require'
            from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `load_modules'
            from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `each'
            from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `load_modules'
           from /usr/local/lib/ruby/1.8/irb/init.rb:21:in `setup'
         from /usr/local/lib/ruby/1.8/irb.rb:54:in `start'
        from /usr/local/bin/irb:13

 也就是说rails的script/console无法运行。

这个时候需要安装些东西啦。

详情:http://railsforum.com/viewtopic.php?id=14452

sudo apt-get install libncurses5-dev libreadline5-dev
#go to the <ruby_src>/ext/readline,
ruby extconv.rb    #generate valid makefile
make
sudo make install
 
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics