在两个 deb 包之间转移文件的所有权

在两个 deb 包之间转移文件的所有权

Packagea.deb当前提供了一个文件/etc/file.conf,我们希望更新此包,使其不再提供此文件,而是由 package 提供b.deb

dpkg: error processing archive /root/b.deb (--unpack):
 trying to overwrite '/etc/file', which is also in package a

现在dpkg不喜欢这样——我们必须a先删除软件包,但我们实际上无法控制升级过程。我们不能只添加一个--force-overwrite选项或类似的东西,我们只能控制存储库和包本身。

我们可以用预安装脚本做一些恶作剧吗?也许有适当的方法来进行这种所有权转移?

答案1

要将文件从一个包 ( a) 移动到另一个包 ( b),您需要更新a以便它不再安装该文件,然后更新b以便它安装该文件,并在其control文件中声明它

Breaks: a (<< ...)
Replaces: a (<< ...)

哪里...有更新的版本a

然后dpkg将接受b允许替换(的一部分)a,并且不允许将ab安装在冲突的版本中(IE都尝试安装移动文件的版本)。Replaces可能会令人困惑——即使只是部分替换,它也适用。升级时,apt会知道要做什么:a先升级,再升级b

Debian 政策了解详情。

相关内容