瞎扯淡 哥搞 Rubygems 镜像,跑最后补的 gem generate_index 一直失败

huacnlee · 2011年12月09日 · 最后由 fsword 回复于 2012年02月04日 · 3613 次阅读

每天都在尝试不同的办法,源代码都改过了,结果还是没跑完。 Ruby 1.9 跑到后面回抛出

/home/jason/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/indexer.rb:129: stack level too deep (SystemStackError)

而 1.8.7 跑到最后没有错,但索引依然没出来...

stack 太深了..

ulimit -s 20000

#3 楼 @hooopo 15W 的 Gem 不知道该设置多少呢

stack level too deep (SystemStackError) 是因为太多 recursive calls,你的问题在那里不大清楚

cat test.rb def recursive_call(count) count += 1 puts count recursive_call(count) end

recursive_call(0)

=>... 8731 8732 test.rb:3: stack level too deep (SystemStackError)

#5 楼 @zhang_victor 不一定是递归调用会出现这样的问题 有些不是递归调用,但是实际上 stack 的深度已经达到了系统的上限也会抛这个异常。一般用 ulimit 增大系统 max stack size 就 ok 的。

设置为 20000 还是遇到同样的问题,并且无法设置更高了

#6 楼 @hooopo 对,不一定是递归调用,只是给个例子。在加大 stack size 前,还是先看看为什么会有 stack level too deep (SystemStackError)

最后一批 gem 索引执行完以后,淘宝的 Rubygems 镜像就可以用了,这次够折腾的,rubygems 那个 gemerate_index 命令在大量数据的场景下运行有很多问题,反复研究修改了好多处代码才找到一个办法生成… 短短续续耗费了大半个月啊... 现在 A-Z, a-t 字母打头的 Gem 都可以安装了,剩下 u-z 字母打头的还在跑 http://ruby.taobao.org

一定要全部下完才能搞镜像么?

我的 lazy download 镜像超简单: https://github.com/luikore/gems.mirror

#10 楼 @night_song 那样,每个人都还得配置 hosts 有这个镜像就可以类是 http://rubygems.org 那样使用

其实去年我也整了个全下载的镜像... 那机器估计已经被你们 SA 收拾了

#12 楼 @night_song 工作还要有方法阿,要在公司内部形成支持力量才靠谱

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