Vytvářím balíček Debian, který závisí na libmysqlcppconn7v5
. Stavím to na Ubuntu, které má libmysqlcppconn7v5
1.1.9, je však určen k instalaci na Debian, který má libmysqlcppconn7v5
1.1.7.
debian/control
obsahuje následující řádek:
Depends: ${shlibs:Depends}, ${misc:Depends}, libmysqlcppconn7v5 (>= 1.1.7)
Když je balíček sestaven, stále má závislost libmysqlcppconn7v5 (>= 1.1.9)
Jak mohu přinutit, aby byl závislý na nižší verzi balíčku, než jsem nainstaloval při sestavování balíčku?
Přijatá odpověď:
Pokud shlibs:Depends
skončí specifikací verze 1.1.9 nebo novější libmysqlcppconn7v5
, to (teoreticky) znamená, že binární soubor, který jste vytvořili, používá symbol, který je dostupný pouze ve verzi 1.1.9 nebo novější. Váš balíček tedy nemusí nutně fungovat na Debianu s libmysqlcppconn7v5
1.1.7, i když přepíšete závislosti. (Poněkud to kvalifikuji, protože balíček neposkytuje soubory symbolů ani shlibs, takže heuristika není platná.)
Obecně platí, že pokud jej chcete nainstalovat na Debian, musíte svůj balíček postavit na Debianu. To není tak těžké udělat na Ubuntu; podívejte se na debootstrap
, sbuild
a pbuilder
. pbuilder
zejména lze snadno nastavit tak, aby stavělo na více distribucích.
Pokud opravdu chcete přepsat shlibs:Depends
, můžete upravit .substvars
soubor, který je vygenerován během sestavení, po dpkg-shlibdeps
spustilo:
override_dh_shlibdeps:
dh_shlibdeps
sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars