Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

ответил 2014-04-22 04:16:52 +0400

krokodil Gravatar krokodil

Хоть ветка и старая, но я все-таки выскажусь, так как у меня была похожая проблема c совсем недавней версией астера.

Проблема очень проста: астериск не находит вашу shared library libasteriskssl.so.1. Как вы понимаете, астериск ищет ее не сам, а вызывает для поиска динамический загрузчик ld.so. как действует загрузчик можете почитать вызвав "man ld.so", но если вкратце, то он пользуется динамическим кэш-файлом /etc/ld.so.cache, а этот файл создается соответственно программой ldconfig, которой наверняка все пользуются довольно часто. В этом кэше прописано где лежат все динамические библиотеки. И очевидно, что раз библиотека libasteriskssl.so.1 не ищется, то значит динамический загрузчик не может найти её ни в ld.so.cache, ни в стандартных путях /lib и /usr/lib.

Что делать? Тут некоторые особо одаренные товарищи говорят, что мол не суйти свои кривые ручки туда, куда не умеете и устанавливайте все пакетами, но это конечно бред и происходит от бескультурия и нарциссизма. Например у меня на сервер астериск устанавливается только из исходников, пакеты не работают. Да, можно конечно вообще все библиотеки устанавливать только в одну стандартную директорию /usr/lib и тогда все будет находиться, но это бред. Система должна работать и с другими привычными директориями установки.

Проблема решается следующим образом. Сначала посмотрите, где у вас находится этот libasteriskssl.so.1

$ find /usr -name libasteriskssl.so.1

у меня он установлен в директории /usr/local/lib64 для 64-четырех битной машины это весьма стандартная директория для установки библиотек, поэтому если библиотеки в этой директории не ищутся, то нужно исправить эту ситуацию один раз и навсегда.

Из чего следует решение первое, самое правильное.

  1. (рекомендую) Если вы админ на машине, то добавьте в файл /etc/ld.so.conf строку

/usr/local/lib64

(точнее поставьте свое название директории, где у вас нашлась библиотека libasteriskssl.so.1)

далее вызываем (как админ)

# ldconfig

он заново перепишет кэш-файл, про который я писал выше, включив туда уже вашу директорию. после этого все должно заработать.

  1. решение второе, временное (не рекомендуется)

запускать астер строкой

$ LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64 asterisk -&

в этом случае вы говорите динамическому загрузчику, что у вас есть еще одна директория, где искать библиотеки

  1. решение третье, постоянное (не рекомендуется)

поместить в свой ~/.bashrc

export LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64

Хоть ветка и старая, но я все-таки выскажусь, так как у меня была похожая проблема c совсем недавней версией астера.

Проблема очень проста: астериск не находит вашу shared library libasteriskssl.so.1. Как вы понимаете, астериск ищет ее не сам, а вызывает для поиска динамический загрузчик ld.so. как действует загрузчик можете почитать вызвав "man ld.so", но если вкратце, то он пользуется динамическим кэш-файлом /etc/ld.so.cache, а этот файл создается соответственно программой ldconfig, которой наверняка все пользуются довольно часто. В этом кэше прописано где лежат все динамические библиотеки. И очевидно, что раз библиотека libasteriskssl.so.1 не ищется, то значит динамический загрузчик не может найти её ни в ld.so.cache, ни в стандартных путях /lib и /usr/lib.

Что делать? Тут некоторые особо одаренные товарищи говорят, что мол не суйти свои кривые ручки туда, куда не умеете и устанавливайте все пакетами, но это конечно бред и происходит от бескультурия и нарциссизма. Например у меня на сервер астериск устанавливается только из исходников, пакеты не работают. Да, можно конечно вообще все библиотеки устанавливать только в одну стандартную директорию /usr/lib и тогда все будет находиться, но это бред. Система должна работать и с другими привычными директориями установки.

Проблема решается следующим образом. Сначала посмотрите, где у вас находится этот libasteriskssl.so.1

$ find /usr -name libasteriskssl.so.1

у меня он установлен в директории /usr/local/lib64 для 64-четырех битной машины это весьма стандартная директория для установки библиотек, поэтому если библиотеки в этой директории не ищутся, то нужно исправить эту ситуацию один раз и навсегда.

Из чего следует решение первое, самое правильное.

  1. (1) (рекомендую) Если вы админ на машине, то добавьте в файл /etc/ld.so.conf строку

/usr/local/lib64

(точнее поставьте свое название директории, где у вас нашлась библиотека libasteriskssl.so.1)

далее вызываем (как админ)

# ldconfig

он заново перепишет кэш-файл, про который я писал выше, включив туда уже вашу директорию. после этого все должно заработать.

  1. (2) решение второе, временное (не рекомендуется)

запускать астер строкой

$ LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64 asterisk -&

в этом случае вы говорите динамическому загрузчику, что у вас есть еще одна директория, где искать библиотеки

  1. (3) решение третье, постоянное (не рекомендуется)

поместить в свой ~/.bashrc

export LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

Хоть ветка и старая, но я все-таки выскажусь, так как у меня была похожая проблема c совсем недавней версией астера.

Проблема очень проста: астериск не находит вашу shared library libasteriskssl.so.1. Как вы понимаете, астериск ищет ее не сам, а вызывает для поиска динамический загрузчик ld.so. как действует загрузчик можете почитать вызвав "man ld.so", но если вкратце, то он пользуется динамическим кэш-файлом /etc/ld.so.cache, а этот файл создается соответственно программой ldconfig, которой наверняка все пользуются довольно часто. В этом кэше прописано где лежат все динамические библиотеки. И очевидно, что раз библиотека libasteriskssl.so.1 не ищется, то значит динамический загрузчик не может найти её ни в ld.so.cache, ни в стандартных путях /lib и /usr/lib.

Что делать? Тут некоторые особо одаренные товарищи говорят, что мол не суйти свои кривые ручки туда, куда не умеете и устанавливайте все пакетами, но это конечно бред и происходит от бескультурия и нарциссизма. Например у меня на сервер астериск устанавливается только из исходников, пакеты не работают. Да, можно конечно вообще все библиотеки устанавливать только в одну стандартную директорию /usr/lib и тогда все будет находиться, но это бред. Система должна работать и с другими привычными директориями установки.

Проблема решается следующим образом. Сначала посмотрите, где у вас находится этот libasteriskssl.so.1

$ find /usr -name libasteriskssl.so.1

у меня он установлен в директории /usr/local/lib64 для 64-четырех битной машины это весьма стандартная директория для установки библиотек, поэтому если библиотеки в этой директории не ищутся, то нужно исправить эту ситуацию один раз и навсегда.

Из чего следует решение первое, самое правильное.

(1) (рекомендую) Если вы админ на машине, то добавьте в файл /etc/ld.so.conf строку

/usr/local/lib64

(точнее поставьте свое название директории, где у вас нашлась библиотека libasteriskssl.so.1)

далее вызываем (как админ)

# ldconfig

он заново перепишет кэш-файл, про который я писал выше, включив туда уже вашу директорию. после этого все должно заработать.

(2) решение второе, временное (не рекомендуется)

запускать астер строкой

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64 asterisk -&

в этом случае вы говорите динамическому загрузчику, что у вас есть еще одна директория, где искать библиотеки

(3) решение третье, постоянное (не рекомендуется)

поместить в свой ~/.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

это модификация решения (2), которая будет работать только если вы запускаете астериск "ручками", то есть вызывая asterisk из своей bash shell. если вы не зашли в bash shell, то соответственно путь к библиотеке не добавится.

еще раз подчеркну, что правильным постоянным способом является только способ (1)

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.