如何使用不同版本的一个依赖项构建和部署包?

Anz*_*tov 5 c++ ubuntu gcc makefile deb

例如,我维护一个使用libmemcached的应用程序.我可以使用libmemcached5或libmemcached6编译它,也可以构建指向libmemcached5,libmemcached6甚至libmemcached5 | libmemcached6的.deb包作为依赖项,但实际上我的二进制文件只用其中一个编译.在不升级/降级用户端的任何依赖项的情况下,部署我的软件包可以解决这个问题的最佳方法是什么?

Sto*_*bor 1

如果您使用存储库,或者您的应用程序的多个编译版本是可接受的,那么您最好的选择是编译您的应用程序两次,一次使用 libmemcached5,一次使用 libmemcached6,并使用不同的包名称单独打包它们,并使用虚拟包自动安装正确的包:

 Package:   myapplication-memchched5
 Version:   1.3.17-1
 Depends:   libmemcached5
 Provides:  myapplication
 Conflicts: myapplication
 Replaces:  myapplication
Run Code Online (Sandbox Code Playgroud)

 Package:   myapplication-memchched6
 Version:   1.3.17-1
 Depends:   libmemcached6
 Provides:  myapplication
 Conflicts: myapplication
 Replaces:  myapplication
Run Code Online (Sandbox Code Playgroud)

现在aptitude install myapplication将根据其他需要安装的内容自动选择myapplication-memchched5或。myapplication-memchched6