【问题标题】:Linux service can't load library path in the /etc/ld.so.conf.dLinux 服务无法加载 /etc/ld.so.conf.d 中的库路径
【发布时间】:2013-08-21 23:38:08
【问题描述】:

我在 Linux 中有一项服务。

当我启动它时,使用服务启动或在init.d 启动。它无法加载存储在/etc/ld.so.conf.d/ 中的配置。因此,该服务无法启动某些加载/etc/ld.so.conf.d/. 中的库路径的进程。

但是当我在 shell 中运行这个服务脚本时,它工作正常。

如何加载/etc/ld.so.conf.d/中的库路径?

非常感谢。

【问题讨论】:

  • [问题是服务去除了除 TERM、PATH 和 LANG 之外的所有环境变量](unix.stackexchange.com/a/44378) 有用的链接有助于为什么服务不起作用。

标签: linux service library-path


【解决方案1】:

您最近是否运行过ldconfig(以root 身份)?有一个由该程序更新的共享库缓存,如果您在没有运行ldconfig 的情况下更新了/etc/ld.so.conf.d 中的文件,则缓存数据可能已过期。

【讨论】:

  • 不,您必须在编辑/etc/ld.so.conf/etc/ld.so.conf.d 中的文件之一后运行ldconfig。之后,假设您不更改这些文件,您通常不需要重新运行ldconfig
  • 它不起作用。我在 service myserv restart 之前运行 ldconfig。它仍然无法正常运行。我得LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/myprog/lib export LD_LIBRARY_PATH 这之后才能执行
  • 嗯,那很简单。将/usr/local/myprog/lib添加到/etc/ld.so.conf.d中的新文件中(可能是myprog.conf,如果你的程序真的叫myprog),然后运行ldconfig,然后再试一次。
  • 另外,请仔细检查您的 /etc/ld.so.conf 是否包含以下行:include /etc/ld.so.conf.d/*.conf。没有它,/etc/ld.so.conf.d 中的任何内容都不会被加载。
  • 是的。正如你所说,我已经设置了/etc/ld.so.conf。但它没有用。我必须在启动脚本中导出路径。我认为这可能是由于服务负载 ENV 有一些限制。我会尝试搜索一些关于服务和环境的文档。非常感谢。
猜你喜欢
  • 2017-10-16
  • 2015-08-14
  • 2021-10-11
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 2023-02-12
  • 1970-01-01
相关资源
最近更新 更多