Сервер 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
.
Есть несколько способов исправить это:
Установить LD_LIBRARY_PATH
переменная среды, чтобы включить нестандартные пути к библиотекам перед запуском сервера NX.
Создайте символические ссылки из /usr/lib/NX/lib/*
библиотеки для /usr/lib
("Правильный путь") Скажите 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)