우분투 패키지 버전 고정과 의존성 관리: apt-mark 완벽 가이드

개요

우분투 시스템 운영 중 특정 소프트웨어의 버전이 임의로 업데이트되지 않도록 고정하거나 불필요한 의존성을 깔끔하게 정리해야 할 때가 있습니다. 본 글에서는 apt-mark 명령어를 활용하여 패키지를 고정(hold)하고 자동/수동 설치 속성을 제어하는 실무 관리법을 다룹니다. 터미널 실습을 통해 서비스 장애를 예방하는 안전한 패키지 유지보수 기법을 익힐 수 있습니다.

특정 패키지 업데이트 방지: hold 및 showhold 활용법

버전 고정 실습을 진행할 대상 패키지를 마련하기 위해 sudo apt-get update -qq && sudo apt-get install -y curl 명령어로 최신 패키지 목록을 갱신하고 curl 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y curl

sudo apt-mark hold curl 명령어는 지정한 패키지를 고정 상태로 변경하여 향후 apt upgrade 등을 실행하더라도 최신 버전으로 자동 업데이트되지 않도록 설정합니다.
⚙️ [주요 옵션]

hold : 지정한 패키지를 보류(고정) 상태로 설정하여 자동 업그레이드를 방지합니다.
unhold : 패키지에 설정된 보류(고정) 상태를 해제하여 다시 정상적으로 업그레이드될 수 있도록 합니다.
showhold : 현재 시스템에서 보류(고정) 상태로 설정된 모든 패키지의 목록을 조회합니다.
auto : 지정한 패키지를 자동으로 설치된 의존성 패키지 상태로 표시합니다.
manual : 지정한 패키지를 사용자가 직접 설치한 수동 설치 상태로 표시합니다.
showauto : 시스템에 자동으로 설치된 의존성 패키지 목록을 출력합니다.
showmanual : 사용자가 직접 수동으로 설치한 패키지 목록을 출력합니다.

sudo apt-mark hold curl

apt-mark showhold 명령어는 현재 시스템에서 업데이트가 방지되도록 고정(hold) 설정된 패키지 목록을 조회합니다.
출력 결과를 통해 방금 설정한 curl 패키지가 보류 목록에 정상적으로 등록되었음을 확인할 수 있습니다.

apt-mark showhold

패키지 고정 해제: unhold 명령어로 정상 갱신 상태 복구

sudo apt-mark unhold curl 명령어는 이전에 고정(hold)해 둔 curl 패키지의 잠금을 해제하여 정상적으로 갱신될 수 있는 상태로 복원합니다.
실행 결과 Canceled hold on curl. 메시지가 출력되며 패키지 고정이 성공적으로 해제되었음을 확인할 수 있습니다.

sudo apt-mark unhold curl

apt-mark showhold 명령어는 현재 시스템에 고정(hold) 설정이 적용된 패키지 목록을 조회합니다.
실행 결과 아무런 패키지 이름도 출력되지 않아 curl 패키지의 보류 상태가 완전히 해제되었음을 확인할 수 있습니다.

apt-mark showhold

설치 상태 속성 변경: markauto와 unmarkauto로 의존성 제어

의존성 제어 및 패키지 설치 상태 전환 실습을 위해 sudo apt-get install -y jq 명령어로 대상 패키지인 jq를 설치합니다.

sudo apt-get install -y jq

sudo apt-mark markauto jq 명령어는 지정한 패키지를 사용자가 직접 설치한 상태가 아닌, 다른 패키지에 의해 자동으로 설치된 의존성 상태로 속성을 변경합니다.
이를 통해 상위 패키지가 제거되거나 불필요해졌을 때 apt autoremove를 통해 함께 정리될 수 있도록 설정합니다.

sudo apt-mark markauto jq

apt-mark showauto jq 명령어는 jq 패키지가 시스템에 자동으로 설치된 의존성 패키지로 등록되어 있는지 확인합니다.
출력 결과로 jq가 표시되어 패키지 속성이 자동 설치(auto) 상태로 성공적으로 전환되었음을 알 수 있습니다.

apt-mark showauto jq

sudo apt-mark unmarkauto jq 명령어는 패키지에 설정된 자동 설치 속성을 해제하고 사용자가 직접 설치한 수동(manual) 설치 상태로 되돌립니다.
속성이 수동 설치 상태로 변경되면 상위 의존 패키지가 삭제되어도 apt autoremove에 의해 자동으로 삭제되지 않고 시스템에 유지됩니다.

sudo apt-mark unmarkauto jq

apt-mark showmanual jq 명령어는 jq 패키지가 사용자가 직접 설치한 수동 설치 목록에 포함되어 있는지 확인합니다.
출력 결과로 jq가 표시되어 자동 설치 속성이 성공적으로 해제되고 수동 설치 상태로 복원되었음을 확인할 수 있습니다.

apt-mark showmanual jq

수동/자동 설치 목록 전체 점검 및 패키지 관리 상태 진단

apt-mark showmanual | head -n 10 명령어는 시스템에 사용자가 직접 설치한 수동 설치 패키지 목록 중 상위 10개 항목을 출력합니다.
출력 결과를 통해 기본 시스템 도구와 함께 이전에 설치한 curl 등의 패키지가 수동 설치 대상으로 정상 등록되어 있음을 확인할 수 있습니다.

apt-mark showmanual | head -n 10

apt-mark showauto | head -n 10 명령어는 다른 패키지의 요구로 인해 자동으로 함께 설치된 의존성 패키지 목록 중 상위 10개를 조회합니다.
시스템 라이브러리와 서비스 의존 패키지들이 자동 설치 속성을 유지하고 있음을 확인할 수 있습니다.

apt-mark showauto | head -n 10

지금까지 우분투에서 apt-mark 명령어를 활용해 패키지 버전을 고정하고 의존성을 효율적으로 관리하는 방법을 간단하게 살펴보았습니다.
안정적인 시스템 운영을 위해 필요한 패키지를 안전하게 고정하고 유연하게 관리해 보세요.