1

Two nights ago I compiled Calamares. The next morning, when trying to run it, I got:

/usr/bin/calamares: error while loading shared libraries: libkpmcore.so.11: cannot open shared object file: No such file or directory

I see that my distro, Manjaro, has updated kpmcore to have libkpmcore.so.12.

And here's my newbie question: what's the best chance I have to prevent this on my own Calamares package?

Thanks for your help.

1 Answer 1

0

I don't know what is calamares or libkpmcore. But the problem appears because of trying to resolve a non existance library.

Unix library naming usually follows the convention lib{name}.so[.major[.minor[.patch]]] (enclosed in [] means optional).

The problem with this naming scheme is that if you link to lib{name}.so.0.1.0 for example, then update the library to 0.1.1, this file no longer exists as it got replaced with lib{name}.so.0.1.1.

To workaround this, libraries have symlinks that point to the actual shared library

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

So when the library gets updated to 0.1.1, programs using the previous version continue to work as the symlink still exists but point to the new version

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

In your case, you should link to the symlink, not the library.

1
  • I think that won't work, as the name shows ABI compatibility. Hence the new soname won't be compatible. Commented Dec 12, 2022 at 12:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .