Как мне настроить FreeNX APPLICATION_LIBRARY_PRELOAD на правильный каталог?

Сервер FreeNX выдает следующую ошибку при запуске:
APPLICATION_LIBRARY_PRELOAD [...] /usr/lib/libX11.so could not be found,

Дело в том, что библиотека /usr/lib/libX11.so уже установлена, за исключением того, что в моей системе она находится в каталоге /usr/lib/NX/lib,
Как мне указать NX на правильный каталог?

Нет APPLICATION_LIBRARY_PRELOAD в /etc/nxserver/node.conf, Как я могу исправить эту проблему с каталогом и не испортить контексты SELinux (подумав просто добавить ссылки везде, где NX смотрит)?

2 ответа

Решение

Я отвечаю на свой вопрос только потому, что мне удалось найти 4-е решение - иголку в стоге сена. Я сделал несколько ldd тестирование на /usr/bin/nx*, что странным образом не возвращало информацию, соответствующую моим динамическим библиотекам, которую я ожидал. grep на тех же самых файлах, которые были найдены в /usr/bin/nxloadconfig:

#########################################################################
# INTERNAL STUFF
# DO NOT TOUCH unless you REALLY know what you are doing
#########################################################################

NX_VERSION=3.2.0-74-SVN
NX_LICENSE="OS (GPL, using backend: %BACKEND%)"

# Where can different nx components be found
NX_DIR=/usr
PATH_BIN=$NX_DIR/bin # if you change that, be sure to also change the public keys
PATH_LIB=$NX_DIR/lib
NX_ETC_DIR=/etc/nxserver
NX_SESS_DIR=/var/lib/nxserver/db
NX_HOME_DIR=/var/lib/nxserver/home

# Advanced users ONLY
AGENT_LIBRARY_PATH="" #Calculated
PROXY_LIBRARY_PATH="" #Calculated
APPLICATION_LIBRARY_PATH="" #Calculated
APPLICATION_LIBRARY_PRELOAD="" #Calculated

# the name of the authorized keys file for ssh
SSH_AUTHORIZED_KEYS="authorized_keys2"

Я отредактировал вручную PATH_LIB=$NX_DIR/lib в PATH_LIB=$NX_DIR/lib/NX/lib и теперь единственные отсутствующие файлы фактически отсутствуют (libXcomp.so.2)

Основываясь на описании вашего вопроса, ваша проблема не в том, что библиотека не установлена, а в том, что ld (динамический компоновщик) не знает, где он находится: CentOS ожидает, что библиотека будет в /usr/lib/ но это действительно в /usr/lib/NX/lib,

Есть несколько способов исправить это:

  1. Установить LD_LIBRARY_PATH переменная окружения, включающая ваши нестандартные пути к библиотекам перед запуском сервера NX.

  2. Создать символические ссылки из /usr/lib/NX/lib/* библиотеки для /usr/lib

  3. ("Правильный путь") Расскажите ld о ваших нестандартных путях к библиотекам, поэтому он ищет их.


Варианты 1 и 2 должны быть довольно понятны.
Для получения дополнительной информации о Варианте 3, проверьте этот ответ на подобный вопрос.

Другие вопросы по тегам