CentOS 6.8を実行していて変更したが/etc/rc.d/init.d/sendmail
(では実行できない操作/etc/sysconfig/sendmail
)、sendmailを更新するとyumがファイルを上書きします。特定のファイルを更新せずに代わりに変更を警告するようにyumを設定する方法はありますか?変更を更新とマージできるように、どこかに新しいバージョンを保存しますか?
答え1
あなたは本当にできません。 yum
(またはより厳密に言えばrpm
)ファイルが設定ファイルかどうかを判断するのは、RPMの内部によって異なります%config
。つまり、最新のファイルが最新のRPMにある場合は、表示されたファイルが%config(noreplace)
保存されます。.rpmnew
2つのオプションがあります。
- RPMをダウンロードして(更新しない)、
%config(noreplace)
forにパッケージ化して/etc/rc.d/init.d/sendmail
からyumとしてインストールします。 - RPMをダウンロードし、それを使用して
rpm --excludepath
パッケージをインストールします。私はこのオプションを好みます。時代遅れですが、更新するたびにRPMを編集するのと同じく時代遅れではありません。以下を参照してください。
まず、sendmail
使用を除いてyum update
更新/etc/yum.conf
してください。
exclude=sendmail*
これにより、パッケージはyum
更新されませんが、新しいsendmail RPMが利用可能であることがわかるように引き続きsendmail
リストされます。yum check-update
その後、以下を使用してダウンロードできます。
yum install -downloadonly --installroot=. sendmail-<version>
次に、ファイルを更新せずにrpm
withを使用します。--excludepath
/etc/rc.d
rpm --excludepath /etc/rc.d/init.d/sendmail sendmail-<version>.rpm
引用する%config
:
答え2
ファイルを変更できないようにすることができます(chattr +i /etc/rc.d/init.d/sendmail
)。パッケージ内のすべての(自動)更新が失敗するため、この状況を認識します。その後、単に不変フラグを削除し、更新を実行し、ファイル変更を再実行して、再度不変に設定します。