내가 변경한 파일을 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

두 가지 옵션이 있습니다:

  • 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). 패키지의 모든 (자동) 업데이트가 실패하므로 이 상황을 인식하게 됩니다. 그러면 간단히 불변 플래그를 제거하고, 업데이트를 수행하고, 파일 수정을 다시 실행하고, 다시 불변으로 설정하면 됩니다.

관련 정보