Gem 搭建 rubygems 镜像遇到的问题

AReverie · 2012年05月06日 · 最后由 huacnlee 回复于 2012年05月23日 · 11054 次阅读

Hi, all

一直在社区看帖,最近才想到要注册,也和大家问声好。

某是 ruby 新手一枚...

于是这几天想在公司内部搭建一个 rubygems 的镜像,用于生产环境(因为不允许访问公网)

参考了这张帖子 http://ruby-china.org/topics/264

某的环境是gentoo linux / rvm 1.12.3 (stable) / ruby 1.9.2p318

按照说明,把rubygems-mirror clone 下来后bundle install

cat ~/.gem/.mirrorrc的设置,某是从淘宝的镜像同步的

cat ~/.gem/.mirrorrc --- - from: http://ruby.taobao.org to: /var/www/rubygems parallelism: 5

以下是问题

  1. 在运行rake mirror:update的时候,遇到下面的错误(虽然不影响同步),这里的dot找不到是什么原因

    # rake mirror:update ** README.rdoc is missing or in the wrong format for auto-intuiting. run sow blah and look at its text files which: no dot in (/home/aleiphoenix/.rvm/gems/ruby-1.9.2-p318/bin:/home/aleiphoenix/.rvm/gems/ruby-1.9.2-p318@global/bin:/home/aleiphoenix/.rvm/rubies/ruby-1.9.2-p318/bin:/home/aleiphoenix/.rvm/bin:/home/aleiphoenix/.pythonbrew/bin:/home/aleiphoenix/.pythonbrew/pythons/Python-2.7.2/bin:/home/aleiphoenix/.rvm/bin:/home/aleiphoenix/.rvm/gems/ruby-1.9.2-p318/bin:/home/aleiphoenix/.rvm/gems/ruby-1.9.2-p318@global/bin:/home/aleiphoenix/.rvm/rubies/ruby-1.9.2-p318/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3:/home/aleiphoenix/bin) Fetching: http://gems.rubyforge.org/specs.4.8.gz with 5 threads

  2. 同步好之后,使用 geminabox 设置服务端,运行 OK,客户端设置了gem sources后,尝试安装会报错

    # gem install --verbose rails GET http://localhost:9292/latest_specs.4.8.gz 404 Not Found WARNING: Error fetching data: bad response Not Found 404 (http://localhost:9292/latest_specs.4.8.gz) GET http://localhost:9292/quick/Marshal.4.8/rails-3.2.3.gemspec.rz 404 Not Found Error fetching remote data: bad response Not Found 404 (http://localhost:9292/quick/Marshal.4.8/rails-3.2.3.gemspec.rz) Falling back to local-only install ERROR: Could not find a valid gem 'rails' (>= 0) in any repository ERROR: Possible alternatives: rails

    服务端的信息

    # rackup [2012-05-06 11:50:17] INFO WEBrick 1.3.1 [2012-05-06 11:50:17] INFO ruby 1.9.2 (2012-02-14) [x86_64-linux] [2012-05-06 11:50:17] INFO WEBrick::HTTPServer#start: pid=15330 port=9292 127.0.0.1 - - [06/May/2012 11:50:27] "GET /latest_specs.4.8.gz HTTP/1.1" 404 - 0.0051 127.0.0.1 - - [06/May/2012 11:50:27] "GET /quick/Marshal.4.8/rails-3.2.3.gemspec.rz HTTP/1.1" 404 - 0.0006

请问一下这 2 个问题该如何解决?

谢谢

第二个错误,提示文件不存在,检查是否存在,如果存在检查权限

#1 楼 @hlcfan thx,不太明白这个文件哪里来的,gems.rubyforge.org rubygems.org 都同步过,没这个文件。直接访问倒是有的。

另外,你搞这个镜像用于解决公司无法上网,这是拆东墙补西墙的做法

#4 楼 @huacnlee 用的就是你这个哦。公司规定机房不可以出公网,怎么说都没用,某都失望死了(公司主要搞 php 的)

#5 楼 @AReverie 你进文件夹看 rails-2 3.2.3.gemspec.rz 在不在,在的话,那就是 Nginx 配置有问题

搞 ruby 的兄弟辛苦了。慰问一下。

#6 楼 @huacnlee

文件是有的

# ls rails-2* rails-2.0.0.gem rails-2.1.0.gem rails-2.3.10.gem rails-2.3.3.gem rails-2.3.8.gem rails-2.0.1.gem rails-2.1.1.gem rails-2.3.11.gem rails-2.3.4.gem rails-2.3.9.gem rails-2.0.2.gem rails-2.1.2.gem rails-2.3.12.gem rails-2.3.5.gem rails-2.0.4.gem rails-2.2.2.gem rails-2.3.14.gem rails-2.3.6.gem rails-2.0.5.gem rails-2.2.3.gem rails-2.3.2.gem rails-2.3.7.gemi

geminabox 需要做其他配置吗?某目前目录下只有这些文件

# ls gems specs.4.8 specs.4.8.gz

某看上去,访问的都是不存在的文件夹。gem generate_index -d /var/www/rubygems 已经运行过了

#7 楼 @xds2000 折腾起来好玩嘛 XD

请求latest_specs.4.8.gz时 404,我通过把specs.4.8.gz复制成latest_specs.4.8.gz达到了。

至于请求http://localhost:9292/quick/Marshal.4.8/rails-3.2.3.gemspec.rz 这个 location 那里 quick 都没有这个文件夹。

目录下面只有

# ls gems specs.4.8 specs.4.8.gz

继续求助

#9 楼 @AReverie latest_specs , prerelease_specs ... 这几个文件 rubygems-mirror 官方版本本来是没有提供的,我那个 fork 版本就是特意修正你目前说这个问题:

https://github.com/huacnlee/rubygems-mirror/commit/80dacc687b3f8466f2833a6233bce077d7fb4249 https://github.com/huacnlee/rubygems-mirror/commit/2139075465982abb02981fa7d7288252782b0efa

所以,我猜测或许你用错版本了

#10 楼 @huacnlee 感谢,重新 clone 了最新版本再尝试就有 quick/下面的 gemspec.rz 的文件了。但某的疑问是这部分文件很少只从 a-b 开头,照理应该是全部 gems 都应该有对应的 gemspec.rz 吧。用 gem generate_index 生成的时候报了很多错是什么原因?

谢谢

我猜测,gemerate_index 设计的时候没有考虑到所有 gem 的情况,它只是设计给官方生成新 gem 的 spec 信息

需要 登录 后方可回复, 如果你还没有账号请 注册新账号