优化Debian/Ubuntu下的ruby

我们都知道Debian/Ubuntu通过apt-get安装的ruby包很慢(参考:各种Ruby实现的性能评测修正版本

 

通常我们都是通过自己从www.ruby-lang.org上下载源码并编译安装ruby来绕过这个问题,并且自己编译还可以打上各种补丁,比如这个(解决ruby 内存泄漏的超级大补丁发布啦

 

但是自己编译的ruby不能被dpkg -l识别,debian/ubuntu系统中有些包是依赖于ruby包的,安装这些软件包会要求安装ruby包,这样系统中就有两个(或者更多)ruby。虽然这在大部分情况下都不是问题,但是有些脚本在开头不是使用env来获得ruby而是hardcode #/usr/bin/ruby,这个时候就有问题了。

 

debian/ubuntu apt-get得到的ruby(v1.8.7.72) 之所以会有性能问题(慢50%),是因为仓库中的是debug版本,而且编译目标是i486平台,拖累了性能,我们可以通过去掉调试标志,指定到i686平台,重新编译deb包来解决这个问题。

 

1)  准备编译依赖包:

    sudo apt-get build-dep ruby1.8

 

2)  取得deb包源码:

   mkdir -p ~/build && cd ~/build

   apt-get source ruby1.8

 

3) 修改编译参数:

    cd ~/build/ruby1.8-1.8.7.72/debian

    修改rule文件,去掉CFLAGS中的"-g ", 并在头部加上:

 

export DEB_BUILD_GNU_TYPE=i686-linux-gnu
export DEB_BUILD_GNU_CPU=i686
export DEB_HOST_GNU_CPU=i686
export DEB_HOST_GNU_TYPE=i686-linux-gnu
 

 

4) 编译:

    cd ~/build/ruby1.8-1.8.7.72 && debuild -uc -us

 

5) 安装:

    cd ~/build && sudo dpkg -i *.deb

 

 

如果要打其他补丁(如MBARI补丁),可以在步骤3和4之间进行。

 

这样,系统中就只有一份本地编译优化过的ruby,所有使用到ruby的包都将受益。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值