Why can't I install libdwarf.so.0 and libdwarf.so.1 at the same time?

xuanji asked:

I’m trying to build hhvm from source as well as install it from a package (to compare differences). When building it from source, it requires a recent version of libdwarf, so I downloaded an rpm and installed that. I then built hhvm and it’s working perfectly. Then I tried to install an older version of hhvm from a repository and got this error.

Error: Package: hhvm-3.10.1-1.el7.centos.x86_64 (hhvm)
           Requires: libdwarf.so.0()(64bit)
           Available: libdwarf-20130207-4.el7.x86_64 (base)
           Installed: libdwarf-20160115-2.fc24.x86_64 (@/libdwarf-20160115-2.fc24.x86_64)

So it seems the repo version depends on libdwarf.so.0, and I’ve installed libdwarf.so.1. Why are these two packages conflicting? Isn’t the whole point of package.so.x version numbers so that two versions can be installed at the same time?

My answer:

You installed a libdwarf package for a completely different Linux distribution than the one you are running. This is not guaranteed to work.

RPM is only a packaging format and cannot guarantee that the package contents are appropriate for your system. The dependency information within the packages does that, and that is why you can’t perform this installation. In theory you could have multiple versions of a library installed, but in practice this only causes problems unless it’s done in a very carefully controlled way (such as Software Collections).

To fix the problem, go back to the correct libdwarf package, which is the one that came with CentOS.

yum downgrade libdwarf

View the full question and any other answers on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.