Назад | Перейти на главную страницу

Как настроить 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)?

Основываясь на описании в вашем вопросе, ваша проблема не в том, что библиотека не установлена, а в том, что 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, посмотрите этот ответ на аналогичный вопрос.

Отвечаю на свой вопрос только потому, что случайно нашел 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)