Уже который раз сталкиваюсь при установке UniMRCP с проблемами при наличии установленных в системе пакетов библиотеки libapr. Проблема заключается в том, что UniMRCP для своей работы использует чётко определенные версии библиотек, а в системе часто используются старые версии, в которых не содержатся необходимые функции. При этом если даже unimrcp собран с прямым указанием места расположения нужных версий библиотек, то при запуске возникнет проблема:

./unimrcpserver: symbol lookup error: /usr/local/unimrcp/lib/libunimrcpserver.so.0: undefined symbol: apr_pool_mutex_set
Удалить системные библиотеки не всегда возможно, так как они содержатся в зависимостях таких пакетов как apache2 и subversion. Путь решения — под катом.

Для того чтобы таких проблем не возникло, прийдётся приложить некоторые усилия:

1. Скачиваем библиотеки нужных версий, файл с именем вроде unimrcp-deps-x.x.x.tar.gz, где иксы — версия библиотеки unimrcp. Все библиотеки собираются и устанавливаются простым запуском ./install.sh

2. При запуске ./configure указываем точное местоположение библиотек

./configure --with-sofia-sip=/usr/src/asr-tts/unimrcp-deps-1.0.0/libs/sofia-sip --with-apr=/usr/src/asr-tts/unimrcp-deps-1.0.0/libs/apr  --with-apr-util=/usr/src/asr-tts/unimrcp-deps-1.0.0/libs/apr-util

3. После установки библиотеки, приложению использующие библиотеки libunimrcpserver.so или libunimrcpclient.so нужно явно указать где в первую очередь производить поиск библиотек. Для этого нужно установить переменную LD_LIBRARY_PATH. Скрипт для запуска в консоли mrcp сервера выглядит следующим образом:

#!/bin/sh

CLIARGS="$*"

export LD_LIBRARY_PATH=/usr/local/apr/lib/

/usr/local/unimrcp/bin/unimrcpserver ${CLIARGS}

4. Для запуска приложения в качестве демона можно использовать штатный скрипт, нужно изменить переменную APP_NAME на название shell-скрипта, приведенного выше и расположить этот скрипт в /usr/local/unimrcp/bin

Hope this helps someone. Удачи и до скорых встреч.

Похожие сообщения:

автор igorg \\ теги: , , , ,