apt-get 似乎没有正确安装库包

apt-get 似乎没有正确安装库包

liblz4.so最近我安装了库apt-get install liblz4-1,但我注意到上面的命令只安装这些文件/链接:

/usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
/usr/lib/x86_64-linux-gnu/liblz4.so.1 -> liblz4.so.1.7.1

我的理解是,在 Ubuntu 中,库名称可能包含库版本,但必须始终存在指向不包含它的这些文件之一的链接,因此ld其他二进制文件/库可以找到它。在上面的例子中,这样的链接是/usr/lib/x86_64-linux-gnu/liblz4.so -> liblz4.so.1.7.1。但是,apt-get尚未创建此链接,我需要自己创建它。

这是软件包中的“失败”liblz4还是某些 Ubuntu 软件包中预期的情况?有没有更好的安装方法(不需要手动创建链接)?

答案1

来自Debian 政策手册,它管辖这个:

将二进制文件或另一个共享库链接到共享库时,该共享库的 SONAME 未知。相反,共享库是通过查找与库名称匹配并附加 .so 的文件来找到的。该文件作为指向共享库的符号链接存在于文件系统上。

共享库通常分为几个二进制包。 SONAME 符号链接由运行时共享库​​包安装,裸 .so 符号链接安装在开发包中,因为它仅在链接二进制文件或共享库时使用。

因此,在liblz4-1包含运行时库的包中,您liblz4.so.1.7.1可以使用它已编译的二进制文件在开发包中,liblz4-dev您有liblz4.so符号链接,它允许链接器嵌入正确的引用编译它们时

liblz4-dev包取决于运行时包的当前版本,因此符号链接不会悬空,并且当发行版发布需要更改SOVERSION.

答案2

根据apt-file search liblz4.so,安装它的软件包不是您选择的软件包,而是liblz4-dev

$ apt-file search liblz4.so
liblz4-1: /usr/lib/x86_64-linux-gnu/liblz4.so.1
liblz4-1: /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
liblz4-1-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
liblz4-dev: /usr/lib/x86_64-linux-gnu/liblz4.so

我不知道liblz4.so.1.7.1和之间有什么区别(如果有的话) liblz4.so;该搜索是在 Mint 19.3(仿生)上完成的。

相关内容