리눅스에서 패키지를 설치하려고 할 때 E: Unable to correct problems, you have held broken packages(문제를 해결할 수 없습니다. 보류된 깨진 패키지가 있습니다)라는 오류 메시지가 표시되면서 설치가 더 이상 진행되지 않는 경우가 있습니다. 이 오류는 apt-get으로 패키지를 관리하는 모든 배포판에서 발생할 수 있으며, 데비안(Debian)은 물론 우분투(Ubuntu)와 리눅스 민트(Linux Mint)의 다양한 파생 배포판도 예외가 아닙니다.
원인은 깨진 의존성(broken dependencies)입니다. 어떤 패키지가 필요로 하는 다른 패키지가 시스템에 설치되어 있지 않을 때 발생하는 부작용으로, apt-get이 설치 과정에서 필요한 구성 요소에 접근할 수 없다고 판단하면 작업을 계속 진행할 수 없게 됩니다. 다행히 몇 가지 기본적인 명령어와 그래픽 도구만 활용하면 빠르게 문제를 해결할 수 있습니다.
방법 1: dpkg --configure 명령으로 깨진 패키지 수정하기
터미널을 열고 다음 명령어를 입력해 보세요.
sudo dpkg --configure -a
이 명령은 자동 복구 프로세스를 시작해, 설치되지 않은 패키지로 인해 발생한 깨진 의존성을 시스템 전체에서 찾아냅니다. 대부분의 경우 사용자 개입 없이 누락된 패키지를 자동으로 설치하지만, 설치 확인 메시지가 나타나면 y 키를 눌러 응답하면 됩니다.
깨진 패키지가 발견되지 않으면 아무런 출력도 표시되지 않습니다. Xubuntu가 설치된 깨끗한 테스트 환경에서 실행했을 때는 오류가 발견되지 않았지만, "Unable to Correct Problems, You have Held Broken Packages" 오류가 반복적으로 나타난다면 이 과정에서 설치해야 할 패키지가 여러 개 발견될 수 있습니다. 명령 실행 후에는 다음 명령어를 이어서 입력해 보세요.
sudo apt-get install -f
이 명령은 의존성 목록을 작성하고 상태 정보를 읽어들입니다. "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded"라는 메시지가 표시된다면, 애초에 깨진 의존성이 없었거나 앞선 명령이 모든 문제를 해결한 것입니다. 이후 다음 명령어를 차례로 실행해 시스템의 모든 패키지를 최신 상태로 업데이트하세요.
sudo apt-get clean && sudo apt-get updatesudo apt-get upgrade
패키지 문제가 오래 지속되어 왔다면 업데이트에 시간이 다소 걸릴 수 있습니다.
방법 2: dist-upgrade 명령 활용하기
앞선 명령 실행 중 "some packages have been held back"(일부 패키지가 보류되었습니다)라는 메시지가 표시되어 작업이 끝나지 않았다면, 다음 명령어로 나머지 패키지를 설치할 수 있습니다.
sudo apt-get dist-upgrade
dist-upgrade 옵션은 일반 업그레이드 기능을 수행하는 동시에, 최신 버전 패키지에 맞춰 변경된 의존성까지 함께 처리합니다. apt-get에는 특수한 충돌 처리 시스템이 내장되어 있어, 평소에는 시스템에 덜 중요한 패키지는 건드리지 않으면서 핵심 패키지 위주로 업그레이드를 시도합니다. 이 명령을 사용하면 그런 패키지들까지 강제로 업데이트됩니다.
다만 깨진 패키지가 발견되지 않았다면, 역시 아무것도 업그레이드되거나 설치되지 않았다는 메시지만 표시됩니다. 이 경우 sudo apt-get upgrade를 다시 한번 실행하면 변경 사항이 있을 때 자동 업그레이드 루틴이 이를 적용합니다. 반대로 필요한 패키지의 정확한 이름을 알고 있다면 해당 패키지를 직접 설치하는 것도 좋은 방법입니다.
예를 들어 음성 합성 기능을 사용하기 위해 GNUStep 런타임 구성 요소가 필요하다고 가정해 보겠습니다. 이 경우 다음과 같이 입력하면 됩니다.
sudo apt-get install gnustep-gui-runtime
물론 이것은 어디까지나 예시일 뿐이며, gnustep-gui-runtime 부분을 실제로 설치하고자 하는 패키지 이름으로 바꾸면 됩니다. apt-get 기반의 최신 배포판에는 수천 개의 패키지가 준비되어 있지만, 원하는 패키지의 이름만 알고 있다면 이 방법으로 강제 설치할 수 있습니다.
방법 3: 시냅틱(Synaptic)으로 깨진 패키지 수정하기
Synaptic 그래픽 패키지 관리자가 설치되어 있다면, 이 도구를 통해서도 깨진 패키지를 손쉽게 수정할 수 있습니다. 프로그램을 연 뒤 상단의 편집(Edit) 드롭다운 메뉴를 열어보세요. 메뉴 안에 "Fix Broken Packages(깨진 패키지 수정)" 옵션이 있으므로, 이 항목을 선택하면 됩니다.
깨진 패키지가 많지 않다면 실행이 금방 끝나지만, 오류가 많이 발견되면 그만큼 시간이 더 걸릴 수 있습니다. 모든 검사가 끝나면 하단 상태 표시줄에 "Successfully fixed dependency problems"(의존성 문제가 성공적으로 수정되었습니다)라는 문구가 표시됩니다.
이후에는 평소처럼 패키지를 업데이트하고 설치할 수 있습니다. 대부분의 사용자는 이미 Synaptic으로 작업 중일 때 이 기능을 활용하지만, 필요할 때 언제든 사용할 수 있습니다. 복구가 완료되면 Synaptic을 닫고 다시 명령 프롬프트로 돌아가 작업을 이어가도 되고, Synaptic에서 계속 변경 작업을 진행해도 무방합니다.
마무리
'보류된 깨진 패키지' 오류는 apt-get 기반 배포판 사용자들이 자주 마주치는 문제지만, dpkg --configure, apt-get install -f, dist-upgrade, Synaptic 등 위에서 소개한 방법을 활용하면 대부분 간단히 해결할 수 있습니다. 오류가 발생하더라도 당황하지 말고 순서대로 방법을 시도해 보시기 바랍니다.
저자 소개

Kevin Arrows
케빈 애로우즈(Kevin Arrows)는 10년 이상의 업계 경력을 지닌 베테랑 기술 전문가로, MCTS(Microsoft Certified Technology Specialist) 자격증을 보유하고 있습니다. 최신 기술 동향을 꾸준히 학습하는 것을 즐기며, 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 분야에서 폭넓게 집필 활동을 펼쳐왔습니다. 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들에게 폭넓은 인정을 받고 있습니다.