覆盖 shlibs 设置的依赖包版本:Depends in deb

覆盖 shlibs 设置的依赖包版本:Depends in deb

我正在构建一个依赖于libmysqlcppconn7v5.我在具有 1.1.9 的 Ubuntu 上构建它libmysqlcppconn7v5,但它旨在安装在具有libmysqlcppconn7v51.1.7 的 Debian 上。

debian/control包含以下行:

Depends: ${shlibs:Depends}, ${misc:Depends}, libmysqlcppconn7v5 (>= 1.1.7)

构建包后,它仍然具有依赖关系libmysqlcppconn7v5 (>= 1.1.9)

如何强制它依赖于比我在构建包时安装的版本更低的包版本?

答案1

如果shlibs:Depends最终指定 1.1.9 或更高版本libmysqlcppconn7v5,则(理论上)意味着您构建的二进制文件使用仅在 1.1.9 或更高版本中可用的符号。因此,libmysqlcppconn7v5即使您覆盖了依赖项,您的软件包也不一定能在 1.1.7 版本的 Debian 上运行。 (我对此进行了一定的限定,因为该包不提供符号或 shlibs 文件,因此启发式方法无效。)

作为一般规则,如果您想在 Debian 上安装软件包,则需要在 Debian 上构建软件包。这在 Ubuntu 上并不难做到;看看debootstrapsbuildpbuilderpbuilder特别是可以轻松设置以多个发行版为基础

如果你真的想要覆盖shlibs:Depends,您可以在运行.substvars后编辑构建期间生成的文件:dpkg-shlibdeps

override_dh_shlibdeps:
    dh_shlibdeps
    sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars

相关内容