Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debian-如何覆盖包';s文件_Debian_Deb - Fatal编程技术网

Debian-如何覆盖包';s文件

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/

我有两个不同名称的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/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
中做任何事情。同样,正确的解决方案是将文件安装在软件包拥有的位置,然后让用户选择让软件包在其主目录中执行某些操作。