通过XRDP登录时,LD_LIBRARY_PATH清除

LD_LIBRARY_PATH cleared when logging in through xrdp

本文关键字:LIBRARY PATH 清除 LD XRDP 登录 通过      更新时间:2023-10-16

背景:

我目前正在某些Java插件上的Linux虚拟机中工作,通过将它们放入/opt/eclipse/dropins/dropins 文件夹中,我将其安装到Eclipse中。我的插件需要支持CentOS 6和CentOS 7 VM(因为它们是用Java编写的,并且两种CentOS的口味都安装了Java 1.8.0(。我的插件在两个OSS上都可以构建并安装正好。我在日食中看到它们,并且可以按预期与它们互动。

我需要支持的VM可以是我的计算机本地的(使用VMware Player/Workstation打开(,也可以在云服务器上托管。我们使用Windows远程桌面通过Linux服务器上的XRDP进入云VM。

问题:

我的插件之一 nddsjava.so 来自/opt/rti_connext_dds-5.2.3/lib/x64linux3gcc4.8.8.2

在本地VM(CentOS 6和7(上,我只能在an andc/profile.d脚本中设置LD_Library_path,以便任何登录的用户都可以获取通往所需的C 库的路径。

在CentOS 7 Cloud VM上,当调用此插件时,我会得到java.lang.UnsatisfiedLinkError: no nddsjava in java.library.path。这发生在通过Linux菜单打开Eclipse时,仅限。如果我从那里打开终端并开始日食,则插件可以找到C 库(因为我的ld_library_path设置在我的/bin/bash终端中(。我进行了一些挖掘,发现运行chmod g-s /usr/bin/ssh-agent从Linux菜单打开Eclipse时解决了问题(是的,我知道Chmod chmod打开了一个安全性漏洞。我愿意通过此问题(。

在CentOS 6 Cloud VM上,我从未收到插件来找到C 库。ld_library_path在通过 XRDP 登录时似乎会被擦除从GUI产生的也不具有LD_LIBRARY_PATH。

我还尝试在没有运气的情况下将-Djava.library.path添加到我的eclipse.ini文件中。即使它存在于同一目录中,它也会在下一个C 库中失败:java.lang.UnsatisfiedLinkError: /opt/rti_connext_dds-5.2.3/lib/x64Linux3gcc4.8.2/libnddsjava.so: libnddsc.so: cannot open shared object file: No such file or directory

问题:

是否有一个地方可以为Linux的所有口味设置我的LD_Library_path我试图支持的所有口味(本地CentOS 6,XRDP Centos 6,Local Centos 7和XRDP Centos 7(?

注意:当我在下面说云VM时,我的意思是服务器托管的VM,其中我windows-remote-desktopoppoppoppoppope。

在CentOS 6云VM中,服务器故障的此答案对我有用。CentOS 7 Cloud VM在/etc/xrdp中没有startwm.sh脚本。取而代之的是,它生活在/usr/libexec/xrdp中,并且不包含xinitrc行(在服务器故障链接中引用(,从而在CentOS 6云VM中引起了问题。在CentOS 7 Cloud VM中,必须擦拭LD_LIBRARY_PATH变量的其他内容,因此我仍然需要执行chmod g-s /usr/bin/ssh-agent以允许在启动上调用我的/etc/profile.d脚本。