好在还可以在http://手工下载gem文件手动安装,只是各种包依赖有好几十个,一个一个手工下载再安装好辛苦,遂写以下代码自动代我苦力
![](zzz/editor/img/code.gif)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import commands
import os
import re
import urllib
import urllib2
"""
自动下载安装最新版的rails,如果缺少相关的gem包则递归下载相应的gem包,直到安装成功为止
by BCCN.静夜思 2011.11.11
尊重他人劳动,转载请保留本段注释
使用方法:
新建一空文件夹,把本段代码保存为install_rails.py,如
mkdir newdir
cd newdir
sudo python install_rails.py
"""
def getcontent(url):
"""爬虫函数"""
request = urllib2.Request(url)
request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')
try:
content = urllib2.urlopen(request).read()
except Exception, e:
content = e
return content
def install(gem):
if not re.search("%s[\-\d\.]+gem"%gem, str(os.listdir('.')), re.I|re.S):
html = getcontent("http://"%gem)
downurl = re.search('<a href="([^\"]+)" id="download">Download</a>', html, re.I|re.S).groups()[0]
downurl = "http://" + downurl
print "download %s .................."%gem
urllib.urlretrieve(downurl, downurl.rsplit('/',1)[1])
gem_file = re.search("%s[\-\d\.]+gem"%gem, str(os.listdir('.')), re.I|re.S).group()
status, result = commands.getstatusoutput("sudo gem install %s"%gem_file)
if 'ERROR' in result and 'dependencies' in result:
for require_gem in re.findall(' ([0-9a-zA-Z\-]+) \([=~>]', result, re.I|re.S):
install(require_gem)
os.system("sudo gem install %s"%gem_file)
if __name__ == "__main__":
install("rails")
# -*- coding: UTF-8 -*-
import commands
import os
import re
import urllib
import urllib2
"""
自动下载安装最新版的rails,如果缺少相关的gem包则递归下载相应的gem包,直到安装成功为止
by BCCN.静夜思 2011.11.11
尊重他人劳动,转载请保留本段注释
使用方法:
新建一空文件夹,把本段代码保存为install_rails.py,如
mkdir newdir
cd newdir
sudo python install_rails.py
"""
def getcontent(url):
"""爬虫函数"""
request = urllib2.Request(url)
request.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)')
try:
content = urllib2.urlopen(request).read()
except Exception, e:
content = e
return content
def install(gem):
if not re.search("%s[\-\d\.]+gem"%gem, str(os.listdir('.')), re.I|re.S):
html = getcontent("http://"%gem)
downurl = re.search('<a href="([^\"]+)" id="download">Download</a>', html, re.I|re.S).groups()[0]
downurl = "http://" + downurl
print "download %s .................."%gem
urllib.urlretrieve(downurl, downurl.rsplit('/',1)[1])
gem_file = re.search("%s[\-\d\.]+gem"%gem, str(os.listdir('.')), re.I|re.S).group()
status, result = commands.getstatusoutput("sudo gem install %s"%gem_file)
if 'ERROR' in result and 'dependencies' in result:
for require_gem in re.findall(' ([0-9a-zA-Z\-]+) \([=~>]', result, re.I|re.S):
install(require_gem)
os.system("sudo gem install %s"%gem_file)
if __name__ == "__main__":
install("rails")
使用方法:
1、首先确保你的系统装了python(不预装python的linux也不多见
![](images/smilies/emot/em01.gif)
sudo apt-get install python
2、建一个空文件夹,并进入,如mkdir newdir
cd newdir
3、把上面的python代码保存为一个文件,如install_rails.pycd newdir
4、执行
sudo python install_rails.py
此操作可能需要十几至几十分钟5、为安装好的rails加个链接
sudo ln -s /usr/local/ruby/bin/rails /usr/bin/rails
注:
1、此方法会安装ruby on rails最新版,如需安装旧版,需要自己调整代码
2、上面的代码只适合在debian系使用,如ubuntu。如果是redhat、fedora或者windows,根据系统的不同调整下命令即可