如何避免“尝试覆盖 Y 包中的 X”

如何避免“尝试覆盖 Y 包中的 X”

我正在设置大量 Ubuntu 12.04 设备。我编写了一个自定义 .deb,它将安装在每台设备上。作为该 .deb 的一部分,我需要覆盖几个系统文件,例如:

/etc/update-manager/release-upgrades
/etc/apt/apt.conf.d/10periodic
/etc/apt/apt.conf.d/50unattended-upgrades

但 Ubuntu 会抱怨这些文件属于其他软件包。当我尝试运行时,dpkg -i testing.deb我收到如下错误:

dpkg: error processing testing.deb (--install):
 trying to overwrite '/etc/update-manager/release-upgrades', which is also in package update-manager-core 1:0.156.14
 trying to overwrite '/etc/apt/apt.conf.d/50unattended-upgrades', which is also in package unattended-upgrades 0.76

我知道 dpkg 选项(例如 --force-overwrite)可以用来强制安装,但我希望让 .deb 文件真正易于安装而无需额外的命令行选项,我不禁觉得 Debian 框架中可能还有其他解决方案。

修复该问题的“正确”方法是什么,以便我的 .deb 可以安装这些更新/较新的文件?

答案1

将其他软件包的文件作为 preinst 的一部分进行转移。这正是dpkg-divert是。不要忘记删除 postrm 中的转移。请参阅手册页和Debian 维基举些例子。

相关内容