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