우분투 실전 명령어 | apt 변경 이력 추적과 롤백 준비
언제 쓰는가
서버 업데이트 뒤에 장애가 났는데, 어떤 패키지가 언제 바뀌었는지 바로 확인해야 할 때 씁니다.
운영 중에는 로그 확인, 문제 패키지 재설치, 버전 고정까지 한 흐름으로 처리하면 복구 시간이 줄어듭니다.
특히 팀 인수인계 상황에서는 명령어와 확인 절차를 같이 남겨두면 재현이 쉬워집니다.
바로 쓰는 명령어
# 최근 apt 작업 기록 확인
less /var/log/apt/history.log
# 특정 패키지 변경 이력만 빠르게 보기
zgrep -h "nginx" /var/log/apt/history.log*
# 설치 가능한 버전 확인
apt-cache policy nginx
# 특정 버전 재설치
sudo apt-get install -y nginx=1.24.0-2ubuntu7
# 자동 업데이트로 다시 올라가지 않게 홀드
sudo apt-mark hold nginx
핵심 옵션/패턴
zgrep -h: 압축된 과거 로그까지 한 번에 검색할 때 편합니다.apt-cache policy: 현재 설치 버전, 후보 버전, 저장소 우선순위를 같이 확인할 수 있습니다.apt-mark hold: 장애 원인 패키지를 임시 고정할 때 가장 단순하고 안전합니다.
명령 출력 예시
$ apt-cache policy nginx
nginx:
Installed: 1.24.0-2ubuntu7.3
Candidate: 1.24.0-2ubuntu7.4
Version table:
1.24.0-2ubuntu7.4 500
500 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
-> 1.24.0-2ubuntu7.3 100
100 /var/lib/dpkg/status
$ apt-mark hold nginx
nginx set on hold.
자주 하는 실수
- 패키지 버전 문자열을 정확히 안 맞춰서 재설치가 실패하는 경우가 많습니다.
apt-cache policy결과를 그대로 복사해서 쓰는 편이 안전합니다. hold만 걸어두고 해제 시점을 잊어버리면 보안 업데이트가 누락됩니다. 점검 일정에unhold작업을 같이 넣어야 합니다.
검증 방법
# 현재 설치 버전 확인
dpkg -l nginx | awk '/^ii/{print $2, $3}'
# hold 상태 확인
apt-mark showhold | grep -E '^nginx$'
# 변경 이력 재확인
grep -n "nginx" /var/log/apt/history.log
운영 팁
장애 복구 중에는 즉시 조치와 원인 정리를 분리해서 진행하세요.
먼저 서비스 복구를 위해 버전 고정까지 끝낸 뒤, 나중에 staging에서 같은 업데이트를 재현해 원인을 좁히면 운영 리스크를 줄일 수 있습니다.
출처
- Ubuntu Community Help Wiki
- Debian APT User Guide
- man apt-mark