我有两个包 A 和 B,其中 B 是一个可选组件,取决于包 A 及其确切版本。因此,我需要确保如果安装了两个软件包,它们的版本相同。为了让事情变得更复杂一点,preinst
脚本中包 A 的安装可能会失败。在这种情况下,不应升级任何内容
因此,如果安装了 A 和 B,所需的行为应该是:
dpkg --install A-new.deb
升级被拒绝(因为 B 依赖于 A)dpkg --install B-new.deb
升级被拒绝(因为 A 需要先升级)dpkg --install A-new.deb B-new.deb
A、B升级dpkg --install A-new.deb B-new.deb
并且升级 A 失败
没有任何改变(即旧版本的 A 和 B 处于已安装状态)
我尝试过的:
Depends:
将A(带有版本)添加到控制文件中的B行
dpkg --install A-new.deb
A升级,B保持旧版本dpkg --install B-new.deb
B 已升级但处于 Unpacked 状态,由于依赖而配置被拒绝dpkg --install A-new.deb B-new.deb
A 和 B 已升级dpkg --install A-new.deb B-new.deb
并且升级A失败
A保持旧版本,B是Unpacked状态的新版本
所以只有 3. 符合所需的行为
Pre-Depends:
将A(带有版本)添加到控制文件中的B行
dpkg --install A-new.deb
A升级,B保持旧版本dpkg --install B-new.deb
由于依赖性而拒绝升级dpkg --install A-new.deb B-new.deb
A升级,B由于预依赖问题停留在旧版本dpkg --install A-new.deb B-new.deb
并且升级 A 失败
没有任何改变(即旧版本的 A 和 B 处于已安装状态)
这里只有 2. 和 4. 符合所需的行为
我怎样才能获得所需的行为?