Deb

覆蓋由 shlibs:Depends in deb 設置的依賴包版本

  • October 9, 2018

我正在建構一個依賴於libmysqlcppconn7v5. 我在具有libmysqlcppconn7v51.1.9 的 Ubuntu 上建構它,但是它打算安裝在具有libmysqlcppconn7v51.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,sbuildpbuilder. pbuilder特別是可以很容易地建立在多個發行版上

如果你真的想覆蓋shlibs:Depends,你可以編輯.substvars在建構過程中生成的文件,在dpkg-shlibdeps執行之後:

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

引用自:https://unix.stackexchange.com/questions/459392