如何阻止 yum 更新我更改的文件?

如何阻止 yum 更新我更改的文件?

我正在运行 CentOS 6.8,我已经更改了/etc/rc.d/init.d/sendmail(在 中我无法执行的操作/etc/sysconfig/sendmail),但是 yum 在更新 sendmail 时覆盖了该文件。有没有办法配置 yum 不更新某些文件,而是警告我更改(并将新版本存储在某处,以便我可以将更改与更新合并)?

答案1

你真的不能。 yum(或更严格地说rpm)取决于%configRPM 内部来决定文件是配置文件,即当更新的文件恰好位于较新的 RPM 中时,标记为 的文件%config(noreplace)将被保存。.rpmnew

您有两个选择:

  • 下载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,但仍会列出它,yum check-update以便您知道有新的 sendmail RPM 可用。然后您可以使用以下命令下载它:

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)。软件包的任何(自动)更新都会失败,这会让您意识到这种情况;然后只需删除不可变标志,执行更新,重做文件的修改,然后再次将其设置为不可变。

相关内容