sudo apt update를 실행했는데 프로그램 버전은 그대로다. 오류가 난 것도 아닌데 아무것도 설치되지 않은 것처럼 보인다. 정상이다. update는 설치 가능한 패키지의 목록을 새로 받고, upgrade는 그 목록을 바탕으로 설치된 패키지를 실제로 바꾼다.
이 둘을 한 덩어리로 외우면 업데이트가 필요한 서버에서 어느 단계까지 진행됐는지 놓치기 쉽다. 저장소, 로컬 패키지 목록, 설치된 패키지 세 자리를 나눠 보자.
apt update는 무엇을 갱신할까?
Ubuntu는 설정된 저장소에서 패키지 이름과 버전, 의존성 정보를 가져와 로컬 목록으로 보관한다. apt update는 이 목록을 최신 상태로 만든다.
sudo apt update명령이 끝난 뒤 설치 가능한 새 버전이 있는지 확인할 수 있다.
apt list --upgradable여기까지는 설치된 실행 파일이 바뀌지 않는다. 메뉴판을 새로 받아 왔다고 음식이 자동으로 나오지 않는 것과 비슷하다. 목록을 갱신했으니 이제 무엇을 올릴 수 있는지 정확히 판단할 수 있는 상태다.
저장소 주소가 틀렸거나 네트워크·DNS·서명 검증에 문제가 있으면 apt update 단계에서 실패한다. 이때 곧바로 upgrade를 반복하기보다 출력에서 실패한 저장소를 먼저 찾는다.
sudo apt update
# 저장소 설정 위치 확인
ls -l /etc/apt/sources.list /etc/apt/sources.list.d/오류를 무시한 채 오래된 목록으로 설치를 계속하면 원하는 버전을 찾지 못하거나 이미 바뀐 저장소 경로를 계속 참조할 수 있다. 성공한 줄과 실패한 줄을 함께 읽는 것이 중요하다.
apt upgrade는 설치된 패키지를 어떻게 바꿀까?
목록을 갱신한 다음 apt upgrade를 실행하면 현재 설치된 패키지 가운데 올릴 수 있는 항목을 계산하고, 사용자 확인을 받은 뒤 다운로드와 설치를 진행한다.
sudo apt upgrade실행 전에는 변경될 패키지와 추가로 필요한 디스크 공간을 확인한다. 자동화가 아니라 사람이 작업하는 서버라면 -y를 습관적으로 붙이지 않는 편이 낫다. 무엇이 바뀌는지 보지 못한 채 동의까지 자동화하면, 명령은 빨라져도 판단은 사라진다.
특정 패키지만 설치하거나 갱신하려면 이름을 지정할 수 있다.
sudo apt install curl이 명령도 로컬 패키지 목록을 참고한다. 그래서 새 서버나 한동안 갱신하지 않은 환경에서는 apt update 후 설치하는 흐름이 자연스럽다.
같은 흐름을 안전하게 확인하는 순서
패키지를 바로 바꾸기 전에 현재 버전과 변경 후보를 분리해 보면 문제를 좁히기 쉽다. 예를 들어 curl을 확인한다고 하자.
# 현재 설치 여부와 버전
dpkg -s curl 2>/dev/null | grep -E '^(Status|Version):'
# 저장소 목록 갱신
sudo apt update
# 업그레이드 후보 확인
apt list --upgradable 2>/dev/null | grep '^curl/' || true
# 필요한 경우에만 설치 또는 업그레이드
sudo apt install curldpkg -s가 패키지를 찾지 못하면 아직 설치되지 않은 상태일 수 있다. apt list --upgradable에 나오지 않는다고 반드시 최신이라는 뜻도 아니다. 목록 갱신이 실패했는지, 해당 패키지가 설치돼 있는지, 저장소가 그 배포판 버전을 지원하는지를 차례로 확인해야 한다.
자동화 테스트에서는 실제 패키지를 매번 바꾸기보다 다음 경계를 검사하는 편이 안전하다.
- 저장소 목록 갱신이 오류 없이 끝나는가
- 필요한 패키지 이름을 현재 배포판 저장소에서 찾을 수 있는가
- 설치 후 기대한 실행 파일과 버전이 확인되는가
- 서비스를 사용하는 패키지라면 재시작이나 재부팅이 필요한가
운영 서버에서는 갱신보다 변경 계획이 먼저다
개발용 VM에서는 전체 업그레이드를 바로 실행해도 영향이 작을 수 있다. 운영 서버에서는 패키지 하나가 라이브러리, 커널, 서비스 재시작과 이어질 수 있다. 먼저 변경 후보를 검토하고 점검 시간, 복구 방법, 재부팅 필요 여부를 정해야 한다.
보안 패치를 오래 미루는 것도 위험하지만, 모든 패키지를 준비 없이 한꺼번에 올리는 것도 안전하지 않다. 동일한 이미지나 스테이징 환경에서 먼저 확인하고, 중요한 데이터는 패키지 작업과 별개로 복구 가능한 백업을 준비한다. 여러 서버를 관리한다면 실행 기록과 실패 대상을 남겨 일부 서버만 다른 버전에 머무는 상태도 찾아야 한다.
apt autoremove는 더 이상 필요하지 않다고 판단된 의존 패키지를 지운다. 목록이 길다고 바로 실행하지 말고 삭제 후보에 현재 서비스가 기대하는 도구나 수동 설치 패키지가 없는지 확인하자.
sudo apt autoremove --dry-run핵심 요약
apt update는 저장소의 최신 정보를 로컬 패키지 목록에 반영하고, apt upgrade는 그 목록을 바탕으로 설치된 패키지를 실제로 갱신한다. 먼저 목록 갱신의 실패를 확인하고 변경 후보를 검토한 뒤 설치한다. 운영 서버에서는 서비스 재시작·재부팅·복구 계획까지 변경 범위에 포함해야 한다.

