Debian - 如何覆盖包的文件
Debian - how to overwrite a package's file
我有两个名称不同的 Debian 软件包:configA.deb、configB.deb。两者在控制文件中都有以下几行:
Provides: my-config
Replaces: my-config
两者提供相同的内容 - 文件:config
当我尝试安装 configB.deb 而 configA.deb 已经安装时,我收到以下错误:
dpkg: error processing archive configB.deb (--install):
trying to overwrite '/home/user/configs/config', which is also in package configA.deb
我想先安装 configB.deb 而不使用 deleting/purging configA.deb,并且不使用选项 --force-overwrite
。可能吗?
Debian 软件包无法覆盖彼此的文件。使用 update-alternatives
之类的东西将文件符号链接到一个包或另一个包提供的文件,而不会破坏任何包安装文件的完整性。或者在您尝试安装包 B 时使用 Conflicts:
强制删除包 A,反之亦然。作为第三种可能的方法,我不推荐的一种 hacky 解决方法是从每个包的 postinst
中使用包的受保护资源中正确的副本覆盖此文件。
作为第四个选项,您可以创建一个二进制独立包 my-config-common.deb
,它提供 /home/user/configs/config
并使 configA.deb
和 configB.deb
依赖于它。
我有两个名称不同的 Debian 软件包:configA.deb、configB.deb。两者在控制文件中都有以下几行:
Provides: my-config
Replaces: my-config
两者提供相同的内容 - 文件:config
当我尝试安装 configB.deb 而 configA.deb 已经安装时,我收到以下错误:
dpkg: error processing archive configB.deb (--install):
trying to overwrite '/home/user/configs/config', which is also in package configA.deb
我想先安装 configB.deb 而不使用 deleting/purging configA.deb,并且不使用选项 --force-overwrite
。可能吗?
Debian 软件包无法覆盖彼此的文件。使用 update-alternatives
之类的东西将文件符号链接到一个包或另一个包提供的文件,而不会破坏任何包安装文件的完整性。或者在您尝试安装包 B 时使用 Conflicts:
强制删除包 A,反之亦然。作为第三种可能的方法,我不推荐的一种 hacky 解决方法是从每个包的 postinst
中使用包的受保护资源中正确的副本覆盖此文件。
作为第四个选项,您可以创建一个二进制独立包 my-config-common.deb
,它提供 /home/user/configs/config
并使 configA.deb
和 configB.deb
依赖于它。