1 | изначальная версия редактировать | |
Хоть ветка и старая, но я все-таки выскажусь, так как у меня была похожая проблема 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-четырех битной машины это весьма стандартная директория для установки библиотек, поэтому если библиотеки в этой директории не ищутся, то нужно исправить эту ситуацию один раз и навсегда.
Из чего следует решение первое, самое правильное.
/usr/local/lib64
(точнее поставьте свое название директории, где у вас нашлась библиотека libasteriskssl.so.1)
далее вызываем (как админ)
# ldconfig
он заново перепишет кэш-файл, про который я писал выше, включив туда уже вашу директорию. после этого все должно заработать.
запускать астер строкой
$ LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64 asterisk -&
в этом случае вы говорите динамическому загрузчику, что у вас есть еще одна директория, где искать библиотеки
поместить в свой ~/.bashrc
export LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64
2 | No.2 Revision редактировать |
Хоть ветка и старая, но я все-таки выскажусь, так как у меня была похожая проблема 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)
решение второе, временное (не рекомендуется)запускать астер строкой
$ LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64 asterisk -&
в этом случае вы говорите динамическому загрузчику, что у вас есть еще одна директория, где искать библиотеки
(3)
решение третье, постоянное (не рекомендуется)поместить в свой ~/.bashrc
export LDLIBRARYPATH=$LDLIBRARYPATH:/usr/local/lib64LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
3 | No.3 Revision редактировать |
Хоть ветка и старая, но я все-таки выскажусь, так как у меня была похожая проблема 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.