我正在设置大量 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 维基举些例子。