[Ruby]debian上更新gem

用Rails的时候需要配环境,配环境的大头是安装gem,安装gem的时候就会遇到各种令人崩溃的问题…Orz…

环境是Debian,需要安装refinerycms,出现了gem版本过低的错误。
比较通用的做法是

$gem update --system

但是可能会遇到这个错误

ERROR:  While executing gem ... (RuntimeError)
    gem update --system is disabled on Debian. 
RubyGems can be updated using the official Debian
repositories by aptitude or apt-get.

这种情况下就需要自己动手。

这里需要安装的是gem 1.3.6的版本。

先得到rubygems-update-1.3.6.gem,可以直接下载得到

$wget http://gems.rubyforge.org/gems/rubygems-update-1.3.6.gem

然后安装这个叫作rubygems-update的gem

$sudo gem install rubygems-update-1.3.6.gem 

也可以

$sudo gem install rubygems-update -v=1.3.6

然后执行update_rubygems这个脚本
这个文件的位置由之前gem的设定而定。

$which update_rubygems 
/home/XXX/.gem/bin/update_rubygems

执行这个脚本update_rubygems

$sudo /home/haoxiang/.gem/bin/update_rubygems

如果遇到错误

/usr/local/lib/site_ruby/1.8/rubygems.rb:777:in `report_activate_error': Could not find RubyGem rubygems-update (>= 0) (Gem::LoadError)
	from /usr/local/lib/site_ruby/1.8/rubygems.rb:211:in `activate'
	from /usr/local/lib/site_ruby/1.8/rubygems.rb:1056:in `gem'
	from /home/haoxiang/.gem/bin/update_rubygems:18

可以试着先

$su

以root身份执行

$/home/haoxiang/.gem/bin/update_rubygems

[技巧]ERROR NoMethodError 和 Failed to build gem native extension

用Rails遇到的两个错误和解决办法,目前还是不尽其所以然,先记下。

1.用Webrick起Server的时候,刷新页面的时候遇到如下错误
ERROR NoMethodError: private method `gsub!’ called

参考http://www.ruby-forum.com/topic/206225

换mongrel做Web Server
$./scripte/server mongrel 即可
需要安装mongrel
$gem install mongrel

2.安装gem的时候遇到如下错误
ERROR: Failed to build gem native extension.

参考http://stackoverflow.com/questions/43778/sqlite3-ruby-gem-failed-to-build-gem-native-extension

环境是Ubuntu,需要安装ruby对应的dev包
$sudo apt-get install ruby1.8-dev