根据发现的迹象这里我正在尝试在 Ubuntu 22.04 中安装 Tile Server
但我收到了这个错误:
raphy@pc:~$ sudo -u _renderd osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script ./OSM_src/openstreetmap-carto/openstreetmap-carto.lua -C 2500 --number-processes 1 -S ./OSM_src/openstreetmap-carto/openstreetmap-carto.style ./OSM_src/data/azerbaijan-latest.osm.pbf
osm2pgsql: error while loading shared libraries: libboost_filesystem.so.1.71.0: cannot open shared object file: No such file or directory
现有的图书馆libboost
有1.74.0
:
raphy@pc:~$ sudo apt install libboost-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libboost-dev is already the newest version (1.74.0.3ubuntu7).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
raphy@pc:/usr/lib/x86_64-linux-gnu$ ls -lah | grep libboost_filesystem.so
lrwxrwxrwx 1 root root 29 mar 16 2022 libboost_filesystem.so -> libboost_filesystem.so.1.74.0
-rw-r--r-- 1 root root 123K mar 16 2022 libboost_filesystem.so.1.74.0
按照此处的指示:如何永久设置 LD_LIBRARY_PATH?.bashrc
我已经在文件 中设置:
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libboost_filesystem.so"
并且,遵循这里的迹象:https://serverfault.com/questions/201709/how-to-set-ld-library-path-in-ubuntu
我已设置/etc/ld.so.conf.d/libboost.conf
为:
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
进而
sudo ldconfig
但仍然出现错误:
osm2pgsql: error while loading shared libraries: libboost_filesystem.so.1.71.0: cannot open shared object file: No such file or directory
如何解决这个问题?
答案1
此错误消息表明libboost_filesystem.so.1.71.0
未找到共享库。这是因为 Ubuntu 22.04 附带 boost 1.74.0,因此仅存在文件 libboost_filesystem.so.1.74.0。库位于 中/usr/lib/x86_64-linux-gnu
。
对我来说,一个快速而肮脏的方法是添加一个符号链接:
ln -s libboost_filesystem.so libboost_filesystem.so.1.71.0
但请记住,这会造成库不一致,因为您想要使用旧版本的库执行代码,而新版本可能已经删除了代码破坏的某些内容。
更干净的方法是安装旧版的 boost 版本,但这无法通过 apt 实现,因为 1.71 版本适用于已经过时的 ubuntu 22.04。