无法启动SOLR服务器(Ruby on Rails)

我在我的Rails3应用程序中使用sunspot_rails和sunspot gems,并按照https://github.com/outoftime/sunspot安装太阳黑子的步骤,我无法让我的太阳黑子服务器运行。

当我进入我的目录,运行捆绑,然后运行耙太阳黑子:solr:开始我得到以下错误

Emil@Emil-PC /cygdrive/c/work/pilarhq $ rake sunspot:solr:start (in /cygdrive/c/work/pilarhq) DEPRECATION WARNING: You are using the old router DSL which will be removed in R ails 3.1. Please check how to update your routes file at: http://www.engineyard. com/blog/2010/the-lowdown-on-routes-in-rails-3/. (called from /cygdrive/c/work/p ilarhq/config/routes.rb:1) 2 [main] ruby 4824 C:\cygwin\bin\ruby.exe: *** fatal error - unable to rem ap C:\cygwin\bin\cyglber-2-3-0.dll to same address as parent: 0x360000 != 0x3800 00 Stack trace: Frame Function Args 023F9538 6102749B (023F9538, 00000000, 00000000, 00000000) 023F9828 6102749B (61177B80, 00008000, 00000000, 61179977) 023FA858 61004AFB (611A136C, 6123FF54, 00360000, 00380000) End of stack trace 2 [main] ruby 4500 C:\cygwin\bin\ruby.exe: *** fatal error - unable to rem ap C:\cygwin\bin\cyglber-2-3-0.dll to same address as parent: 0x360000 != 0x3E00 00 Stack trace: Frame Function Args 023FB0F8 6102749B (023FB0F8, 00000000, 00000000, 00000000) 023FB3E8 6102749B (61177B80, 00008000, 00000000, 61179977) 023FC418 61004AFB (611A136C, 6123FF54, 00360000, 003E0000) End of stack trace 2 [main] ruby 4612 fork: child 4824 - died waiting for dll loading, errno 11 4 [main] ruby 580 fork: child 4500 - died waiting for dll loading, errno 1 1 /usr/lib/ruby/gems/1.8/gems/sunspot-1.2.0/lib/sunspot/server.rb:42:in `fork': Re source temporarily unavailable - fork(2) (rake aborted!Errno::EAGAIN) Resource temporarily unavailable - fork(2) from /usr/lib/ruby/gems/1.8/gems /sunspot-1.2.0/lib/sunspot/server.rb:42:in `start' $ in `fork' from /usr/lib/ruby/gems/1.8/gems/sunspot-1.2.0/lib/sunspot/server.rb:41: in `start' from /usr/lib/ruby/gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/s erver.rb:10:in `start' from /usr/lib/ruby/gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/t asks.rb:8 from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_w ith_call_chain' from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_w ith_call_chain'ygdrive/c/work/pilarhq $ from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_ task' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_lev el' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_lev el' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standar d_exception_handling' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_lev el' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standar d_exception_handling' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run' from /usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31 from /usr/bin/rake:19:in `load' from /usr/bin/rake:19 

(我在Windows机器上使用Cygwin …如果有帮助)

Solutions Collecting From Web of "无法启动SOLR服务器(Ruby on Rails)"

我找到了http://www.garethhunt.com/2008/02/11/cygwin-died-waiting-for-dll-loading/,并且必须做到以下几点:

  1. 关闭所有的cygwin窗口
  2. 从Run(Win-R)调用c:\ cygwin \ usr \ bin \
  3. 从其中调用rebaseall

我碰到类似的东西(Windows 7企业,使用cygwin和rails),发现简单的rebaseall方法不起作用。 简而言之,问题是rebaseall并不一定知道所有的.dll和.so是必须修复的。 解决办法是编写自己的列表,并使用-T选项针对该列表运行rebaseall。 对我来说,最终工作的过程是:

  1. 在cygwin shell中: find /bin /lib /usr -iname '*.so' > /tmp/to_rebase.lst
  2. 在一个cygwin shell中: find /bin /lib /usr -iname '*.dll' >> /tmp/to_rebase.lst
  3. 退出所有的cygwin shell并停止所有的cygwin进程
  4. 以管理员C:\ cygwin \ bin \ ash.exe运行
  5. /bin/rebaseall -T /tmp/to_rebase.lst
  6. 退出灰
  7. 重启机器