更新依赖软件包后卸载软件包

时间:2019-08-02 08:56:21

标签: ubuntu deb

我正在尝试使用虚拟软件包创建类似于以下link中提到的解决方案的解决方案,以保持与不同ABI的兼容性。

我已经在存储库中创建了以下软件包:

Package: mainpackage
Version: 1.0
Depends: virtualdependency
Description: Main package with virtual package dependency

Package: virtualdependencyimplementation1.0
Version: 1.0
Depends: abidependency (= 1.0)
Conflicts: virtualdependency
Replaces: virtualdependency
Provides: virtualdependency
Description: virtual dependency implementation 1.0

Package: virtualdependencyimplementation2.0
Version: 1.0
Depends: abidependency (= 2.0)
Conflicts: virtualdependency
Replaces: virtualdependency
Provides: virtualdependency
Description: virtual dependency implementation 2.0

我使用以下软件包在ubuntu 14.04上执行测试。

Package: abidependency
Version: 1.0
Description: package with ABI 1.0

Package: abidependency
Version: 2.0
Description: package with ABI 2.0

安装了独立性软件包(1.0或2.0)后,我使用apt-get启动主软件包安装。

在这种情况下,将安装主软件包和一个实现虚拟接口的软件包(满足依赖性的软件包)。

现在,如果我用apt-get更新了独立性软件包,结果是主软件包和实现虚拟接口的软件包都被卸载了。

如果我使用aptitude更新关联性,则作为第二种选择,它允许我更改虚拟接口,从而保持所有安装。

这是我正在寻找的最后一个行为。可以默认获得此行为吗?我在做错什么吗?

我完成的另一项测试是修改主程序包(mainpackage2)的依赖项,使其依赖于实现虚拟接口的一个或另一个程序包:

Package: mainpackage2
Version: 2.0
Depends: virtualdependencyimplementation1.0|virtualdependencyimplementation2.0
Description: Main package with explict package dependency

如果安装了abidependency软件包(版本:1.0),则启动apt-get以安装mainpackage2将安装virtualdependencyimplementation1.0。

然后,当我们尝试更新abidependency软件包(版本:2.0)时,它将卸载virtualDependencyimplementation1.0软件包并安装virtualDependencyimplementation2.0。

但是,如果我们先安装abidependency软件包(版本:2.0),然后再安装mainpackage2,则在更新abidependency软件包(版本:1.0)时,将卸载mainpackage2和virtualDependencyimplementation1.0。

也就是说,依赖项A |的行为。 B与B不同|答:

谢谢。

0 个答案:

没有答案