我正在构建一个依赖于libmysqlcppconn7v5
.我在具有 1.1.9 的 Ubuntu 上构建它libmysqlcppconn7v5
,但它旨在安装在具有libmysqlcppconn7v5
1.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 上并不难做到;看看debootstrap
,sbuild
和pbuilder
。pbuilder
特别是可以轻松设置以多个发行版为基础。
如果你真的想要覆盖shlibs:Depends
,您可以在运行.substvars
后编辑构建期间生成的文件:dpkg-shlibdeps
override_dh_shlibdeps:
dh_shlibdeps
sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars