私が変更したファイルをyumで更新できないようにするにはどうすればよいですか?

私が変更したファイルをyumで更新できないようにするにはどうすればよいですか?

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>

次に、ファイルを更新せずにrpmwithを使用します。--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)。パッケージ内のすべての(自動)更新が失敗するため、この状況を認識します。その後、単に不変フラグを削除し、更新を実行し、ファイル変更を再実行して、再度不変に設定します。

関連情報