我正在使用rpmbuild
创建自己的 RPM
我的RPM 包含配置文件,永远不会被覆盖,即使RPM包含这些配置文件的新版本。
要归档此内容,我用
标记了这些内容%config(noreplace) /opt/mypackage/etc/*
在spec文件中。
根据文档和this site,在这种情况下,本地修改的文件永远不会被覆盖,这正是我想要的。
但是,在执行以下操作时:
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
问题:
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
完整的%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/*
答案 0 :(得分: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文件中的文件 / home / nhed / rpmroot / etc / c从安装ptst-1.1.0-1.x86_64冲突 包含来自包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%]