Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to build and deploy package with different versions of one dependency?

For example I maintain an application that uses libmemcached. I can compile it using libmemcached5 or libmemcached6, also build .deb package pointing to libmemcached5, libmemcached6 or even libmemcached5|libmemcached6 as dependency, but actually my binary is compiled with only one of them. What's the best way I can solve this trouble to deploy my package without upgrading/downgrading any dependencies on the user-side?

like image 268
Anzor A. Khoutov Avatar asked Nov 12 '22 17:11

Anzor A. Khoutov


1 Answers

If you are using a repository, or if multiple compiled versions of your app are acceptable, then your best bet is to compile your app twice, once with libmemcached5 and once with libmemcached6, and package them separately, with different package names, and use a virtual package to install the right one automatically:

 Package:   myapplication-memchched5
 Version:   1.3.17-1
 Depends:   libmemcached5
 Provides:  myapplication
 Conflicts: myapplication
 Replaces:  myapplication

and

 Package:   myapplication-memchched6
 Version:   1.3.17-1
 Depends:   libmemcached6
 Provides:  myapplication
 Conflicts: myapplication
 Replaces:  myapplication

Now aptitude install myapplication will automatically select either myapplication-memchched5 or myapplication-memchched6 based on what else needs to be installed.

like image 57
Stobor Avatar answered Nov 15 '22 07:11

Stobor