在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
相关阅读:
$ 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
相关阅读:
标签: Compile, Memory-Leaks, Optimize, Patch, Performance, Ruby, Ubuntu
2009年2月8日 18:48
Ruby 1.8纤程补丁
http://timetobleed.com/fibers-implemented-for-ruby-1867/