我正在构建一个依赖于libmysqlcppconn7v5
. 我在具有libmysqlcppconn7v5
1.1.9 的 Ubuntu 上构建它,但是它打算安装在具有libmysqlcppconn7v5
1.1.7 的 Debian 上。
debian/control
包含以下行:
Depends: ${shlibs:Depends}, ${misc:Depends}, libmysqlcppconn7v5 (>= 1.1.7)
构建包时,它仍然具有依赖关系libmysqlcppconn7v5 (>= 1.1.9)
如何强制它依赖于低于我在构建包时安装的包版本?
如果
shlibs:Depends
最终指定 1.1.9 或更高版本libmysqlcppconn7v5
,那(理论上)意味着您构建的二进制文件使用仅在 1.1.9 或更高版本中可用的符号。libmysqlcppconn7v5
因此,即使您覆盖了依赖项,您的软件包也不一定能在 Debian 1.1.7 上运行。(我对此有所限定,因为该软件包不提供符号或 shlibs 文件,因此启发式方法无效。)作为一般规则,如果你想在 Debian 上安装你的软件包,你需要在 Debian 上构建它。这在 Ubuntu 上并不难。看看
debootstrap
,sbuild
和pbuilder
.pbuilder
特别是可以很容易地建立在多个发行版上。如果你真的想覆盖
shlibs:Depends
,你可以编辑.substvars
在构建过程中生成的文件,在dpkg-shlibdeps
运行之后: