如何防止对自己的包的依赖被破坏?

如何防止对自己的包的依赖被破坏?

两天前的晚上,我编译了 Calamares。第二天早上,当我尝试运行它时,我得到:

/usr/bin/calamares:加载共享库时出错:libkpmcore.so.11:无法打开共享对象文件:没有这样的文件或目录

我看到我的发行版 Manjaro 已将 kpmcore 更新为 libkpmcore.so.12。

这是我的新手问题:我自己的 Calamares 包防止这种情况的最佳机会是什么?

感谢您的帮助。

答案1

我不知道什么是calamareslibkpmcore。但由于试图解决不存在的库而出现问题。

Unix 库命名通常遵循约定lib{name}.so[.major[.minor[.patch]]](括起来[]表示可选)。

此命名方案的问题在于,如果您链​​接到lib{name}.so.0.1.0例如,然后将库更新为0.1.1,则该文件不再存在,因为它已被替换为lib{name}.so.0.1.1.

为了解决这个问题,库具有指向实际共享库的符号链接

lib{name}.so.0.1 -> lib{name}.so.0.1.0

因此,当库更新到 时0.1.1,使用以前版本的程序将继续工作,因为符号链接仍然存在,但指向新版本

lib{name}.so.0.1 -> lib{name}.so.0.1.1

在您的情况下,您应该链接到符号链接,而不是库。

相关内容