LINUX.ORG.RU

После обновления error while loading shared libranies

 


0

1

День добрый данный вопрос наверняка задавался не один разно все решения которые я находил не вполне подходят для меня. В одном стареньком дистрибутивчике обновил ряд программ и библиотек собрав пакеты из исходников. Вот те с которыми у меня возникли проблемы e2fsprogs, cryptsetup и openssl в итоге некоторые программы openssh cmake wget ... и самое печальное пакетный менеджер, начали выдавать такие ошибки при запуске ssh error while loading shared libranies: libcom_err.so.3 cannot open share object file cmake, wget … error while loading shared libranies: libcrypto.so.0 cannot open share object file и error while loading shared libranies: libssl.so.0 cannot open share object file Программы ссылаются на старые libcrypto.so.0 и libssl.so.0 которые заменили libcrypto.so.1.0.0 и libssl.so.1.0.0, создал на них симлинки ln -n libssl.so.1.0.0 libssl.so.0 и ln -n libcrypto.so.1.0.0 libcrypto.so.0 всё заработало пере собрал программы в надежде на то что подхватятся свежие версии либ, удалил линки но всё равно error while loading shared libranies: пересобрал уже без линков покрайней мере с cmake и wget это сработало, а вот пакетный менеджер продолжает ругаться хотя если его собрать его на другой машине где всё ещё более свежее то он на ней великолепно работает. Вопрос как это можно решить?

Перейти на Void, Alpine, Slackware, Debian 10, ArchLinux на старой машине и обновлять пакетными менеджерами, а не руками, создавая франкенштейна

menangen ★★★★★
()

Плюс, если тебе нужен новый софт на старой ос, то используй chroot, lxc/lxd, docker, а не вот этот вот путь манкей патчинга

menangen ★★★★★
()

пересобрал программы в надежде на то что подхватятся свежие версии либ

Надо старые dev пакеты cryptsetup и openssl удалить (их dev'ы хрянятся в /usr/include и /usr/lib/pkgconfig), а самосбор должен содержать в /usr/local: include и pkgconfig файлы. Кроме того при сборке должны быть файлы libssl.so и libcrypto.so, ссылающиеся на libssl.so.1.0.0 и libcrypto.so.1.0.0. la файлы, если есть, тоже должны указывать на корректные либы. Про sudo ldconfig после правок в /usr/local и после сборки не забывай.

Программы ссылаются на старые libcrypto.so.0 и libssl.so.0 которые заменили libcrypto.so.1.0.0 и libssl.so.1.0.0

Самосбор openssl (особенно в /usr/local) не должен затрагивать файлы из старых веток. Но и все системные проги продолжат использовать старый openssl. Чтобы переключить их на новую ветку, их надо собрать с новыми либами (а не просто симлинки создавать). Хотя, если ты пересобирал по спекам в /usr, то могло и перезаписаться.

anonymous
()
Ответ на: комментарий от anonymous

Я вас правильно понял, мне надо собрать openssl с префиксом /usr/local и установить его в систему затем sudo ldconfig после чего пересобрать все пакеты зависящие от openssl и сам пакет openssl после чего обновить все проги?

Я пока что в пакет добавил симлинки libcrypto.so.0 и libssl.so.0 на соответствующие libcrypto.so и libssl.so некоторые программы после пересборки уже подхватил новые libcrypto.so.0 и libssl.so.0 а другие всё ещё упорно ссылаются на libcrypto.so.0 и libssl.so.0

Chip_exe
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.