如何为守护进程提供单独的链接环境

如何为守护进程提供单独的链接环境

我有一款需要安装在工作站上的软件。我们称之为“Yeti 驱蚊器”。它支持 OpenSUSE 15.3,但我正在运行 Tumbleweed。我安装了 Yeti 驱蚊器并启动守护进程,它就启动了!但有什么东西让我检查所有二进制文件是否真的有效。我发现其中一个二进制文件确实不起作用。所以我把它放进/path/to/yeti-repellent/lib/yeti.conf/etc/ld.so.conf.d/现在 Yeti 驱蚊器可以工作了!而且zypper坏了!那么我如何才能隔离 Yeti 驱蚊器以便进行链接,而无需在 chroot 或容器中运行它呢?守护进程由 Systemd 管理,所以也许我可以通过这种方式隔离它?

答案1

您可以指定环境变量在 systemd 单元内

[Service]
Environment=LD_LIBRARY_PATH=/path/to/yeti-repellent/lib:/usr/lib:/lib

应该可以指定LD_LIBRARY_PATH并作为/path/to/yeti-repellent/lib第一个条目,这样 yeti-repellent 就会选择该版本的库而不是系统版本(zypper据推测是构建/链接的)。

编辑:

上述方法可能适用于您的特定用例,但这不是最佳实践。如果您可以在容器中运行应用程序,那么这可能是更好的方法(并且,假设这是一个企业级应用程序,那么与使用 绕过依赖关系相比,这种方法更有可能获得官方支持LD_LIBRARY_PATH)。

相关内容