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

时间:2013-09-11 14:21:37

标签: linux unix rpm rpmbuild rpm-spec

我正在使用rpmbuild创建自己的 RPM 我的RPM 包含配置文件永远不会被覆盖,即使RPM包含这些配置文件的新版本。

要归档此内容,我用

标记了这些内容
%config(noreplace) /opt/mypackage/etc/*

在spec文件中。

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

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

  1. 安装RPM的第1版
  2. 更改配置文件etc/myconfig
  3. 使用RPM的第2版更新软件包
  4. 我遇到了冲突:

    $ 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/*
    

1 个答案:

答案 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%]