【问题标题】:How to build and deploy package with different versions of one dependency?如何使用一个依赖项的不同版本构建和部署包?
【发布时间】:2012-11-04 01:03:25
【问题描述】:
例如,我维护一个使用 libmemcached 的应用程序。我可以使用 libmemcached5 或 libmemcached6 编译它,也可以构建指向 libmemcached5、libmemcached6 甚至 libmemcached5|libmemcached6 作为依赖项的 .deb 包,但实际上我的二进制文件只使用其中一个编译。在不升级/降级用户端任何依赖项的情况下,我可以解决这个问题的最佳方法是什么?
【问题讨论】:
标签:
c++
gcc
ubuntu
makefile
deb
【解决方案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。