Как файлы библиотек (*.so) разрешают общие зависимости?

Для доступа к X вам нужны переменные окружения DISPLAYи XAUTHORITY. В зависимости от настроек sudo может удалить их. Вы можете проверить это с помощью sudo env, чтобы увидеть переменные окружения.

Чтобы сохранить пользовательскую среду, вы можете использовать sudo -E. У этого есть ловушка HOMEдля дома ваших пользователей, и файлы конфигурации могут получить неправильные права доступа к файлам. Однако, чтобы избежать этого, sudo -Hустанавливает HOMEв /root.

Объедините это для gparted:

sudo -EH gparted

С помощью:

можно установить только нужные переменные.

sudo env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gparted

Сообщения об ошибках:

cannot open display:означает, что DISPLAYпусто или не существует.

no protocol specifiedозначает, что DISPLAYустановлен и действителен, но XAUTHORITY, указывающий на куки-файл аутентификации, не установлен или куки-файл недействителен. В качестве альтернативы, xhost +SI:localuser:rootразрешает root временный доступ к X до выхода из системы.


То же самое относится и к доступу Wayland с WAYLAND_DISPLAYи XDG_RUNTIME_DIR. Проблемы с корневым доступом Wayland также можно решить с помощью sudo -EH. Подробности и ловушку с XDG_RUNTIME_DIRсм. в . Будет ли Wayland когда-либо поддерживать графический sudo?

1
20.09.2019, 09:49
1 ответ

Динамический компоновщик ищет библиотеки в разных местах, но по умолчанию они не включают текущий каталог. В Linux список

  • пути, определенные в rpath бинарника, если таковые имеются;
  • пути, перечисленные в LD_LIBRARY_PATH, если таковые имеются;
  • пути, определенные в пути выполнения бинарного файла, если таковые имеются;
  • библиотеки, известные в /etc/ld.so.cache;
  • пути системных библиотек(/usr/libи т. д. ).

Ссылка выше содержит более подробную информацию.

Вы можете повлиять на способ разрешения зависимостей путем экспорта LD_LIBRARY_PATH; конкретно в вашем случае:

export LD_LIBRARY_PATH=.

(Не оставляйте это значение.)

6
27.01.2020, 23:22

Теги

Похожие вопросы