Ich baue ein Debian-Paket, das von libmysqlcppconn7v5
abhängt . Ich baue es auf Ubuntu, das libmysqlcppconn7v5
hat 1.1.9, jedoch soll es auf Debian installiert werden, das libmysqlcppconn7v5
hat 1.1.7.
debian/control
enthält folgende Zeile:
Depends: ${shlibs:Depends}, ${misc:Depends}, libmysqlcppconn7v5 (>= 1.1.7)
Wenn das Paket gebaut wird, hat es immer noch die Abhängigkeit libmysqlcppconn7v5 (>= 1.1.9)
Wie kann ich erzwingen, dass es eine Abhängigkeit von einer niedrigeren Paketversion hat, als ich beim Erstellen des Pakets installiert habe?
Akzeptierte Antwort:
Wenn shlibs:Depends
schließlich die Version 1.1.9 oder höher von libmysqlcppconn7v5
angibt , bedeutet dies (theoretisch), dass die von Ihnen erstellte Binärdatei ein Symbol verwendet, das nur in Version 1.1.9 oder höher verfügbar ist. Ihr Paket funktioniert also nicht unbedingt unter Debian mit libmysqlcppconn7v5
1.1.7, auch wenn Sie die Abhängigkeiten überschreiben. (Ich schränke dies etwas ein, da das Paket keine Symbole oder Shlibs-Dateien bereitstellt, sodass die Heuristik nicht gültig ist.)
In der Regel müssen Sie Ihr Paket auf Debian bauen, wenn Sie es auf Debian installieren möchten. Das ist unter Ubuntu gar nicht so schwer; schau dir mal debootstrap
an , sbuild
und pbuilder
. pbuilder
insbesondere kann es leicht eingerichtet werden, um auf mehreren Distributionen aufzubauen.
Wenn Sie wirklich shlibs:Depends
überschreiben möchten , können Sie die .substvars
bearbeiten Datei, die während des Builds generiert wird, nach dpkg-shlibdeps
ist gelaufen:
override_dh_shlibdeps:
dh_shlibdeps
sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars