Gem ruby.taobao.org 镜像目前得到了 Rubygems 官方的帮助

huacnlee · 2012年08月06日 · 最后由 tudou 回复于 2012年08月10日 · 26891 次阅读

这两天 ruby.taobao.org 被 rubygems.org 官方的维护人员发现了,联系上以后他给了我一些改进镜像服务的建议

目前 ruby.taobao.org 已经换了一个方式来实现镜像(其实就是 Nginx proxy + caching,只是有方法的配置文件帮助,要靠谱许多)

配置文件就在:https://github.com/rubygems/rubygems.org-configs

接下啦,rubygems 的官方服务上面将做 IP 判断,自动把国内用户转向到 Taobao 镜像服务器,这样一来,以后大家就不用修改 gem remote 了。

有个缺点啊。。镜像服务器万一出问题了(像上次那样),那国内全部阵亡。。 感觉还是自己改 source 好点,而且 source 本来就是给你改的吧,这样这个功能反而成鸡肋了

#1 楼 @jjym 对国内刚学 Ruby 的小白来说应该是个好消息,不然 gem i rails 失败,然后就不知道该怎么折腾了

= =史无前例啊!

#1 楼 @jjym 那是少数情况,这个服务器啥都没干,就做镜像,并且主机是和 Taobao 的其他服务器一起维护的

@jjym 不过你说的也是很有道理,或许应该在使用 rubygems.org 的时候可以选择镜像位置,等接下来配置的时候具体看看,留个余地

赞!真是好消息!

太好了。 deng 等加上自动 ip 判断以后就更方便了。

#4 楼 @monster 不久的将来,Rails 将会成为 Rails 3.6.[ 无视我,看后面 ]4 (忘了 Rails 版本号直接蹦 4.X)…… 据说 python.org be blocked 就是因为 Python 有个版本 Python 2.6.[ 无视我,看后面 ]4。

#8 楼 @fenprace 估计很快 Rails 4.0 了吧?

#8 楼 @fenprace 3.6.4 不会,6.4 倒是很有希望

#10 楼 @ywencn 不会明天 ruby-china 打不开了吧?

#1 楼 @jjym #5 楼 @monster 微博上也有人希望能够自主选择,应该说这个需求还比较有市场,其实 source 机制本来就是为了选择不同的来源,如果都 302,那还不如取消这项配置变为硬编码,大家有没有建议呢?

或者把机制改一下,服务端返回镜像列表,客户端自己选一个。

#13 楼 @bhuztez 现有的 gem/bundle 机制不支持,要改就是大手术了吧

能懒一步是一步啊...

这给大家省了多少时间啊,功德无量

很好啊~~ 这也算是 Ruby-china 真正给开源社区带来的贡献啊。

我觉得目前 Ruby-china 对于开源社区的贡献还是太少了。我觉得这需要激情,换个角度来说,这是需要信仰的,我很期待,Ruby-china 能够真正在整个世界的 Ruby 社区中,做到中坚力量之一的那一天。

有关该 gem source, 要是嫌麻烦,写俩函数就是了。刚学两天编程的菜鸟都会。呵呵。


function gem1 {
    gem source --remove http://rubygems.org/ &>/dev/null
    gem source --remove http://rubygems.org &>/dev/null
    gem source --remove http://ruby.taobao.org/ &>/dev/null
    gem source --remove http://ruby.taobao.org &>/dev/null
    gem source --add http://rubygems.org/
    gem source --list
}

function gem2 {
    gem source --remove http://rubygems.org/ &>/dev/null
    gem source --remove http://rubygems.org &>/dev/null
    gem source --remove http://ruby.taobao.org/ &>/dev/null
    gem source --remove http://ruby.taobao.org &>/dev/null
    gem source --add http://ruby.taobao.org/
    gem source --list
}

p.s. 我的.bashrc 里大把类似于这种初级的宏函数,我基本上就是靠别名在 CLI 下混呢。有很多对于使用 ruby, 使用 gem 还是很有帮助的。有兴趣的朋友可以去我的 github 上看看,自取所需吧。

