Доброго дня, коллеги. Не знаю в какую тему писать. Уж простите.
Помогите с решением. Есть связка приложение написанное под openjdk-8 + firebird 3 embedded.
Вопрос. Это чудо совершенно спокойно работает под astra (alce-2.12.46.6-17.04.2023_15.09.iso) и под RedOS (redos-MUROM-7.3.3-20230815.0-Everything-x86_64-DVD1.iso), и вылетает с ошибкой "Unable to load library 'fbclient': Native library (linux-x86-64/libfbclient.so) not found in resource path" под ubuntu, debian, rocky. Т.е. архив с приложением и всеми конфигурациями в части firebird с "рабочей" системы переносим на "нарабочую" и получаем эту ошибку. Эксперимента ради сносилась через apt purge openjdk с астры, скачивался через apt download сам пакет openjdk, распаковывался без установки и запускалось приложение - полет нормальный. По lsof видно, что в "рабочем" варианте идет обращение к каталогу где находится libfbclient.so, в "нерабочем" - нет. Перед запуском приложения определяются переменные окружения, согласно документации на firebird
export PATH=$PATH:`pwd`/fbembed
export LD_LIBRARY_PATH=`pwd`/fbembed
export FIREBIRD=`pwd`/fbembed
Где проблема закопалась?
Чтоб не телепатить, выводы каких команд предоставить?
Заранее спасибо.
> Native library (linux-x86-64/libfbclient.so) not found in resource pathтак а прочитать что ему надо и поставить никак?
apt install libfbclient2 в дебиане/убунте, dnf install libfbclient2 из epel репы в редхетоподобных
>> Native library (linux-x86-64/libfbclient.so) not found in resource path
> так а прочитать что ему надо и поставить никак?так а прочитать еще раз и обратить внимание на слово embedded никак?
> apt install libfbclient2 в дебиане/убунте, dnf install libfbclient2 из epel репы в
> редхетоподобныхспасибо. с этого начинались изыскания.
> спасибо. с этого начинались изыскания.apparmor/selinux проверял?
>> спасибо. с этого начинались изыскания.
> apparmor/selinux проверял?конечно. везде уже поудалено/отключено
>[оверквотинг удален]
> openjdk, распаковывался без установки и запускалось приложение - полет нормальный. По
> lsof видно, что в "рабочем" варианте идет обращение к каталогу где
> находится libfbclient.so, в "нерабочем" - нет. Перед запуском приложения определяются
> переменные окружения, согласно документации на firebird
> export PATH=$PATH:`pwd`/fbembed
> export LD_LIBRARY_PATH=`pwd`/fbembed
> export FIREBIRD=`pwd`/fbembed
> Где проблема закопалась?
> Чтоб не телепатить, выводы каких команд предоставить?
> Заранее спасибо.Проблема, с которой вы сталкиваетесь, связана с тем, что ваше Java-приложение не может найти библиотеку `libfbclient.so`, которая требуется для работы с встроенной базой данных Firebird.
Судя по вашему описанию, в Ubuntu, Debian и Rocky не удается найти библиотеку `libfbclient.so` в переменных окружения `LD_LIBRARY_PATH`. В Ubuntu и Debian библиотеки часто хранятся в других каталогах по умолчанию, и они не могут быть найдены, если не добавлены в переменную `LD_LIBRARY_PATH`.
Чтобы решить эту проблему, вам нужно убедиться, что `libfbclient.so` может быть найден в переменной `LD_LIBRARY_PATH` или в путях поиска библиотек (как `LD_LIBRARY_PATH` в Ubuntu, Debian и Rocky). Вот несколько шагов, которые могут помочь:
1. Убедитесь, что `libfbclient.so` находится в каталоге, указанном в `LD_LIBRARY_PATH`. Если нет, вы можете скопировать библиотеку в этот каталог или добавить каталог, содержащий `libfbclient.so`, в переменную `LD_LIBRARY_PATH`.
2. Вместо того, чтобы устанавливать `LD_LIBRARY_PATH` в каждый раз, когда вы запускаете приложение, вы можете добавить его к конфигурации вашей системы. Например, в Ubuntu и Debian можно создать файл в каталоге `/etc/ld.so.conf.d/` (например, `firebird.conf`), содержащий путь к каталогу с `libfbclient.so`, а затем выполнить команду `sudo ldconfig`, чтобы обновить кэш библиотек.
3. Убедитесь, что переменная `LD_LIBRARY_PATH` устанавливается до запуска вашего Java-приложения. Вы можете добавить эту настройку в скрипт запуска вашего приложения или в файлы настройки окружения, такие как `.bashrc` или `.profile`.
4. Если `libfbclient.so` установлена системным пакетом, удостоверьтесь, что этот пакет установлен и доступен для вашего пользователя или системы.
После внесения соответствующих изменений попробуйте снова запустить ваше Java-приложение. Это должно позволить ему успешно найти библиотеку `libfbclient.so` и исправить ошибку "Native library (linux-x86-64/libfbclient.so) not found in resource path".
>[оверквотинг удален]
> содержащий путь к каталогу с `libfbclient.so`, а затем выполнить команду `sudo
> ldconfig`, чтобы обновить кэш библиотек.
> 3. Убедитесь, что переменная `LD_LIBRARY_PATH` устанавливается до запуска вашего Java-приложения.
> Вы можете добавить эту настройку в скрипт запуска вашего приложения или
> в файлы настройки окружения, такие как `.bashrc` или `.profile`.
> 4. Если `libfbclient.so` установлена системным пакетом, удостоверьтесь, что этот пакет
> установлен и доступен для вашего пользователя или системы.
> После внесения соответствующих изменений попробуйте снова запустить ваше Java-приложение.
> Это должно позволить ему успешно найти библиотеку `libfbclient.so` и исправить ошибку
> "Native library (linux-x86-64/libfbclient.so) not found in resource path".Все выше изложенное проделано до описания проблемы в данном топике. Увы, решением не является.
Как написано выше переменные окружения устанавливаются.
На текущий момент решилось заменой libfbclient.so с версии 3 на 4.
Почему такой эффект сказать сложно. Итог для астры и редос работает версия библиотеки 3, для остальных участников - 4.
> Почему такой эффект сказать сложно.я так понимаю версия firebird embedded выше чем версия клиента из репы дистрибутива? например в убунте клиент 3.0.5, а сам firebird embedded с сайта тянется 3.0.10.
>> Почему такой эффект сказать сложно.
> я так понимаю версия firebird embedded выше чем версия клиента из репы
> дистрибутива? например в убунте клиент 3.0.5, а сам firebird embedded с
> сайта тянется 3.0.10.для использования emb. ставить что-то из репозиториев не требуется
>>> Почему такой эффект сказать сложно.
>> я так понимаю версия firebird embedded выше чем версия клиента из репы
>> дистрибутива? например в убунте клиент 3.0.5, а сам firebird embedded с
>> сайта тянется 3.0.10.
> для использования emb. ставить что-то из репозиториев не требуетсяну так клиентская то либа libfbclient из репы. а она походу 3й версии старовата
>>>> Почему такой эффект сказать сложно.
>>> я так понимаю версия firebird embedded выше чем версия клиента из репы
>>> дистрибутива? например в убунте клиент 3.0.5, а сам firebird embedded с
>>> сайта тянется 3.0.10.
>> для использования emb. ставить что-то из репозиториев не требуется
> ну так клиентская то либа libfbclient из репы. а она походу 3й
> версии староватачто-то скачивать из репозиториев не требуется. скачиваем архив с сайта firebird и работаем с ним.