Вопрос: Приложение, установленное в ~ / usr, запускается из терминала, но не из приложения (или почему установка ld_library_path в .profile не работает так, как должна)


Я создал и установил приложение в соответствии с выбранным мной каталогом, скажем, под /home/jim/usr, поэтому файлы были помещены в три-четыре папки, все под этим $HOME/usr (например, bin, include, lib, share, и т.д.).

Я могу запустить это приложение из командной строки очень хорошо, поскольку я добавил правильные пути к моим переменным environement PATH а также LD_LIBRARY_PATH в ~/.bashrc,

Я добавил те же пути к ~/.profile файл, который, если я не ошибаюсь, должен анализироваться Ubuntu.

Не работает. Ничего. Куда я могу пойти оттуда?

EDIT: я вышел из системы и перезапустил компьютер. Оба ничего не изменили. Проблема, похоже, связана с тем, что независимо от того, что я делаю, переменная среды LD_LIBRARY_PATH неправильно передается Ubuntu.

Используя файлы журналов, я обнаружил, что приложение, которое я пытаюсь запустить в этом примере, не находит его зависимостей, расположенных в ~/usr/lib,

Одним из решений было бы добавить /home/jim/usr/lib папку внутри файла, расположенного в /etc/ld.so.conf.d/, но у меня нет прав администратора на этой машине.

Создание скрипта-обертки, подобного этому, работает:

#!/bin/bash
export LD_LIBRARY_PATH=$HLOC/usr/lib
application &> $HOME/application_messages.log

но это заставит меня обернуть все мои домашние скомпилированные приложения с помощью этого скрипта. Есть идеи?

Почему Ubuntu / Gnome удаляет переменную среды LD_LIBRARY_PATH из моих заданных переменных? Это потому, что попытка сделать это - плохая практика?

UPDATE (и решение): Как выяснил Кристофер, на этой панели есть отчет об ошибке. LD_LIBRARY_PATH - снята с охраны после разбора ~/.profile файл. См. Отчет об ошибке, Кажется, единственным решением на данный момент является создание сценария оболочки.


4
2018-02-09 16:34


Источник


Были ли эти переменные среды доступны только внутри вашей оболочки (используя «источник» в оболочке)? Если это так, выйдите из системы. Авторизоваться.
@Christopher, я не знаю, как узнать, доступны ли эти переменные среды для Ubuntu (то есть для приложения, запущенного из меню «Приложения»). Переменные env кажутся недоступными, поэтому мое приложение не запускается из меню. Как проверить, доступны ли они? - levesque
Откройте новую оболочку - без источников ничего, как .bashrc / .profile, и посмотрите, есть ли переменные.
@Christopher, Модификации моей переменной среды PATH есть, но LD_LIBRARY_PATH, кажется, отсутствует. - levesque
Ох ... это ошибка: edge.launchpad.net/ubuntu/+bug/366728


Ответы:


Создайте для него файл:

sudo vim /etc/ld.so.conf.d/my_application.conf

И содержимое этого файла:

/home/jim/usr/lib

Сохранить. Восстановить кеш:

sudo ldconfig -v

4
2018-02-09 19:08



Спасибо, но я уже это сделал. В любом случае, если я не ошибаюсь, переменные среды, определенные в bashrc, не используются nautilus / gnome, если приложения не запускаются в режиме терминала ... - levesque
Хммм. Помогает ли это использовать динамические компоновщики времени выполнения, добавленные в решение?
Добавление папки lib в ld.so.conf.d работает, но у меня нет прав администратора на этом компьютере (я знаю, eww). - levesque
Это ошибка: edge.launchpad.net/ubuntu/+bug/366728