<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d3443179681250049771\x26blogName\x3dNewbie+On+Rails\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLACK\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://l404.blogspot.com/search\x26blogLocale\x3dzh_CN\x26v\x3d2\x26homepageUrl\x3dhttp://l404.blogspot.com/\x26vt\x3d-4382633446460227058', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Newbie On Rails

方便初学Rails的朋友们快速上手并驶入BDD敏捷之道。

在Ubuntu8.10上编译安装Ruby-1.8.7-p72

2009年1月24日星期六

1. 卸载系统原apt-get安装过的Ruby及其依赖包(若系统未安装过Ruby可跳过此步骤)

$ sudo apt-get remove --purge ruby
$ sudo apt-get autoremove


2. 卸载完毕后,为Ruby构建并安装所需的依赖包

$ sudo apt-get build-dep ruby1.8


3. 下载Ruby源码包并解压

$ cd ~/downloads/
$ wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
$ tar -xvzf ruby-1.8.7-p72.tar.gz


4.下载Ruby内存泄漏的补丁包到~/downloads目录,解压后应用补丁

$ tar -xvzf ~/downloads/MBARIp72patches.tar.gz
$ ~/downloads/MBARIp72patches/apply ~/downloads/ruby-1.8.7-p72
$ cd ruby-1.8.7-p72


5. 优化编译选项

下面export开头的4句针对我本机CPU(基于Intel i686指令集)进行最佳化参数设定,Ruby源码包默认会编译成i486-linux,尽管i686向下兼容,还是物尽其用的好。

$ 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

CFLAGS的值设置了打上补丁的编译参数,./configure --prefix指定了Ruby的安装目录。如果系统GCC编译器版本较旧,要去掉 -fno-stack-protector;如果软硬件环境都是64位,-mpreferred-stack-boundary=4才行。

$ CFLAGS="-O2 -fno-stack-protector -mpreferred-stack-boundary=2" ./configure --prefix=$HOME/programs/ruby-1.8.7-p72


6. 编译源代码,测试安装可行后执行安装

$ make
$ make test
$ make install


7. 添加到环境变量

$ gedit ~/.profile

在~/.profile文件末尾添加如下两句:

export RUBY_HOME=$HOME/programs/ruby-1.8.7-p72

export PATH=$RUBY_HOME/bin:$PATH

注销后重新登录。

若存在$HOME/bin目录也可如下创建符号链接:

$ ln -s ~/programs/ruby-1.8.7-p72/bin/* ~/bin

不推荐这种方式,因为在安装rubygems和其他gem包的时候其可执行文件会在~/programs/ruby-1.8.7-p72/bin目录创建一个副本;与其每次将该副本链接到~/bin目录还不如将~/programs/ruby-1.8.7-p72/bin目录添加到环境变量的查找路径中去。


8. 检查是否安装成功

$ ruby -v
ruby 1.8.7 (2009-1-18 MBARI 7/0x4770 on patchlevel 72) [i686-linux]

上述输出说明已成功地装上了Ruby并打上了Ruby内存泄漏的补丁包。


9. 接下来安装Ruby的软件包管理器——rubygems

$ cd ~/downloads
$ wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
$ tar -xzvf rubygems-1.3.1.tgz
$ cd rubygems-1.3.1
$ ruby setup.rb
$ gem -v
$ gem install rubygems-update
$ gem update --system


10. 清理掉无用目录

$ rm -rf ~/downloads/ruby-1.8.7-p72
$ rm -rf ~/downloads/MBARIp72patches
$ rm -rf ~/downloads/rubygems-1.3.1


相关阅读:

ruby内存泄漏的罪魁祸首 - 幽灵指针
解决ruby内存泄漏的超级大补丁发布啦
优化Debian/Ubuntu下的ruby
解决Ruby内存泄露的补丁MBARI已经开始被合并到Ruby源代码树

标签: , , , , , ,

3 条评论

  1. Blogger 404 Says:

    Ruby 1.8纤程补丁
    http://timetobleed.com/fibers-implemented-for-ruby-1867/

  1. Blogger 404 Says:

    在Ubuntu8.10上编译安装Ruby1.9.1(http://gist.github.com/62452

    cd ~/downloads
    wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2
    tar -xvfj ruby-1.9.1-p0.tar.bz2
    cd ruby-1.9.1-p0
    ./configure --prefix=$HOME/programs/ruby-1.9.1-p0 --program-suffix=19 --enable-shared
    make && make test
    make install
    rm -rf ~/downloads/ruby-1.9.1-p0

  1. Blogger 404 Says:

    How To Install A Ruby 1.8 Stack on Ubuntu 8.10 From Scratch

» Leave a Reply

订阅 博文评论 [Atom]

« 主页