【问题标题】:ldconfig: *.so* is not a symbolic linkldconfig: *.so* 不是符号链接
【发布时间】:2015-12-16 22:05:16
【问题描述】:

我最近在我们的一位同事不在时接手了一些 RPM 工作。在安装后步骤中,RPM 会在特定位置安装一些库,将包含这些文件路径的文件写入 /etc/ld.conf.so.d/,然后运行“ldconfig”。但是在调用时,很少有消息指出:“libXYZ.so* 不是符号链接”。

我查看了文件,但符号链接设置不正确。例如,libA.so.1 和 libA.so.1.1 是相同的文件,而不是 libA.so.1->libA.so.1.1。只要在安装了 RPM 的系统上运行 ldconfig,就会显示这些消息。

现在,没有什么特别的原因,我尝试通过创建一个名为 libmylib.so.1.1 的共享库来复制它。然后我创建了另一个名为 libmylib.so.1 的文件,它与之前的文件相同。我在 /etc/ld.conf.so.d 中添加了一个 test.conf 文件,其中包含这些共享库的路径,然后运行 ​​ldconfig。但我没有看到任何这些“不是符号链接”的消息。相反,ldconfig 为这两个文件设置了两个符号链接。该消息是否仅在特定情况下显示?

另外,当我安装共享库时,是否需要设置如下链接:

链接器名称 -> so name -> 真实姓名

手动?然后运行ldconfig?

这是我第一次使用 RPM 并安装共享库,因此我们将不胜感激。

谢谢

【问题讨论】:

  • 别介意伙计们,我知道我做错了什么。立即收到该消息。
  • 附注 - 请考虑将放在/etc/ld.conf.so.d 中的文件由正常的%install 进程生成并列在%files 中,以便RPM 数据库知道它来自哪里。 rpm -q --whatprovides /etc/ld.conf.so.d/yourfile 对管理员很有用。
  • 谢谢 Aaron,我不确定安装程序目前是否这样做。如果它在 %post 期间写入该文件,是否会将其添加到 RPM 数据库中?
  • 否,仅当它在 %files 部分中列出(或导入)时。 %post 应该只调用ldconfig

标签: centos shared-libraries rpm


【解决方案1】:

通常的做法是创建符号链接以将库版本和 soname 与构建/链接程序时使用的名称相关联。这里有一些关于它的cmets:

ldconfig 预计只有一个实际文件。这里有几个地方问过这个问题:

通常,这方面的问题是由于符号链接更新不当造成的。但是不正确的构建脚本也可能是问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多