우분투 실전 명령어 | apt 패키지 버전 확인과 hold 관리
언제 쓰는가
운영 중인 우분투 서버에서 패키지를 올려야 할지, 지금 버전을 유지해야 할지 판단이 필요할 때 자주 씁니다. 특히 장애 복구 직후나 특정 버전 의존성이 있는 서비스는 무작정 apt upgrade를 돌리면 더 꼬일 수 있습니다. 이럴 때 apt-cache policy, apt list --upgradable, apt-mark hold 조합으로 안전하게 관리할 수 있습니다.
바로 쓰는 명령어
# 1) 업그레이드 가능한 패키지 확인
apt list --upgradable
# 2) 특정 패키지의 설치/후보 버전 확인
apt-cache policy nginx
# 3) 특정 버전으로 설치
sudo apt install nginx=1.24.0-2ubuntu7
# 4) 자동 업그레이드 잠금
sudo apt-mark hold nginx
# 5) 잠금 해제 후 다시 일반 업그레이드 허용
sudo apt-mark unhold nginx
# 6) 현재 hold 상태 패키지 목록
apt-mark showhold
핵심 옵션/패턴
apt-cache policy <패키지명>: 현재 설치 버전(Installed), 저장소 후보 버전(Candidate), 저장소 우선순위(Pin-Priority) 확인.패키지=버전패턴: 버전을 명시해서 재현 가능한 설치를 만듭니다.apt-mark hold: 의도치 않은 업그레이드를 막는 가장 단순한 안전장치입니다.
자주 하는 실수
apt-mark hold만 걸고 이유를 안 남기는 경우: 몇 달 뒤에 왜 업데이트가 안 되는지 추적이 어려워집니다./etc/apt/preferences.d/또는 운영 문서에 이유를 같이 남겨두세요.- 버전 문자열을 대충 입력하는 경우:
1.24.0처럼 일부만 쓰면 실패하거나 다른 릴리스 버전이 잡힐 수 있습니다.apt-cache policy에서 보이는 전체 버전을 그대로 복붙하는 게 안전합니다. - hold 상태인데도
dist-upgrade를 반복 실행하는 경우: 결과가 기대와 다르면 먼저apt-mark showhold로 잠금부터 확인하세요.
검증 방법
# hold가 제대로 걸렸는지 확인
apt-mark showhold | grep -E '^nginx$'
# 설치/후보 버전이 의도대로인지 확인
apt-cache policy nginx
# 시뮬레이션 업그레이드
sudo apt -s upgrade | grep -E 'nginx|upgraded|kept back'
실행 결과 예시
$ apt-cache policy nginx
nginx:
Installed: 1.24.0-2ubuntu7
Candidate: 1.24.0-2ubuntu7.1
Version table:
1.24.0-2ubuntu7.1 500
500 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
* 1.24.0-2ubuntu7 500
500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
100 /var/lib/dpkg/status
$ sudo apt-mark hold nginx
nginx set on hold.
$ apt-mark showhold
nginx
$ sudo apt -s upgrade | grep -E 'nginx|upgraded|kept back'
The following packages have been kept back:
nginx
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
출처
- Ubuntu Manpages
- Debian APT Documentation
- Ubuntu Server Guide