/usr/lib 和 /usr/local/lib 有什么区别?

l3g*_*i0n 7 ssl

我在 Void Linux 上。

我通过 Void 包管理器安装了libressl 。它将libssl.so.48.0.1放入/usr/lib中。通过此设置,我遇到了错误,并且https在我的应用程序中无法正常工作。

所以我从源代码编译了openssl-1.1并将libssl.so.1.1复制到/usr/local/lib中,然后复制到ldconfig

然后我的应用程序开始正常工作。

为什么libressl 附带的libssl.so.48.0.1不起作用?难道它的版本比我们编译的版本高吗?

另外,为什么/usr/local/lib中的libssl.so.1.1会覆盖/usr/lib中的libssl.so.48.0.1?既然他们都在场?

Gar*_*aro 10

  • 对于主题中的问题:/usr/local/lib适用于您自己安装(编译)的库。/usr/lib适用于您的发行版提供的库。您可能需要阅读文件系统层次结构标准(FHS)以获取更多信息。
  • 对于正文中的第一个问题:要确切知道为什么它不起作用,需要更多信息。您已经可以记住,新版本的软件/库并不总是更好。它们可能会破坏兼容性,由于新功能而引入错误,......
  • 对于第二个问题:
    • 原因是系统遵循目录中提到的顺序,$LD_LIBRARY_PATH直到找到可以使用的库。如果 var 不存在,它将使用 的内容/etc/ld.so.conf
    • 其背后的想法是系统管理员应该控制系统,而不是发行版的开发人员。如果您想使用自己的版本(即 中的版本/usr/local/lib),那么系统应该允许您这样做。