3

を使用して独自のRPMrpmbuildを作成しています。
私の RPM には、たとえ RPM にこれらの構成ファイルの新しいバージョンが含まれていたとしても、上書きされるべきではない構成ファイルが含まれています。

これをアーカイブするために、これらにタグを付けました

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

スペックファイルで。

ドキュメントとこのサイトによると、この場合、ローカルで変更されたファイルが上書きされることはありません。これはまさに私が望んでいることです。

ただし、次の操作を行う場合:

  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

質問:

  • この対立はどのように説明できますか?myconfig.rpmnew(構成ファイルの新しいバージョンはそのまま保存され、既存のものは変更されないことを期待しています)
  • 私が間違っていることは何ですか?


UPDATE(追加情報)

の出力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/*
4

1 に答える 1