Sto costruendo un pacchetto Debian che dipende da libmysqlcppconn7v5
. Lo sto costruendo su Ubuntu che ha libmysqlcppconn7v5
1.1.9, tuttavia è pensato per essere installato su Debian che ha libmysqlcppconn7v5
1.1.7.
debian/control
contiene la seguente riga:
Depends: ${shlibs:Depends}, ${misc:Depends}, libmysqlcppconn7v5 (>= 1.1.7)
Quando il pacchetto viene compilato, ha ancora la dipendenza libmysqlcppconn7v5 (>= 1.1.9)
Come posso forzarlo a dipendere da una versione del pacchetto inferiore a quella che ho installato durante la creazione del pacchetto?
Risposta accettata:
Se shlibs:Depends
finisce per specificare la versione 1.1.9 o successiva di libmysqlcppconn7v5
, che (teoricamente) significa che il binario che hai creato utilizza un simbolo che è disponibile solo nella versione 1.1.9 o successiva. Quindi il tuo pacchetto non funzionerà necessariamente su Debian con libmysqlcppconn7v5
1.1.7, anche se si sovrascrivono le dipendenze. (Lo sto qualificando in qualche modo poiché il pacchetto non fornisce simboli o file shlibs, quindi l'euristica non è valida.)
Come regola generale, è necessario compilare il pacchetto su Debian se si desidera installarlo su Debian. Questo non è poi così difficile da fare su Ubuntu; dai un'occhiata a debootstrap
, sbuild
e pbuilder
. pbuilder
in particolare può essere facilmente configurato per costruire su più distribuzioni.
Se davvero vuoi sovrascrivere shlibs:Depends
, puoi modificare il .substvars
file che viene generato durante la compilazione, dopo dpkg-shlibdeps
è stato eseguito:
override_dh_shlibdeps:
dh_shlibdeps
sed -i s/1.1.9/1.1.7/g debian/yourpackage.substvars