%config(noreplace)文件上出现意外的RPM冲突

MRa*_*ser 3 unix linux rpm rpmbuild rpm-spec

我创造我自己的RPM使用rpmbuild.
我的RPM 包含配置文件,即使RPM包含这些配置文件的新版本,也不应该覆盖这些配置文件.

要归档这个,我用这些标记

%config(noreplace) /opt/mypackage/etc/*
Run Code Online (Sandbox Code Playgroud)

在spec文件中.

根据文档和本网站,在这种情况下,本地修改的文件永远不会被覆盖,这正是我想要的.

但是,在执行以下操作时:

  1. 安装RPM的版本1
  2. 更改配置文件 etc/myconfig
  3. 使用RPM版本2更新软件包

我遇到了冲突:

$ rpm --prefix ~/rpmroot/ -ih dist/mypackage-1.0.1-1.x86_64.rpm
########################################### [100%]
file /home/user/rpmroot/mypackage/etc/myconfig from install of mypackage-1.0.2-1.x86_64 conflicts with file from package mypackage-1.0.1-1.x86_64
Run Code Online (Sandbox Code Playgroud)

问题:

  • 如何解释这种冲突?(我希望配置文件的新版本将存储为myconfig.rpmnew,并且现有的保持不变)
  • 我做错了什么?


更新(附加信息)

输出rpm -qcp dist/mypackage-1.0.1-1.x86_64.rpm是:

/opt/mypackage/etc/config1.xml
/opt/mypackage/etc/config2.xml
/opt/mypackage/etc/run.sh
/opt/mypackage/etc/config3.xml
Run Code Online (Sandbox Code Playgroud)

完整%files部分:

%files
%defattr(0444,root,root)
/opt/mypackage/java/*

#dba
%defattr(0444,root,root)
/opt/mypackage/dba/sql/*
%defattr(0555,root,root)
/opt/mypackage/dba/script/*

#srv
%defattr(0555,root,root)
/opt/mypackage/srv/bin/*
/opt/mypackage/srv/lib/*

#etc
%defattr(0664,root,root)
%config(noreplace) /opt/mypackage/etc/*
Run Code Online (Sandbox Code Playgroud)

nhe*_*hed 7

如果这实际上是你的问题,你可以踢自己...

我想这可能是仅仅因为你是"安装",而不是"升级"取代-ih-Uh

我创建了一个类似设置的测试RPM,结果如下:

和-ih一样

$ sudo rpm --prefix~/rpmroot/-ih /home/nhed/rpmbuild/RPMS/x86_64/ptst-1.1.0-1.x86_64.rpm

###################################### [100%] file/home/nhed/rpmroot/etc/a从安装ptst-1.1.0-1.x86_64冲突

来自软件包ptst-1.0.0-1.x86_64文件/ home/nhed/rpmroot/etc/b中的文件来自ptst-1.1.0-1.x86_64的安装与来自软件包ptst-1.0.0-1.x86_64的文件冲突安装ptst-1.1.0-1.x86_64的file/home/nhed/rpmroot/etc/c与包ptst-1.0.0-1.x86_64中的文件冲突

用-Uh

$ sudo rpm --prefix~/rpmroot/-Uh /home/nhed/rpmbuild/RPMS/x86_64/ptst-1.1.0-1.x86_64.rpm

###################################### [100%]

警告:/ home/nhed/rpmroot/etc/a创建为/home/nhed/rpmroot/etc/a.rpmnew

###################################### [100%]