0

I am trying to upgrade multiple machines to all use the same, more recent version of Google's protobuf library and compiler. I am currently on version 2.3.0 and want to upgrade to at least 2.4.1.

The problem is that when attempting to upgrade, I have packages which depend on protobuf and more specifically, seem to depend on the underlying library which the protobuf-2.3.0 RPM provides, "libprotobuf.so.6".

It appears as if that "6" is the issue, because yum is recognizing that by upgrading to the protobuf-2.4.1 package that library will be gone in favor of "libprotobuf.so.7". See following error:

---> Package protobuf.x86_64 0:2.3.0-7.el6 will be updated
--> Processing Dependency: libprotobuf.so.6()(64bit) for package: MYPACKAGE-1.1.1-1.el6.x86_64
...
---> Package protobuf.x86_64 1:2.4.1-1 will be an update
...
Error: Package: MYPACKAGE-1.1.1-1.el6.x86_64 (@my-repo)
       Requires: libprotobuf.so.6()(64bit)
       Removing: protobuf-2.3.0-7.el6.x86_64 (@epel)
           libprotobuf.so.6()(64bit)
       Updated By: 1:protobuf-2.4.1-1.x86_64 (my-repo)
           Not found

I understand what it's saying, I think. It can't find that library. But I don't want it to, as protobuf-2.4.1 contains "libprotobuf.so.7", as expected, and that's the library I want.

Is it wrong that protobuf-2.3.0 included a version number on the soname? This package came from the epel repo so I trust it was following convention, but I don't see how to upgrade now.

Is there a way around this? How can I ever upgrade my protobuf version with the requirement in place?

danske
  • 637
  • 1
  • 6
  • 11
  • That output says your package depends on `libprotobuf.so.6()(64bit)` if you think it should be depending on `libprotobuf.so.7()(64bit)` then your package was built incorrectly. I'm not entirely sure I understand what that error is saying as I haven't seen that exact output before but yes, the problem seems to be that upgrading that package (Why is that happening anyway, are you asking for that explicitly?) is causing a dependency error. – Etan Reisner Oct 22 '14 at 21:39
  • @EtanReisner, I know that it is currently depending on libprotobuf.so.6, and I would like it to accept an upgrade to libprotobuf.so.7. This will occur by upgrading the package "protobuf-2.3.0" to "protobuf-2.4.1", so despite the number 6 changing to 7, the versioning on the packages seems to indicate a non-breaking change, so this upgrade should be allowed. And to be clear - yes, I am asking for this explicitly. I am trying to upgrade the protobuf package for consistency across multiple machines. – danske Oct 22 '14 at 22:04
  • If the versions of protobuf involved here are, in fact, ABI compatible then whoever was responsible for changing the soname/version made a mistake. This is what soname versioning is for. To prevent exactly this sort of library change from underneath the software using it. You can't "work around" that detail without manually linking to the library at runtime yourself (dlopen/etc.). – Etan Reisner Oct 23 '14 at 00:13

0 Answers0