Debian-如何覆盖软件包的文件

时间:2019-03-09 17:58:16

标签: debian deb

我有两个名称不同的Debian软件包:configA.deb,configB.deb。两者在控制文件中都有以下几行:

Provides: my-config
Replaces: my-config

都提供相同的内容-文件:config

当我已经安装configA.deb时尝试安装configB.deb时,出现以下错误:

dpkg: error processing archive configB.deb (--install):
trying to overwrite '/home/user/configs/config', which is also in package configA.deb

我希望安装configB.deb而不先删除/清除configA.deb且不使用选项--force-overwrite。有可能吗?

2 个答案:

答案 0 :(得分:1)

Debian软件包不能覆盖彼此的文件。使用update-alternatives之类的符号将文件符号链接到一个软件包或另一个软件包提供的文件,而不会破坏任何软件包安装文件的完整性。或在尝试安装软件包B时使用Conflicts:强制删除软件包A,反之亦然。作为第三种可能的方法,我不建议您采用一种骇人的解决方法,该方法是使用程序包受保护资源中正确的副本覆盖每个程序包postinst中的文件。

答案 1 :(得分:0)

作为第四个选项,您可以创建一个二进制独立包 my-config-common.deb,它提供 /home/user/configs/config 并使 configA.debconfigB.deb 依赖于它。