#18 楼 @zw963 这还不够,还要注意 Gemfile 里面的 source 设定

#19 楼 @fsword

嗯,那个我编写了 Ruby 脚本,直接查找替换了。

我上面那个示例是仅仅针对gem自身的一大堆别名中一个。

目前 rubygems.org 官方已经自动根据 IP 判断,将国内的用户安装流程跳转到 ruby.taobao.org 镜像上面,以后无需修改 gem source,直接使用 rubygems.org 就可以了。

看下面的安装日志:

$ gem source -l
*** CURRENT SOURCES ***
http://rubygems.org/

$ gem install redis-search -V
GET http://rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
304 Not Modified
GET http://rubygems.org/quick/Marshal.4.8/redis-search-0.9.0.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-search-0.9.0.gemspec.rz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/chinese_pinyin-0.4.1.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/chinese_pinyin-0.4.1.gemspec.rz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/redis-namespace-1.2.0.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-namespace-1.2.0.gemspec.rz
200 OK
GET http://rubygems.org/quick/Marshal.4.8/redis-3.0.1.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-3.0.1.gemspec.rz
200 OK
GET http://rubygems.org/specs.4.8.gz
302 Moved Temporarily
GET http://production.s3.rubygems.org/specs.4.8.gz
304 Not Modified
GET http://rubygems.org/quick/Marshal.4.8/redis-3.0.0.gemspec.rz
302 Moved Temporarily
GET http://ruby.taobao.org/quick/Marshal.4.8/redis-3.0.0.gemspec.rz
200 OK
Installing gem chinese_pinyin-0.4.1
Downloading gem chinese_pinyin-0.4.1.gem
GET http://rubygems.org/gems/chinese_pinyin-0.4.1.gem
302 Moved Temporarily
GET http://ruby.taobao.org/gems/chinese_pinyin-0.4.1.gem
Fetching: chinese_pinyin-0.4.1.gem (100%)
200 OK
Installing gem redis-3.0.1
Downloading gem redis-3.0.1.gem
GET http://rubygems.org/gems/redis-3.0.1.gem
302 Moved Temporarily
GET http://ruby.taobao.org/gems/redis-3.0.1.gem
Fetching: redis-3.0.1.gem (100%)
200 OK

cheers! 但是,万一淘宝的服务器崩溃了,我们岂不是啥都干不了了?因为没有办法强制使用官方源

很给力啊…

#22 楼 @bluecoda 这个我们有在考虑的,我正在和他们讨论

@huacnlee 功德无量阿!支持!

感觉还是 source 自己改好。本来就是留着改的,自动跳转还不如想办法默认 rails new 直接生成 source=taobao 的 Gemfile 好些,把简单问题复杂化了

淘宝揽这么大一摊子,以后要为大家负起责任来,多为大家增加些便利服务,因为这么一改相当于把国内做 ruby 的都导向他们家啦,谁给他们的这种公众权力呢?请把相关方案贴出来看看或有个核心维护团队,让大家看到负责任的一面

#27 楼 @cao7113 evan phoenix 主动寻找 ruby.taobao.org 的维护者的。

evan 在做 rubygem 的速度优化,联系了各个提供 mirror 服务的服务商。

大家别急嘛,我们还在尝试中

目前我和 Evan 讨论决定在 Linode 东京增加 Rubygems 官方的节点,以后国内的用户指向那边 而淘宝这边作为备选方法(有用户自己配置 gem source 就像之前那样)

和谐了。。

@huacnlee 挺,对于老版本的 gem 在 rubygems.org 没有的,能否自动到 rubyforge 上找呢?railscasts.com 里面比较的老的视频里配套的 source code 里的 gem 就有找不到的情况,所以问问,当然了有的改 gemfile 或删掉 gemfile.lock 也行,直接装最新版的也行

'以后大家就不用修改 gem remote 了' 这是个好消息,太爽了!

gem 应该没多大,猜测也就 1 个 G 左右? 如果淘宝官方支持这个事情应该很简单。当然可以联系下 sohu 和 163 的开源镜像服务,看是不是可以把 gem 也做上。

GET http://ruby.taobao.org/latest_specs.4.8.gz 302 Moved Temporarily GET http://gems.ruby-china.org/latest_specs.4.8.gz

connection reset after 1 requests, retrying 怎么回事

#35 楼 @gingerhot 你低估了,我前两天还看过,印象中是 60 多 G

对 ruby 爱好者来说,这太好了,感谢!

匿名 #40 2012年08月08日

难怪,昨天安装 gem 特别慢。。。。有些 gem 更慢,好像最后还会跳到 taobao 的源,我就奇怪了,没配 taobao 的源,它咋过去了

gem install code-statistics
lastest_specs too old, updating...
Downloading http://ruby.taobao.org/latest_specs.4.8.gz

curl: (7) couldn't connect to host
ERROR:  While executing gem ... (GemFast::Util::ExecutionError)
    Failure while executing: curl -f#LA rubygem-gemfast http://ruby.taobao.org/latest_specs.4.8.gz --insecure -o /home/weizhao/.rvm/gems/ree-1.8.7-2012.02@huafei2/cache/latest_specs.4.8.gz

今天 在家里和公司使用 taobao 镜像安装 gem 都有问题,怎么回事?要改什么地方?

gem sources                                                                                                                 1 ↵
*** CURRENT SOURCES ***

http://ruby.taobao.org/

#37 楼 @fsword 60 多个 G 的源码?只是觉得不太可能~

早上在家里更新 rails 3.2.7 也不成,而且是在 linode 上,用的官方的源。

是现在有什么问题?

#41 楼 @azhao 早上那会是有问题,我跑在 Linode 上面的代理出问题了,现在可以了。

~  gem install code-statistics -V
GET http://ruby.taobao.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://gems.ruby-china.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://bb-proxy.rubygems.org/latest_specs.4.8.gz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/code-statistics-0.1.1.gemspec.rz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/ruby_ext-4.0.3.gemspec.rz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/vfs-0.4.8.gemspec.rz
200 OK
GET http://ruby.taobao.org/quick/Marshal.4.8/haml-3.1.6.gemspec.rz
200 OK
Installing gem ruby_ext-4.0.3
Downloading gem ruby_ext-4.0.3.gem
GET http://ruby.taobao.org/gems/ruby_ext-4.0.3.gem
Fetching: ruby_ext-4.0.3.gem (100%)
200 OK
...

#44 楼 @huacnlee 我在 linode 上用官方的可以了 用 taobao 的也可以 但在公司安装用淘宝的还是有问题

wget http://ruby.taobao.org/latest_specs.4.8.gz
--2012-08-08 15:12:50--  http://ruby.taobao.org/latest_specs.4.8.gz
正在解析主机 ruby.taobao.org... 110.75.120.11
正在连接 ruby.taobao.org|110.75.120.11|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:http://10.10.4.6/download/15562612/17283272/5/gz/2/125/1343525520898_893/latest_specs.4.8.gz [跟随至新的 URL]
--2012-08-08 15:12:50--  http://10.10.4.6/download/15562612/17283272/5/gz/2/125/1343525520898_893/latest_specs.4.8.gz
正在连接 10.10.4.6:80... 失败:没有到主机的路由。

我在公司的 IP IP:[220.113.12.139] 来自:北京市 长城宽带 这个是 10.10.4.6 应该是被变成内部网了,是不是我这个 IP 段的代理跳的时候出问题了?

oye,不错

开始合作了啊?真是好事情。我觉得上面讨论的问题应该大多数都是很容易解决的,看来 ruby 爱好者的福利来了。

4 小时前,rubygems / rubygems.org-configs 配置文件已经修改,将国内 ip 指向到 http://tokyo-m.rubygems.org

真是太好了。

太好了,赞一个。功德 +1

自动 ip 判断,肯定会每 12 小时判断国内的服务器是否可用的吧?就算国内的服务器全部挂了,也没事。

#51 楼 @sevk 不是国内的,现在是主站 302 到东京的 linode 节点,淘宝节点还是要手动的,和以前相比,这个方案多了一个东京节点,所以理论上应该不会有墙,淘宝节点作为选项让用户决定

快了很多。

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