Debian-如何覆盖包';s文件
我有两个不同名称的Debian包:configA.deb,configB.deb。两者在控制文件中都有以下行:Debian-如何覆盖包';s文件,debian,deb,Debian,Deb,我有两个不同名称的Debian包:configA.deb,configB.deb。两者在控制文件中都有以下行: Provides: my-config Replaces: my-config 并且都提供相同的内容-file:config 当我尝试在configA.deb已安装的情况下安装configB.deb时,我收到以下错误: dpkg: error processing archive configB.deb (--install): trying to overwrite '/home/
Provides: my-config
Replaces: my-config
并且都提供相同的内容-file: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,也不使用选项
--强制覆盖
。有可能吗?Debian软件包不能覆盖彼此的文件。使用类似于updatealternations
的方法将文件符号链接到一个或另一个软件包提供的文件,而不会破坏任何软件包安装文件的完整性。或者使用冲突:
在尝试安装包B时强制删除包A,反之亦然。作为第三种可能的方法,我不推荐的一种黑客解决方法是,从每个包的postinst
中覆盖此文件,并在包的受保护资源中创建一个副本。作为第四个选项,您可以创建一个二进制独立包my config common.deb
,它提供/home/user/configs/config
和使configA.deb
和configB.deb
依赖于它。包无论如何都不应该在/home
中做任何事情。同样,正确的解决方案是将文件安装在软件包拥有的位置,然后让用户选择让软件包在其主目录中执行某些操作。