Tutoriel Linux

Debian 패키지의 업데이트를 차단한 다음 hold를 해제합니다.

Débutant2 min de lecture

애플리케이션 사고 후에 Debian 패키지의 특정 버전을 유지해야 할 때가 있습니다, 또는 테스트 머신에서 업데이트를 확인할 때까지. apt-mark hold는 이 패키지에 대한 자동 변경을 차단합니다. 또한 삭제도 차단합니다.

식별된 예외에 대해 사용하고, 그 이유와 재검토 날짜를 기재하세요. 보안 패키지를 몇 달 동안 차단하면 업데이트에서 사각지대를 만들게 됩니다.

Tux가 차단된 Debian 패키지를 재활성화하는 모습
테스트하는 동안 버전을 차단하고, 패치가 검증되면 즉시 차단 해제하세요.

패키지 및 설치된 버전 식별하기

패키지의 정확한 이름을 확인하는 것으로 시작하세요. 저장소 검색은 항상 서버에 실제로 설치된 내용을 알려주지는 않습니다.

dpkg-query -W -f='${Package} ${Version}n' 패키지-이름
apt-cache policy 패키지-이름

첫 번째 명령은 로컬 버전을 표시합니다. 두 번째 명령은 이 버전을 APT가 알고 있는 후보와 비교합니다. 패키지가 서비스와 연관되어 있다면 차단하기 전에 증상과 작동하는 버전도 메모해 두세요.

hold는 의존성을 이해하는 것을 대체하지 않습니다. openssl, linux-image 또는 여러 응용 프로그램에서 사용되는 라이브러리를 차단하는 경우, 패키지를 고정하기 전에 다음 업데이트가 무엇을 수정하고 싶어했는지 확인하세요.

apt-mark hold로 업데이트 차단하기

이 명령은 관리자 권한을 요구합니다. 패키지-이름을 이전 단계에서 기록한 이름으로 바꾸세요.

sudo apt-mark hold 패키지-이름
sudo apt-mark showhold

showhold은 패키지를 표시해야 합니다. 이후 APT는 일반적인 업데이트 작업 동안 이 표시를 존중합니다. 전체 업그레이드를 수락하기 전에 APT가 무엇을 할지를 확인할 수 있습니다:

sudo apt update
apt list --upgradable
sudo apt-get -s upgrade

옵션 -s는 작업을 시뮬레이션합니다. 패키지를 다운로드하거나 설치하지도 않습니다. 차단된 패키지가 예상한 버전으로 유지되고, 의존성이 APT를 불일치한 상태로 몰아가지 않도록 확인하세요.

hold와 수동 설치된 패키지를 혼동하지 마세요

apt-mark manual은 주로 의존성의 자동 삭제를 방지합니다. 업데이트는 차단하지 않습니다. 반대로, apt-mark hold는 패키지의 dpkg 선택을 수정하여 패키지가 자동으로 설치, 업그레이드, 삭제되지 않도록 방지합니다.

이 선택은 dpkg를 통해 확인할 수 있습니다:

dpkg --get-selections 패키지-이름
dpkg --get-selections | grep ' hold$'

이 구분은 잘못된 보안 감각을 피하기 위해 필요합니다. 수동으로 표시된 패키지는 apt upgrade 중에 새로운 버전으로 넘어갈 수 있습니다.

테스트 후 hold 해제하기

테스트 머신에서 패치가 검증되면 차단을 해제하고 다시 목록을 확인하세요. 단일 패키지를 해제하기 위해 전체 업그레이드를 시작하지 마세요.

sudo apt-mark unhold 패키지-이름
sudo apt-mark showhold
sudo apt install 패키지-이름

마지막 명령은 해당 패키지만을 대상으로 합니다. 확인하기 전에 APT가 제안하는 추가 패키지를 읽어보세요. 민감한 패키지의 경우, 이후 해당 서비스를 재시작하고 로그를 확인하세요. Debian의 apt-mark 매뉴얼 페이지는 hold, install, remove, purge 선택을 자세히 설명하고 있습니다.

만약 hold가 깨진 업데이트 이후 설정되었다면, 당신의 티켓이나 문서에: 패키지, 고정된 버전, 이유, 테스트 날짜와 해제를 허용하는 조건을 기록하세요. 이 기록은 다른 관리자가 왜 hold이 있었는지 모르고 제거하는 것을 방지합니다.

패키지를 목록에서 제거해야 할 때는 언제인가요?

각 유지보수 주기마다 hold를 검토하세요. 임시 차단은 업데이트가 취약점이나 의존성의 호환성을 수정할 때 위험해질 수 있습니다. Debian 또는 소프트웨어 공급자의 공지를 확인하고, 생산 환경과는 별개로 새로운 버전을 테스트한 후, 초기 문제 해결이 완료되는 대로 apt-mark unhold를 사용하세요.

로컬 .deb 패키지를 설치하고 의존성을 올바르게 수정하기 위해서는 dpkg 및 APT에 대한 우리의 가이드를 참조하세요. 보안 패치를 자동화 한다면, Debian의 unattended-upgrades 기사에서 작업을 단독으로 실행하기 전에 유지해야 할 검사를 설명합니다.

sudo apt update && sudo apt upgrade