如何在没有外网的机器上安装gem

本文将简单介绍如何在没有外网的机器上安装Cucumber小黄瓜自动化测所需的gem库。

1. 软件安装(Jenkins机器)

  • 安装Jumbo
1
bash -c "$( curl http://jumbo.baidu.com/install_jumbo.sh )"; source ~/.bashrc
  • 安装Ruby 1.9.3
1
jumbo install ruby
  • 安装svn
1
jumbo install subversion

2. 在无外网的Jenkins服务器(或者Slave机)上安装Gem

  • 在jenkins机器上,选择一个合适的文件夹。从svn上下载小黄瓜所依赖的gem
1
svn export https://svn.baidu.com/app-test/ecom/shifen/sf-crm/trunk/weigou/cuke_gems/
  • cd cuke_gems至刚刚下载的文件夹中。运行如下指令,会先安装bundler这个gem
1
gem install --local bundler-1.3.4.gem
  • 安装完成后,运行以下指令。
1
bundle install --local 

3. 添加新的Gem

  • 如果需要添加新的gem的话,找一台有外网的机器。(如果Jenkins或者Slave机器是Linux机器,就得用Linux机器,是Windows就得用Windows机器。)
  • co之前的gem库。
1
svn co https://svn.baidu.com/app-test/ecom/shifen/sf-crm/trunk/weigou/cuke_gems/
  • cd cuke_gems至刚下载的文件夹中,修改Gemfile,添加新的gem。(最好能选定gem的版本)例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
source 'http://rubygems.org'

gem 'json', '1.7.3'
gem 'bundler', '1.3.4'

# 添加新Gem示例 <------
gem 'new_gem', '0.0.1'

group :test do
  gem 'cucumber', '1.2.1'
  gem 'rspec', '2.11.0'
  gem 'httparty', '0.8.3'
  gem 'rest-client', '1.6.7'
end
  • 添加完成后,运行bundle install,然后运行bundle package。这样bundler就会生成新添加的gem.gem文件以提供本地安装了。
  • 把更新后的代码提交至svn
1
svn commit -m "add new gem(s)"
  • 最后重复上文第2大点中的步骤,就能更新Jenkins机器上的gem库了。

附录

  • bundler是给gem打包的一个gem,所以在上文中先安装了bundler,然后让bundler去本地安装其他的gem
  • 更多关于Gemfile的使用方法,可以参考官方网站
  • 所有.gem文件都可以在rubygems.org上下载到。其中包括gem的所有历史版本。
  • 如有更多问题,发送email至lengyu@baidu.com

Comments