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