我创造我自己的RPM使用rpmbuild.
我的RPM 包含配置文件,即使RPM包含这些配置文件的新版本,也不应该覆盖这些配置文件.
要归档这个,我用这些标记
%config(noreplace) /opt/mypackage/etc/*
Run Code Online (Sandbox Code Playgroud)
在spec文件中.
根据文档和本网站,在这种情况下,本地修改的文件永远不会被覆盖,这正是我想要的.
但是,在执行以下操作时:
etc/myconfig我遇到了冲突:
$ 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)