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

Mil*_*lan 5 deb

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

debian/control包含以下行:

Depends: ${shlibs:Depends}, ${misc:Depends}, libmysqlcppconn7v5 (>= 1.1.7)
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*itt 4

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

\n\n

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

\n\n

如果您确实想覆盖shlibs:Depends,您可以在运行.substvars后编辑构建过程中生成的\xe2\x80\x99s 文件:dpkg-shlibdeps

\n\n
override_dh_shlibdeps:\n    dh_shlibdeps\n    sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars\n
Run Code Online (Sandbox Code Playgroud)\n