两天前的晚上,我编译了 Calamares。第二天早上,当我尝试运行它时,我得到:
/usr/bin/calamares:加载共享库时出错:libkpmcore.so.11:无法打开共享对象文件:没有这样的文件或目录
我看到我的发行版 Manjaro 已将 kpmcore 更新为 libkpmcore.so.12。
这是我的新手问题:我自己的 Calamares 包防止这种情况的最佳机会是什么?
感谢您的帮助。
答案1
我不知道什么是calamares
或libkpmcore
。但由于试图解决不存在的库而出现问题。
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
在您的情况下,您应该链接到符号链接,而不是库。