を使用して独自のRPMrpmbuild
を作成しています。
私の RPM には、たとえ RPM にこれらの構成ファイルの新しいバージョンが含まれていたとしても、上書きされるべきではない構成ファイルが含まれています。
これをアーカイブするために、これらにタグを付けました
%config(noreplace) /opt/mypackage/etc/*
スペックファイルで。
ドキュメントとこのサイトによると、この場合、ローカルで変更されたファイルが上書きされることはありません。これはまさに私が望んでいることです。
ただし、次の操作を行う場合:
- 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
(構成ファイルの新しいバージョンはそのまま保存され、既存のものは変更されないことを期待しています) - 私が間違っていることは何ですか?
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/*