Guiding co-dependent RPM packages to swap nicely

Miro Hrončok mhroncok at redhat.com
Wed Feb 21 09:54:16 UTC 2024


Hello.

Assume I have two "stacks" of RPM packages available:

postgresql16
   provides postgresql-any version 16
   conflicts with other postgresql-any
postgresql16-plugin
   provides postgresql-any-plugin
   requires postgresql16
   conflicts with other postgresql-any-plugin

postgresql20
   provides postgresql-any version 20
   conflicts with other postgresql-any
postgresql20-plugin
   provides postgresql-any-plugin
   requires postgresql20
   conflicts with other postgresql-any-plugin

On my system, I have postgresql16 and postgresql16-plugin installed and I want 
to "upgrade" to postgresql20*.

Using my distribution package manager, I would want to run something like:
   dnf swap postgresql16 postgresql20

However that will fail, as the package manager does not know I want to also 
swap postgresql16-plugin with postgresql20-plugin.

Is there something I can do as a package maintainer to "guide" the co-dependent 
swap case?

I was thinking something like:

postgresql20-plugin:
   Obsoletes: (postgresql-any-plugin if postgresql-any != 20)


However that is not possible in RPM, "No rich dependencies allowed for this 
type: Obsoletes".

Is there anything else?

Thanks,
-- 
Miro Hrončok
-- 
Phone: +420777974800
IRC: mhroncok



More information about the Rpm-list mailing list