Gem 有想搞 Rubygems 镜像的可以试试 rubygems-mirror 和 geminabox

huacnlee · 2011年11月30日 · 最后由 huacnlee 回复于 2017年03月08日 · 9060 次阅读

刚刚测试了一下,两个配合起来用正好,虽然不能搞一个想 http://rubygems.org 那样的站点,但是时间一个简单的 Web 界面 + Gem 安装源是可以的。 而且用起来很简单:

$ git clone git://github.com/huacnlee/rubygems-mirror.git
# 修改 ~/.gems/.mirrorrc 文件成这样
$ cat ~/.gem/.mirrorrc
---
- from: http://rubygems.org
  to: /home/jason/rubygems

# 然后用,就可以将 rubygems.org 里面的 gem 下载回来。
$ cd rubygems-mirror
$ bundle install
$ rake gems:update
Fetching: http://rubygems.org/specs.4.8.gz
Total gems: 158777
........

Geminabox 这个是用来实现 gem 安装源的,用起来不难

$ gem install geminabox
$ mkdir geminabox
$ cat config.ru
require "rubygems"
require "geminabox"

Geminabox.data = "/home/jason/rubygems"
run Geminabox

$ rackup
[2011-11-30 17:09:09] INFO  WEBrick 1.3.1
[2011-11-30 17:09:09] INFO  ruby 1.9.3 (2011-10-30) [x86_64-darwin11.0.0]
[2011-11-30 17:09:09] INFO  WEBrick::HTTPServer#start: pid=23261 port=9292

有了这个,想搞镜像的动手吧!

感谢淘宝的 gem server,可以从国内下载庞大的 gems 了 $ cat ~/.gem/.mirrorrc

---
- from: http://ruby.taobao.org
  to: /home/jason/rubygems

http://ruby-china.org/topics/1092#reply1 的 3 楼回复指的是 client 会请求:/latest_specs.4.8.gz,/quick/Marshal.4.8/pry-0.1.0.gemspec.rzgem mirror 收下来的文件中没有

收到的文件详细列表: % ls -R rubygems | head -10

rubygems: gems/ specs.4.8

rubygems/gems: -1.0.gem _-1.1.gem 1234567890-1.0.gem _-1.2.gem 12_hour_time-0.0.2.gem

~/rubygems/gems 里其他文件都是该形式

看起来你没有按照这篇帖子说的方法来做。 gem mirror 执行的是老版本的方式,我的方式是用 rake mirror:update 来运行的... 请仔细按照本帖的流程操作。

按照本帖流程:

[Login] ray at ftp4 in /home/ray/projects/rubygems-mirror % ls lib/ Rakefile test/ CHANGELOG.rdoc README.rdoc Manifest.txt

% bundle install Could not locate Gemfile

% rake gems:update
rake aborted! Don't know how to build task 'gems:update'

(See full trace by running task with --trace)

% cat ~/.gem/.mirrorrc

7 楼 已删除

** README.rdoc is missing or in the wrong format for auto-intuiting. run sow blah and look at its text files #= 0) amongst [builder-3.0.0, bundler-1.2.0, geminabox-0.7.0, hoe-2.12.5, httpclient-2.2.7, net-http-persistent-2.3.3, rack-1.4.1, rack-protection-1.2.0, rake-0.9.2.2, rubygems-mirror-1.0.1, sinatra-1.3.3, tilt-1.3.3]> WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead. at /usr/lib64/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rdoctask.rb rake aborted! uninitialized constant Hoe::Publish::RDoc

试过同 @MaskRay @chenryn , 或有 bug (@huacnlee )

@huacnlee 第二步关于 geminabox 按照您的写了之后 无法在内网其他机器上访问到此端口,这个搭载仅仅是搭载上没有网页吗? 如果想要 gem install 该怎么做呢,在 git hub 上只看到了如何 Pull 上去,并且将地址加入 source 报错,端口不可链接进入

iceberg2271 回复

此方法不一定能行了,详见 Ruby China 的实现方式

https://github.com/ruby-china/rubygems-mirror

huacnlee 关闭了讨论。 03月08日 17:36
AReverie 搭建 rubygems 镜像遇到的问题 提及了此话题。 04月03日 10:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号