우분투 실전 명령어 | 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