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 查看的任何地方添加链接)?
答案1
根据您问题的描述,您的问题不是未安装库,而是ld
(动态链接器)不知道它在哪里:CentOS 期望库在/usr/lib/
但实际上它在/usr/lib/NX/lib
。
有几种方法可以解决这个问题:
在启动 NX 服务器之前,设置
LD_LIBRARY_PATH
环境变量以包含非标准库路径。从库创建符号链接
/usr/lib/NX/lib/*
至/usr/lib
(“正确的方式”)告知
ld
您的非标准库路径,以便搜索它们。
选项 1 和 2 应该很容易理解。
有关选项 3 的更多信息,查看类似问题的答案。
答案2
我回答自己的问题只是因为我碰巧找到了第四个解决方案——大海捞针。我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)