Сбой установки mapnik в Red Hat Linux
Я просто пытаюсь установить привязки Python к Mapnik 2.1 на Red Hat Enterprise и использовать их в Sage (sagemath.org). Это машина компании, где я не могу использовать ням, так что это все тарболлы, детка.
Я уже решил все проблемы, связанные с установкой зависимостей и определением синтаксиса, который мне нужен для каждой конфигурации. Каждый раз, когда я решаю одну проблему, возникает другая. В настоящее время я не могу настроить mapnik для просмотра libboost_system.so, который определенно находится в / usr / local / lib и имеет символическую ссылку, указывающую на него из / usr / lib.
подробности:
Red Hat Enterprise system:
> more /proc/version
Linux version 2.6.18-92.el5PAE (brewbuilder@hs20-bc2-3.build.redhat.com) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-41))
used install directions at github.com/mapnik/mapnik/blob/master/INSTALL.md, github.com/mapnik/mapnik/wiki/Mapnik2 and elsewhere
installed proj 4.8 from tarball using several solutions provided on the web to fix install problems
installed icu4c-4_6 from tarball to /usr/local/...
installed boost 1.51 from tarball pointing to the newly installed icu:
download boost_1_51_0.tar.gz
tar ...
cd boost_1_51_0
./bootstrap.sh
(ранее я сделал прямую./b2, чтобы установить все boost - вернулся, используя приведенные выше инструкции на веб-странице, чтобы переустановить части boost таким образом:)
sudo ./b2 --with-thread --with-filesystem --with-iostreams --with-python --with-regex -sHAVE_ICU=1 -sICU_PATH=/usr/local/lib --with-program_options --with-system link=shared toolset=gcc stage
sudo ./b2 --with-thread --with-filesystem --with-iostreams --with-python --with-regex -sHAVE_ICU=1 -sICU_PATH=/usr/local/lib --with-program_options --with-system link=shared toolset=gcc install
sudo /sbin/ldconfig
Теперь попробуйте установить mapnik:
download mapnik-v2.1.0.tar.bz2
tar ...
cd ...
./configure PYTHON=/opt/sage-5.2/local/bin/python ICU_LIBS=/usr/local/lib ICU_INCLUDES=/usr/local/include BOOST_INCLUDES=/usr/local/include/boost BOOST_LIBS=/usr/local/lib
или же
./configure PYTHON=/opt/sage-5.2/local/bin/python ICU_LIBS=/usr/local/lib ICU_INCLUDES=/usr/local/include
или же
./configure PYTHON=/opt/sage-5.2/local/bin/python
(те же результаты)
"scons: Reading SConscript files ...
Welcome to Mapnik...
Configuring build environment...
SCons CONFIG found: 'config.py', variables will be inherited...
Configuring on Linux in *release mode*...
Checking for freetype-config... yes
Checking for xml2-config... yes
Sorting lib and inc compiler paths...(cached) yes
Checking for C library m... yes
Checking for C library ltdl... yes
Checking for C library png... yes
Checking for C library tiff... yes
Checking for C library z... yes
Checking for C library proj... yes
Checking for C++ library icuuc... yes
Checking for C library jpeg... yes
Checking for ICU version >= 4.2... found: icu 4.6
(cached) Searching for boost libs and headers... (cached)
*libs found: /usr/local/lib
*headers found: /usr/local/include
*no lib naming extension found
Checking for Boost version >= 1.47... yes
Found boost lib version... 1_51
Checking for C++ library boost_system... yes
Checking for C++ library boost_filesystem... yes
Checking for C++ library boost_regex... yes
Checking for C++ library boost_program_options... yes
Checking for C++ library boost_thread... yes
.sconf_temp/conftest_18: error while loading shared libraries: libboost_system.so.1.51.0:
cannot open shared object file: No such file or directory
Checking if boost_regex was built with ICU unicode support... (cached) no
Checking for requested plugins dependencies...
Checking for gdal-config --libs... yes
Checking for gdal-config --cflags... yes
Checking for name of gdal library... gdal
Checking if gdal is ogr enabled... yes
Checking for name of ogr library... gdal
Checking for C library curl... no
Checking for pg_config... error: no result no
Checking for C library sqlite3... no
Checking if SQLite supports RTREE... (cached) no
Checking for pkg-config... yes
Checking for cairo... no
Checking for C++ header file boost/python/detail/config.hpp... yes
Checking for pkg-config... yes
Checking for pycairo... no
All Required dependencies found!
Overwriting and re-saving file 'config.py'...
Will hold custom path variables from commandline and python config file(s)...
Примечание: будет собираться без этих НЕОБЯЗАТЕЛЬНЫХ зависимостей:
boost_regex_icu (libboost_regex, созданный с дополнительной поддержкой юникода ICU, необходим для поддержки регулярных выражений юникода в mapnik.)
curl (libcurl требуется для плагина "osm" - больше информации: https://github.com/mapnik/mapnik/wiki//OsmPlugin)
pg_config (программа pg_config | попробуйте установить опцию PG_CONFIG SCons)
sqlite3 (библиотека SQLite3 C | настроить с помощью SQLITE_LIBS & SQLITE_INCLUDES | дополнительная информация: https://github.com/mapnik/mapnik/wiki//SQLite)
sqlite_rtree (для плагина SQLite требуется libsqlite3, созданный с поддержкой RTREE (-DSQLITE_ENABLE_RTREE = 1))
cairo (библиотека Cairo C | настроена с помощью pkg-config | попробуйте установить параметр SCons PKG_CONFIG_PATH)
pycairo (привязки Python к библиотеке Cairo |, настроенные с помощью pkg-config | попробуйте установить параметр SCons PKG_CONFIG_PATH)
.sconf_temp / conftest_33: ошибка при загрузке общих библиотек: libboost_system.so.1.51.0: не удается открыть файл общего объекта: нет такого файла или каталога. Произошла ошибка при разборе версии mapnik, откат к 2.1.0. Проверка заголовочного файла C Python.h... да Привязки Python версия... 2.7 Приставка Python 2.7... /opt/sage-5.2/local Привязки Python будут установлены в... /opt/sage-5.2/local/lib/python2.7/site- Настройка пакетов завершена: запустите
make
построить илиmake install
" make "... /usr/bin/ld: невозможно найти -lsqlite3 collect2: error: ld вернул 1 scons состояния выхода: * [tests / cpp_tests / csv_parse_test-bin] scons ошибки 1: сборка прекращена из-за ошибок. make: * [mapnik] Ошибка 2 "
Но я думал, что sqlite3 было ДОПОЛНИТЕЛЬНО...
Я думаю, что вопрос sqlite3 может быть красная сельдь. Предыдущая проблема заключается в том, что на этапе настройки не найдено boost_thread. Моя система показывает:
ls -l /usr/local/lib/libboost_system.so*
lrwxrwxrwx 1 root root 25 Sep 11 17:40 /usr/local/lib/libboost_system.so -> libboost_system.so.1.51.0
-rwxr-xr-x 1 root root 16898 Sep 11 17:40 /usr/local/lib/libboost_system.so.1.51.0
ldd /usr/local/lib/libboost_system.so.1.51.0
linux-gate.so.1 => (0x005c1000)
librt.so.1 => /lib/librt.so.1 (0x00cd9000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x002f4000)
libm.so.6 => /lib/libm.so.6 (0x009e1000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00f82000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00a6a000)
libc.so.6 => /lib/libc.so.6 (0x00110000)
/lib/ld-linux.so.2 (0x0050d000)
так что это действительно там и действительно.
И просто на всякий случай (что не помогло) добавили символическую ссылку:
ls -l /usr/lib/libboost_system.so
lrwxrwxrwx 1 root root 33 Sep 14 10:16 /usr/lib/libboost_system.so -> /usr/local/lib/libboost_system.so
Это странно, так как другие библиотеки находятся в том же месте. Кроме того, на этапе настройки за несколько строк до ошибки было указано, что "выполняется поиск улучшенных библиотек и заголовков... найдены библиотеки: / usr / local / lib"
На данный момент я не очень доверяю мошенникам. У меня была другая проблема, когда этап настройки mapnik не смог найти библиотеку (libproj). Затем позже заявили, что версия Boost была не ниже 1,48. Как только я добавил правильную символическую ссылку, указывающую на файл proj.so, ошибка настройки для версии boost исчезла. Поэтому я придерживаюсь общего правила, согласно которому вы должны сосредоточиться на первой обнаруженной ошибке и устранить ее.
Обратите внимание, что нестандартное расположение Python (PYTHON=/opt/sage-5.2/local/bin/python) выглядит нормально.
Глядя на файл журнала mapnik config.log, но никакой дополнительной информации я не вижу. Проверил в Интернете и github.com/mapnik/mapnik/wiki/InstallationTrou устранение неполадок, но ничего не имеет значения. Извините за длинный пост, но детали имеют значение. Спасибо за прочтение.
Другой ключ может быть:
Checking if boost_regex was built with ICU unicode support... (cached) no
хотя вышеизложенное показывает, что это было сделано правильно (?).
3 ответа
Ярко горящий,
Список пользователей Mapnik будет лучшим местом для этого.
В любом случае, я думаю, что проблема в том, что вы не настроили свою систему для поиска библиотек в /usr/local/lib. Вам нужно либо сделать export LD_LIBRARY_PATH=/usr/local/lib
или вам нужно добавить /usr/local/lib
в ваш /etc/ld.so.conf/
перед запуском ldconfig
,
Незначительные проблемы, которые могут сбить с толку: 1) ваш параметр BOOST_INCLUDES неверен, он должен быть BOOST_INCLUDES=/usr/local/include/
не BOOST_INCLUDES=/usr/local/include/boost
, 2) Я действительно не рекомендую символическую ссылку в /usr/lib
- что может сломать вещи странными способами
Кроме того, несмотря на ошибки компоновки во время настройки, я думаю, что вы в порядке. Ошибка связывания с тестом не имеет большого значения и, скорее всего, нам нужно сделать необязательным. Я предполагаю, что единственной серьезной проблемой при сборке будет усиление линковки, которое должно быть решено, как указано выше.
У меня была такая же проблема, как и у вас, и я увидел здесь, что
export LD_LIBRARY_PATH=/XXX/lib
должно сработать.
Я попробовал это, и это сработало для меня, но я все еще не уверен, в чем причина.
Сборка Mapnik на Centos 7 сталкивается с той же проблемой. Scon дает вводящие в заблуждение ошибки по поводу отсутствующих библиотек, которые на самом деле есть.
Выдача простого
export LD_LIBRARY_PATH=/usr/local/lib
исправлены все проблемы.
Должно быть исправлено для многих сборок на Centos / RHEL, а не только на Mapnik.