试图让rgeo-gem在ubuntu 16.04系统上识别geos。
我安装了以下软件包:-
libgeos-dev、libgeos++-dev和libgeos-3.7.1
geos-config --version
3.7.1
我在/usr/lib中有一个符号链接,它指向中特定版本的位置
lrwxrwxrwx 1 root root 42 Oct 21 18:05 libgeos.so -> /usr/lib/x86_64-linux-gnu/libgeos-3.7.1.so
已运行以下命令
gem uninstall rgeo
gem install rgeo -- --with-geos-dir=/usr/lib
然而,当我运行以下程序时,失败
RAILS_ENV=staging bundle exec irb
require 'rgeo'
RGeo::Geos.supported?
=> false
我做错了什么?我已经搜索了关于这个的各种帖子,这让我安装了-dev包并创建了符号链接,但它仍然不起作用。
还将/usr/lib添加到/etc/ld.so.conf.d/并运行ldconfig,但没有成功。
更新
RAILS_ENV=staging bundle exec irb
2.5.0 :001 > require 'rgeo'
=> true
2.5.0 :002 > RGeo::Geos.supported?
=> true
2.5.0 :003 >
显示它在工作,但
Loading staging environment (Rails 5.2.0)
2.5.0 :001 > require 'rgeo'
=> false
2.5.0 :002 > RGeo::Geos.supported?
=> false
失败
应用程序仍然显示
RGeo::Error::RGeoError (GEOS is not available, but is required for correct interpretation of polygons in shapefiles.)
spring stop
和重新启动rails控制台为我修复了它。
要修复CircleCi上的问题,我需要在ubuntu机器上运行这些命令,然后重新安装rgeo-gem
sudo apt update
sudo apt install libgeos++-dev libgeos-3.8.0 libgeos-c1v5 libgeos-dev libgeos-doc
gem unintsall rgeo
gem install rgeo