Ubuntu 사용자들을 한동안 괴롭혀 온 The following packages have unmet dependencies 오류는 최근 다양한 Ubuntu 버전에서 점점 더 자주 발견되고 있습니다. APT 패키지 관리 시스템은 사용하기 쉽지만, 서드파티(제3자) 의존성을 함께 사용하는 등 특정 상황에서는 apt-get으로부터 이 오류가 발생할 수 있습니다.
이 문제는 터미널을 통해 apt 시스템으로 패키지를 설치하려 할 때, 뚜렷한 원인 없이 설치가 실패하는 형태로 나타납니다. 특정 프로그램에만 국한된 문제가 아니라 여러 프로그램에서 발생할 수 있는데, 그 이유는 문제가 설치하려는 프로그램이 아니라 apt 시스템 자체에 있기 때문입니다.
다행히도 해결 방법은 여러 가지가 있으며, 쉬운 것부터 어려운 것까지 다양합니다. 아래 방법들을 차례대로 따라 하면 오류를 금방 해결할 수 있을 것입니다.
참고: 아래 방법을 진행하기 전에 설정 파일을 미리 백업해 두면 문제가 생겼을 때 변경 사항을 되돌릴 수 있습니다. 백업은 다음과 같이 진행합니다.
- 키보드에서 Alt + Ctrl + T를 동시에 눌러 터미널을 엽니다.
sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original를 입력하고 Enter 키를 눌러 dpkg 상태 데이터베이스를 백업합니다.
방법 1: -f 매개변수 사용하기
가장 간단한 방법으로, 기존 명령어에 두 글자만 추가하면 됩니다. sudo apt-get install PACKAGENAME(PACKAGENAME은 설치하려는 패키지 이름) 대신 sudo apt-get install -f를 사용하세요. -f 매개변수는 깨진 종속성이 있는 시스템을 복구하려고 시도하며, 이후 해당 패키지를 정상적으로 설치할 수 있게 됩니다.
- Ctrl + Alt + T를 동시에 눌러 터미널을 엽니다.
- sudo apt-get install -f를 입력하고 Enter 키를 눌러 실행합니다.
- 실행이 완료되면 sudo dpkg --configure -a를 입력해 실행한 뒤, 2번 명령어를 한 번 더 반복합니다.
방법 2: Aptitude 사용하기
Aptitude는 apt-get의 대체재로 활용할 수 있는 상위 수준 패키지 관리자입니다. apt-get 대신 이 도구로 패키지 설치를 시도해 볼 수 있으며, 먼저 aptitude를 설치해야 합니다.
- Ctrl + Alt + T를 동시에 눌러 터미널을 엽니다.
- sudo apt-get install aptitude를 입력하고 Enter 키를 눌러 실행합니다.
- sudo aptitude install PACKAGENAME(PACKAGENAME은 설치하려는 패키지)을 입력하고 Enter 키를 누릅니다. apt-get 대신 aptitude로 설치를 시도하면 종속성 미충족 문제가 해결될 가능성이 높습니다.
방법 3: restricted·universe 저장소 활성화 후 최적 서버 선택
- Alt + F2를 동시에 누르고 software-properties-gtk를 입력한 후 Enter 키를 누릅니다.
- Ubuntu 소프트웨어(Ubuntu Software) 탭에서 모든 저장소(main, universe, restricted, multiverse)가 체크되어 있는지 확인합니다.
- "다운로드 위치(Download from)" 목록을 클릭하고 "기타(Other)"를 선택합니다.
- "최적의 서버 선택(Select Best Server)" 버튼을 클릭합니다.
- Alt + Ctrl + T를 눌러 터미널을 열고 sudo apt-get update를 입력한 후 Enter 키를 누릅니다. 업데이트가 끝나면 소프트웨어를 다시 설치해 봅니다.
방법 4: 패키지 데이터베이스 정리하기
손상된 패키지 데이터베이스는 종속성 미충족 오류와 설치 실패의 원인이 될 수 있습니다. 패키지 데이터베이스를 정리하면 이 문제를 해결할 수 있으며, 아래 두 가지 명령어로 처리할 수 있습니다. 먼저 Ctrl + Alt + T를 눌러 터미널을 열고, 각 명령어 입력 후에는 반드시 Enter 키를 눌러야 합니다.
- sudo apt-get clean: 로컬 저장소에서 다운로드된 모든 패키지 파일(.deb)을 정리합니다. /var/cache/apt/archives 및 /var/cache/apt/archives/partial/ 디렉터리에서 잠금(lock) 파일을 제외한 모든 항목을 삭제합니다.
- sudo apt-get autoclean: 역시 다운로드된 파일을 정리하지만, 이전 명령과 달리 더 이상 다운로드할 수 없어 사실상 쓸모없는 패키지만 제거합니다.
방법 5: 보류(Held) 중인 패키지 제거하기
보류된 패키지는 대부분 apt가 해결하지 못하는 종속성 문제와 충돌 때문에 보류된 것입니다. 이런 패키지를 제거하면 충돌이 사라지면서 문제가 해결될 수 있습니다.
- Ctrl + Alt + T를 눌러 터미널을 엽니다.
- sudo apt-get -u dist-upgrade를 입력하고 Enter 키를 누릅니다. 보류 중인 패키지가 있다면 목록이 표시됩니다.
- 먼저 다음 명령어를 실행해 봅니다.
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
이 명령으로 문제가 해결되는지 확인합니다. 만약 마지막에 X not upgraded(X개 업그레이드되지 않음)라는 메시지가 출력된다면(X는 보류된 패키지 수), 해당 패키지들을 하나씩 삭제해야 합니다.
- 보류된 패키지를 제거하려면 sudo apt-get remove --dry-run PACKAGENAME(PACKAGENAME은 제거하려는 패키지)을 사용합니다. --dry-run 매개변수 덕분에 실제 변경이 적용되기 전에 어떤 일이 일어날지 미리 확인할 수 있습니다. 모든 패키지를 제거한 후, 처음 문제를 일으켰던 패키지를 다시 설치해 결과를 확인합니다.
방법 6: PPA 비활성화 / 제거 / 삭제(Purge)
PPA(Personal Package Archive, 개인 패키지 아카이브)는 Launchpad에서 호스팅되는 저장소로, Ubuntu 공식 저장소에서 기본 제공되지 않는 패키지를 설치하거나 업그레이드할 때 사용됩니다. PPA는 종속성 미충족 오류의 가장 흔한 원인이며, 특히 공식 저장소의 기존 패키지를 PPA로 업그레이드할 때 그렇습니다. PPA는 비활성화하거나, 제거하거나, 삭제(purge)할 수 있습니다.
비활성화(Disable)란 해당 PPA에서 설치한 패키지가 더 이상 업데이트를 받지 못하게 하는 것을 의미합니다.
- Alt + F2를 동시에 누르고 software-properties-gtk를 실행합니다.
- 기타 소프트웨어(Other Software) 탭에서 각 PPA마다 두 개의 항목(소스용과 컴파일된 패키지용)이 표시됩니다. PPA를 비활성화하려면 두 항목 모두 체크를 해제합니다.
삭제(Purge)란 선택한 PPA의 모든 패키지를 공식 저장소 버전으로 되돌리고 해당 PPA도 비활성화하는 것을 의미합니다. PPA Purge는 평소 sudo apt-get install ppa-purge로 설치할 수 있지만, apt가 손상된 상태라면 터미널(Alt + Ctrl + T를 눌러 연 후 Enter로 실행)에서 다음 명령어를 사용해야 합니다.
mkdir ppa-purge && cd ppa-purge && wget https://old-releases.ubuntu.com/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget https://ftp.u-picardie.fr/mirror/ubuntu/ubuntu/pool/main/a/aptitude/aptitude_0.8.10-6ubuntu1_i386.deb && sudo dpkg -i ./*.deb
설치가 끝나면 sudo ppa-purge ppa:someppa/ppa를 실행하여 선택한 PPA를 삭제(purge)합니다. 다만 PPA Purge는 PPA 자체를 제거하지는 않으므로, 아래 명령어로 PPA를 제거할 수 있습니다. 설치된 패키지까지 제거할 필요가 없다면 첫 번째 명령은 건너뛰어도 됩니다.
- sudo apt-get autoremove --purge PACKAGENAME
- sudo add-apt-repository --remove ppa:someppa/ppa
- sudo apt-get autoclean
위 과정을 마친 후에는 필요한 패키지를 정상적으로 설치할 수 있을 것입니다.
여러 가지 해결 방법을 살펴보았지만, 무엇보다 중요한 것은 예방이라는 점을 기억하세요. 시스템을 항상 최신 상태로 유지하고, 신뢰할 수 있는 PPA만 사용하며, 모든 것이 정상적으로 작동할 때 미리 백업해 두면 나중에 언제든 복원할 수 있습니다. 만약 미리 준비하지 못했다면 위의 방법들로 문제를 해결하고, 앞으로는 예방 습관을 들여 같은 문제가 재발하지 않도록 하세요.
저자 소개
Kevin Arrows(케빈 애로우즈)
Kevin Arrows는 10년 이상의 업계 경력을 지닌 베테랑 기술 전문가로, MCTS(Microsoft Certified Technology Specialist) 자격증을 보유하고 있습니다. 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 기술 분야에서 폭넓게 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들에게 널리 인정받고 있습니다.