Страница 1 из 1

Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 19 июн 2022, 18:08
central
Настраиваю на тестовом компе asterisk 18 (pjsip), система ubuntu 20.04.
Настроив БД postgresql, сделав тестовые звонки и настроив CDR обновил ubuntu до версии 22.04.
В итоге при старте asterisk получил сообщение: ERROR[86789]: loader.c:2508 load_modules: Error loading module 'codec_codec2.so': libcodec2.so.0.9: cannot open shared object file: No such file or directory
Asterisk Ready.
Фактически asterisk не может найти библиотеку libcodec2.so.0.9, а её и нет, поскольку с обновлением дистрибутива она заменена на libcodec2.so.1.0
Это очевидно из выхлопа команды ldd codec_codec2.so в директории /usr/lib/asterisk/modules
linux-vdso.so.1 (0x00007ffde69bf000)
libcodec2.so.0.9 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb7c51b9000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb7c540a000)

Поискавши в интернетах нашёл что и знал, что в указанную выше директорию поместить указанный файл, однако в моём случае это невозможно, поскольку требуется изменить само желание asterisk заполучить файл версии libcodec2.so.0.9.
Подскажите пожалуйста как заставить asterisk изменить своё требование с libcodec2.so.0.9 => not found на
libcodec2.so.1.0 => not found
Спасибо.
P.S. не переустанавливать же...

Re: Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 20 июн 2022, 06:55
Vlad1983
два путя:
пересобрать астериск или переустановить пакет
попробовать сделать символьную ссылку libcodec2.so.0.9 -> libcodec2.so.1.0

Re: Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 20 июн 2022, 12:51
Zavr2008
сделать симлинк и ldconfig вызвать.

Re: Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 20 июн 2022, 19:11
central
Хорошо, и Вам спасибо и предыдущему человеку, но есть вопрос, а как же сделать сим. линк, если asterisk хочет ссылку на свой файл

modules$ ldd codec_codec2.so
linux-vdso.so.1 (0x00007fff251eb000)
libcodec2.so.0.9 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f42db6b6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f42db907000)

Вроде, для меня очевидно, что ссылка c libcodec2.so.0.9 на libcodec2.so.1.0 что-то не то, нужно чтобы было:
libcodec2.so.1.0 => /lib/x86_64-linux-gnu/libcodec2.so.1.0
Asterisk-то видит и требует ссылку на libcodec2.so.0.9, а его физически нет.
Обновить кэш это последнее что необходимо...

Re: Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 21 июн 2022, 08:00
Vlad1983
Код: выделить все
# ln -s /lib/x86_64-linux-gnu/libcodec2.so.1.0 /lib/x86_64-linux-gnu/libcodec2.so.0.9
# ldconfig

Re: Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 21 июн 2022, 08:27
amateur
central писал(а):Вроде, для меня очевидно, что ссылка c libcodec2.so.0.9 на libcodec2.so.1.0 что-то не то, нужно чтобы было:
libcodec2.so.1.0 => /lib/x86_64-linux-gnu/libcodec2.so.1.0

Да, это действительно "что-то не то".

Ваш вариант модуля codec_codec2.so собран с расчетом использовать код из библиотеки libcodec2 версии 0.9. В вашей системе установлена более поздняя версия библиотеки libcodec2 - 1.0.

Vlad1983 писал(а):
Код: выделить все
# ln -s /lib/x86_64-linux-gnu/libcodec2.so.1.0 /lib/x86_64-linux-gnu/libcodec2.so.0.9
# ldconfig

Вот это решение, которое предлагает Vlad1983, это решение "на удачу". Оно сработает только, если программный интерфейс к библиотеке libcodec2 1.0 по отношению к версии 0.9 не изменился.

Пересборка codec_codec2.so - это тоже решение "на удачу", т.к. если программный интерфейс к libcodec2 все-таки изменился, вы получите ошибку на этапе сборки. Но так хотя бы будет видно где расхождение и появится потенциальная возможность ее исправить.

Re: Замена разделяемой библиотеки libcodec2.so.0.9 на новую

СообщениеДобавлено: 21 июн 2022, 10:48
central
Vlad1983 писал(а):
Код: выделить все
# ln -s /lib/x86_64-linux-gnu/libcodec2.so.1.0 /lib/x86_64-linux-gnu/libcodec2.so.0.9
# ldconfig


Ваше решение сработало, "выхлоп" asterisk -r чист!

Из чего можно сделать вывод, что замечание amateur верно и программный интерфейс библиотеки libcodec2.so.1.0 по отношению к предыдущей libcodec2.so.0.9 не изменился.

Всем огромная благодарность. Может кому-то пригодится. :) :) :) :) :)

P.S. по команде ldd codec_codec2.so имеется следующий выхлоп:

linux-vdso.so.1 (0x00007ffc4bb71000)
libcodec2.so.0.9 => /lib/x86_64-linux-gnu/libcodec2.so.0.9 (0x00007f18d00c6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f18cfe9e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f18cfdb7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f18d0f96000)