`

在Ruby旧版本上进行升级

阅读更多

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

 

分享到:
评论
1 楼 qianjigui 2009-05-19  
<p>When I type script/console, I get this error:</p>
<pre name="code" class="java">  [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
</pre>
<p> 也就是说rails的script/console无法运行。</p>
<p>这个时候需要安装些东西啦。</p>
<p>详情:http://railsforum.com/viewtopic.php?id=14452</p>
<pre name="code" class="Shell">sudo apt-get install libncurses5-dev libreadline5-dev
#go to the &lt;ruby_src&gt;/ext/readline,
ruby extconv.rb    #generate valid makefile
make
sudo make install</pre>
 

相关推荐

    ruby 1.8.7 rails 2.3.4

    标题 "ruby 1.8.7 rails 2.3.4" 提及的是 Ruby 语言的一个较旧版本(1.8.7)以及与其兼容的 Rails 框架的老版本(2.3.4)。Ruby 是一种面向对象的、动态类型的编程语言,而 Rails 是一个基于 MVC(模型-视图-控制器...

    ruby-1.8.6.zip

    在 Ruby 1.8.6 中,我们可以看到许多现代 Ruby 特性的前身,同时也有一些与最新版本的差异。 1. **面向对象编程**:Ruby 的核心特性之一是其强烈的面向对象设计。在 1.8.6 中,每一个数据类型都是一个对象,包括...

    Ruby资源ruby-v3.1.1.zip

    本资源“ruby-v3.1.1.zip”包含了Ruby的最新版本3.1.1,这是一个重要的里程碑,因为它引入了新特性、性能优化以及对旧版本的改进。 在Ruby 3.1.1中,开发者可以期待以下关键特性: 1. **块参数解构**:Ruby 3.1...

    ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)

    在Ruby 1.8.x系列中,1.8.7是最常用的一个版本,因为它对性能进行了优化,同时兼容了许多当时的库和框架。Ruby 1.8.7引入了块参数、内建的JSON支持以及改进的错误处理机制等,使得开发者能够更高效地编写代码。 ...

    ruby 1.8.5 .tgz

    总之,虽然 Ruby 1.8.5 在当时是一个重要的里程碑,但为了保持软件的稳定性和安全性,建议升级到较新的 Ruby 版本。对于那些必须维护旧项目的开发者,理解并处理与旧版 Ruby 相关的问题至关重要。

    ruby-1.9.2-p290.tar.gz

    在标签中再次提到了"ruby-1.9.2-p290.tar.gz",这可能表明该文件是针对特定环境或用途的,比如在服务器上安装或升级Ruby版本,或者为了兼容旧项目的运行。 至于"ruby-1.9.2-p290"这个子文件名,它应该包含了完整的...

    关于Ruby和Gnuplot的配置说明

    安装过程中,用户可以选择不同版本的Ruby,但在较旧的操作系统如Windows XP上,可能需要选择兼容性更好的旧版本,如2.0版。安装完成后,用户应该使用“Start Command Prompt with Ruby”命令来启动命令行窗口,这...

    Ruby-versionist一个插件用于版本化基于Rails的RESTfulAPIs

    如果不进行版本控制,这些更改可能会破坏依赖于旧API接口的客户端应用。Ruby-versionist插件就是为了解决这个问题,它允许开发者在不中断现有用户的情况下,为Rails应用程序添加新的API版本。 首先,让我们深入了解...

    ruby-1.8.6-p114.tar.gz

    对于仍在使用Ruby 1.8.6的项目,可能需要考虑升级以获取最新的安全补丁和性能提升,因为旧版本可能不再受到官方的支持。 8. **移植和迁移**:对于仍需维护使用Ruby 1.8.6的项目,可能需要考虑代码的现代化和向新...

    安装Ruby On Rails所需的部分资源

    为了获得更好的安全性和功能支持,建议使用最新或至少较新的稳定版本进行开发。同时,对于RMagick,也要考虑使用更新的版本,因为它可能不支持最新的操作系统或Ruby版本。在实际操作中,应始终关注官方文档和社区...

    BitNami的Redmine升级步骤

    - 在一个新的目录中安装新版本的Redmine,或移除旧版本后再安装。 - 注意:新旧版本的安装路径需区分明确。 7. **复制配置文件**: - 将旧版本的`config/configuration.yml`复制到新版本对应的目录下覆盖原有...

    ruby1.9.1文档和一本pdf

    8. **升级指南**:对于从旧版本升级到 1.9.1 的开发者,提供注意事项和迁移策略。 阅读这份文档和 PDF,不仅可以帮助你掌握 Ruby 1.9.1 的核心特性,还能提升你的编程技能,理解编程语言演进背后的设计理念。对于...

    publicsuffix-ruby:基于公共后缀列表的Ruby域名解析器

    对于较旧版本的Ruby,请使用早期版本。 安装 您可以手动安装gem: gem install public_suffix 或使用Bundler并将其定义为Gemfile的依赖Gemfile : gem 'public_suffix' 如果要升级到2.0,请参见 。 用法 从名称...

    node-sass4.14.1和5.0.0版本.zip

    这反映了Node-SASS团队对保持项目现代化和安全性的承诺,但也可能给还在使用旧版本Node.js的开发者带来一定的迁移成本。 总的来说,Node-SASS的4.14.1和5.0.0版本在功能、性能和兼容性方面都有显著的区别。4.14.1...

    tmail各版本打包

    3. **版本升级**:若需升级Tmail,需要先卸载旧版本(如有),再安装新版本。同时,检查新版本的更新日志,理解其改动,以确保代码的稳定性和兼容性。 4. **文档查阅**:每个版本的Tmail都有相应的API文档和用户...

    2.4-3.0.rubygems.rar

    标题“2.4-3.0.rubygems.rar”暗示了这个压缩包可能包含了Ruby Gems从版本2.4到3.0之间的升级或集合,这对于Ruby开发者来说是一个重要的资源,因为版本升级通常会带来性能优化、新功能以及对旧问题的修复。...

    rubygems-3.2.27.zip

    - **兼容性提升**:可能增强了与不同Ruby版本的兼容性,确保在较新和较旧的Ruby环境中都能良好运行。 - **新特性**:可能会引入新的API或命令行选项,为开发者提供更多便利。 - **安全更新**:可能修复了已知的安全...

    海宏自动升级update系统服务器端源代码.rar

    通常,服务器会保存每个版本的发布日期,当客户端查询时,会比较其当前版本与服务器上的最新版本的时间戳,如果客户端版本较旧,则触发升级流程。 【标签】"自动升级"进一步确认了系统的核心功能,即实现软件的自动...

    Hessian多个版本打包下载

    在进行版本升级时,要注意兼容性问题,确保旧版本的服务仍能正常工作,同时充分利用新版本带来的优势。 总之,Hessian作为一个高效的RPC框架,其不同版本在功能、性能和兼容性上有所不同。通过下载并了解这些版本,...

    Guard是一个命令行工具,可轻松处理文件系统修改中的事件。-Ruby开发

    Guard重要信息:在安装Guard之前,请先升级到Ruby&gt; = 2.4! 要安装较旧版本,请至少更新Bundler 1.12:gem update bundler,并且Bundler应该为您给定的Ruby v Guard正确解析为较早的gem。重要说明:在安装Guard之前...

Global site tag (gtag.js) - Google Analytics