Deb
覆蓋由 shlibs:Depends in deb 設置的依賴包版本
我正在建構一個依賴於
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
執行之後:override_dh_shlibdeps: dh_shlibdeps sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars