我维护了几个我们内部使用的大型软件包,从下一个版本开始,我想将它们拆分成较小的软件包。这些软件包已经通过我们的自定义 apt 存储库安装在许多机器上,我不确定那些已经安装了这些大型软件包的人的升级路径是什么。
为了说明这个问题:
packageX
目前有多少台机器安装了大包
我想将其拆分成:
- 软件包X-foo
- 包裹X-bar
- 包X-baz
我想,明智的做法是创建一个名为的虚拟包,packageX
将所有新包封装起来,这听起来对吗?
我如何确保apt-get update && apt-get upgrade
不会给用户带来麻烦?
谢谢。
答案1
是的,制作packageX
一个依赖于其他包的虚拟包是处理此问题的常用方法。
这样,现在安装的每个人都可以在升级后packageX
获得所有软件包。此外,对于那些需要安装所有 packageX 的人来说,这还很方便。packageX-*
根据您的软件,可能值得考虑创建依赖于 packageX-* 的常用子集的附加虚拟包,以简化这些子集的安装。
答案2
packageX
应该Depends: packageX-foo, packageX-bar, packageX-baz
。这确保升级会自动获取每个单独的新软件包。- 每个都
packageX-component
应该:Breaks: packageX (<< V)
以及新版本在Replaces: packageX (<< V)
哪里V
。这确保包管理器知道新组件包中的文件与旧单片包中的文件冲突。