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

时间:2012-11-15 12:15:14

标签: c++ gcc ubuntu makefile deb

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

1 个答案:

答案 0 :(得分:1)

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

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

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

现在aptitude install myapplication会根据需要安装的其他内容自动选择myapplication-memchched5myapplication-memchched6