Unable to start SOLR server (Ruby on Rails)
I'm using sunspot_rails and sunspot gems in my Rails3 application and following the steps to installing sunspot on https://github.com/outoftime/sunspot, I cannot get my sunspot server to run.
When I enter my directory, run bundler and then run rake sunspot:solr:start I get the following error
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/gem开发者_如何转开发s/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
(I'm using Cygwin on a Windows machine...if that helps)
I have found http://www.garethhunt.com/2008/02/11/cygwin-died-waiting-for-dll-loading/ and had to do the following:
- close all cygwin windows
- call c:\cygwin\usr\bin\ash from Run (Win-R)
- call
rebaseall
from therein
I ran into something similar (Windows 7 enterprise, using cygwin and rails) and found that the simple rebaseall approach was not working. In brief, the problem is that rebaseall doesn’t necessarily know all the .dll’s and .so’s it has to fix. The solution is to compose your own list and run rebaseall against that list using the -T option. For me, the process that finally worked was:
- in a cygwin shell:
find /bin /lib /usr -iname '*.so' > /tmp/to_rebase.lst
- in a cygwin shell:
find /bin /lib /usr -iname '*.dll' >> /tmp/to_rebase.lst
- quit all cygwin shells and stop all cygwin processes
- run as Administrator C:\cygwin\bin\ash.exe
/bin/rebaseall -T /tmp/to_rebase.lst
- exit ash
- restart machine
精彩评论