What about this solution: In src:poppler provide a virtual package
Package: libpoppler-glibYY Provides: libpopplerXX-glibYY (= ${binary:Version}) (where XX and YY are the sonames of the respective packages) and in src:inkscape (and maybe others) add some sed manipulation to d/rules: # generate a virtual package dependency to ensure inkscape uses # matching versions of libpopplerXX and libpoppler-glibYY # #969907 execute_after_dh_shlibdeps: sed -ri -e '/shlibs:Depends=/ s/$$/, POPPLER-GLIB/' \ -e 's/(libpoppler[0-9]+)(.*)POPPLER/\1\2\1/' \ -e 's/libpoppler-(glib[0-9]+)(.*)GLIB/\1\2\1/' \ debian/inkscape.substvars Just tried that and it generated: Depends: ..., libpoppler-glib8 (>= 0.18.0), libpoppler123 (>= 22.08.0), ..., libpoppler123-glib8 This should ensure inkscape depends on libpopplerXX and libpoppler-glibYY with matching versions (something that cannot be expressed easily in regular shared library package dependencies) without unneccessarily tightening poppler dependencies in packages that use only one of these libraries. (This will intentionally generate an unsatisfiable meta dependency once inkscape no longer links to both libpopplerXX and libpoppler-glibYY.) Andreas