无法打开库' lib.dylib'在Mac上
在Mac上发布Ruby测试(蒙特雷12.2.1)时有一些问题。我已经启动了捆绑安装
- 一切都成功完成,之后我尝试执行命令捆绑exec rake rake rake rake db:test:refresh
,并获得了以下错误,
LoadError: Couldn't load the GEOS CAPI library.
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:1000:in `rescue in <module:FFIGeos>'
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:982:in `<module:FFIGeos>'
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:51:in `<module:Geos>'
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:7:in `<top (required)>'
/Users/alexandra_shimanovich/Documents/Curb/ride_manager/config/application.rb:9:in `<top (required)>'
/Users/alexandra_shimanovich/Documents/Curb/ride_manager/Rakefile:4:in `require'
/Users/alexandra_shimanovich/Documents/Curb/ride_manager/Rakefile:4:in `<top (required)>'
/Users/alexandra_shimanovich/.rbenv/versions/2.5.5/bin/bundle:23:in `load'
/Users/alexandra_shimanovich/.rbenv/versions/2.5.5/bin/bundle:23:in `<main>'
LoadError: Could not open library '/usr/lib/': dlopen(/usr/lib/, 0x0005): tried: '/usr/lib/' (not a file), '/usr/local/lib/' (not a file).
Could not open library 'lib.dylib': dlopen(lib.dylib, 0x0005): tried: 'lib.dylib' (no such file), '/usr/local/lib/lib.dylib' (no such file), '/usr/lib/lib.dylib' (no such file), '/Users/alexandra_shimanovich/Documents/Curb/ride_manager/lib.dylib' (no such file), '/usr/local/lib/lib.dylib' (no such file), '/usr/lib/lib.dylib' (no such file)
我看了在ffi-geos.rb内部,
def self.search_paths
@search_paths ||= begin
if ENV['GEOS_LIBRARY_PATH']
[ ENV['GEOS_LIBRARY_PATH'] ]
elsif FFI::Platform::IS_WINDOWS
ENV['PATH'].split(File::PATH_SEPARATOR)
else
[ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}' ]
[ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}', '/usr/lib/{x86_64,i386}-linux-gnu' ]
end
end
end
我知道我的计算机lib文件不在/usr/local/..中,而是在
/opt/opt/homebrew/lib
中。但是,当我在内部查看/opt/homebrew/lib
时,我找不到lib.dylib
。只有libgeos.3.10.2.dylib libgeos.dylib libgeos_c.1.16.0.dylib libgeos_c.1.dylib libgeos_c.dylib
。
请帮助我找到正确的lib,并以某种方式告诉ffi-geos.rb看正确的位置,我真的很感激!谢谢你!
Have some issues with launching ruby tests on Mac(Monterey 12.2.1). I've launched bundle install
- everything was finished successfully, after that I tried to do a command bundle exec rake db:test:refresh
, and got the following error
LoadError: Couldn't load the GEOS CAPI library.
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:1000:in `rescue in <module:FFIGeos>'
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:982:in `<module:FFIGeos>'
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:51:in `<module:Geos>'
/Users/alexandra_shimanovich/.bundle/ruby/2.5.0/gems/ffi-geos-0.3.0/lib/ffi-geos.rb:7:in `<top (required)>'
/Users/alexandra_shimanovich/Documents/Curb/ride_manager/config/application.rb:9:in `<top (required)>'
/Users/alexandra_shimanovich/Documents/Curb/ride_manager/Rakefile:4:in `require'
/Users/alexandra_shimanovich/Documents/Curb/ride_manager/Rakefile:4:in `<top (required)>'
/Users/alexandra_shimanovich/.rbenv/versions/2.5.5/bin/bundle:23:in `load'
/Users/alexandra_shimanovich/.rbenv/versions/2.5.5/bin/bundle:23:in `<main>'
LoadError: Could not open library '/usr/lib/': dlopen(/usr/lib/, 0x0005): tried: '/usr/lib/' (not a file), '/usr/local/lib/' (not a file).
Could not open library 'lib.dylib': dlopen(lib.dylib, 0x0005): tried: 'lib.dylib' (no such file), '/usr/local/lib/lib.dylib' (no such file), '/usr/lib/lib.dylib' (no such file), '/Users/alexandra_shimanovich/Documents/Curb/ride_manager/lib.dylib' (no such file), '/usr/local/lib/lib.dylib' (no such file), '/usr/lib/lib.dylib' (no such file)
I looked inside ffi-geos.rb
def self.search_paths
@search_paths ||= begin
if ENV['GEOS_LIBRARY_PATH']
[ ENV['GEOS_LIBRARY_PATH'] ]
elsif FFI::Platform::IS_WINDOWS
ENV['PATH'].split(File::PATH_SEPARATOR)
else
[ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}' ]
[ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}', '/usr/lib/{x86_64,i386}-linux-gnu' ]
end
end
end
I know that in my computer lib files are not in /usr/local/..
but in /opt/homebrew/lib
. But when I looked inside /opt/homebrew/lib
I didn't find lib.dylib
. There are only libgeos.3.10.2.dylib libgeos.dylib libgeos_c.1.16.0.dylib libgeos_c.1.dylib libgeos_c.dylib
.
Please, help me find the right lib and somehow tell ffi-geos.rb to look in the right place, I would REALLY appreciate it! Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ffi-geos.rb
您发布的代码。 (或lib64.dylib
),但它添加/usr/local/lib
,/usr/usr/local/lib64
等寻找特定的Geos Dylibs的路径。由于您的库文件在/opt/homebrew/lib
中,因此无法通过该自动过程找到它们。代码中的第一个条件显示您可以设置一个环境变量来定义搜索路径。因此,设置图书馆路径:
希望这有效!
The code from
ffi-geos.rb
you posted is not looking forlib.dylib
(orlib64.dylib
), but it's adding/usr/local/lib
,/usr/local/lib64
, etc, to the search path to look for the specific GEOS dylibs. As your library files are in/opt/homebrew/lib
, they won't be found by that automatic procedure.The first conditional in the code shows you can set an environment variable to define the search path. So, set the library path with:
Hope this works!