如何将 FreeNX APPLICATION_LIBRARY_PRELOAD 配置到正确的目录?

如何将 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 查看的任何地方添加链接)?

答案1

根据您问题的描述,您的问题不是未安装库,而是ld(动态链接器)不知道它在哪里:CentOS 期望库在/usr/lib/但实际上它在/usr/lib/NX/lib

有几种方法可以解决这个问题:

  1. 在启动 NX 服务器之前,设置LD_LIBRARY_PATH环境变量以包含非标准库路径。

  2. 从库创建符号链接/usr/lib/NX/lib/*/usr/lib

  3. (“正确的方式”)告知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/libPATH_LIB=$NX_DIR/lib/NX/lib,现在唯一缺少的文件是实际上缺少(libXcomp.so.2)

相关内容