加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:05:28 所属栏目:Linux 来源:网络整理
导读:我正在使用rpmbuild创建自己的RPM. 我的RPM包含配置文件,即使RPM包含这些配置文件的新版本,也不应该覆盖这些配置文件. 要归档这个,我用这些标记 %config(noreplace) /opt/mypackage/etc/* 在spec文件中. 根据文档和this site,在这种情况下,本地修改的文件永
我正在使用rpmbuild创建自己的RPM.
我的RPM包含配置文件,即使RPM包含这些配置文件的新版本,也不应该覆盖这些配置文件.

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

%config(noreplace) /opt/mypackage/etc/*

在spec文件中.

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

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

>安装RPM的版本1
>更改配置文件etc / myconfig
>使用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

问题:

>如何解释这种冲突? (我希望配置文件的新版本将存储为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)
/opt/mypackage/dba/sql/*
%defattr(0555,root)
/opt/mypackage/dba/script/*

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

#etc
%defattr(0664,root)
%config(noreplace) /opt/mypackage/etc/*

解决方法

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

我想这可能只是因为你在“安装”而不是“升级”
用-Uh替换-ih

我创建了一个类似设置的测试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 from install of ptst-1.1.0-1.x86_64 conflicts

with file from package ptst-1.0.0-1.x86_64 file
/home/nhed/rpmroot/etc/b from install of ptst-1.1.0-1.x86_64 conflicts
with file from package ptst-1.0.0-1.x86_64 file
/home/nhed/rpmroot/etc/c from install of ptst-1.1.0-1.x86_64 conflicts
with file from package 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%]

warning: /home/nhed/rpmroot/etc/a created as /home/nhed/rpmroot/etc/a.rpmnew

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读