Ubuntu에서 `apt-Get Lock` 명령이 `/var/lib/dpkg/lock-frontend` 잠금 파일을 가져올 수 없는 문제를 해결하는 방법

이 메시지는 E: Could not get lock /var/lib/dpkg/lock-frontend다른 패키지 관리 프로세스가 APT에 필요한 잠금을 사용하고 있음을 의미합니다. 잠금은 패키지 변경 사항이 중복 작업되는 것을 방지합니다. 일반적으로 소프트웨어 업데이트 프로그램, 다른 터미널 또는 자동 업데이트가 이미 패키지를 설치하거나 구성하는 중에 발생합니다. 가장 안전한 해결 방법은 해당 작업을 확인하고 완료될 때까지 기다리는 것입니다. 잠금 파일을 삭제하는 것은 우선적으로 고려해야 할 사항이 아닙니다.

아래 명령어는 APT와 dpkg를 사용하는 Ubuntu 시스템에 적용됩니다. 바탕 화면 레이블과 자동 업데이트 시기는 Ubuntu 버전 및 구성에 따라 다를 수 있으므로, 자신의 시스템에서 실행되는 프로세스 출력을 기준으로 판단하십시오. 아래 링크된 Ubuntu 24.04 LTS 설명서에는 해당 명령어가 나와 있습니다. 사용 중인 버전의 설명서를 참조하면 동작 방식이 다를 수 있습니다.

잠금 오류가 알려주는 것과 알려주지 않는 것은 무엇일까요?

확인됨: dpkg dpkg는 패키지를 설치하고 관리하며, APT는 dpkg의 상위 수준 명령줄 프런트엔드입니다. 경로는 lock-frontend패키지 관리 작업을 조정하는 데 사용됩니다. 따라서 오류는 패키지 데이터베이스 손상이 아니라 명령 실행 시 발생한 잠금 충돌을 나타냅니다. Ubuntu의 dpkg 설명서에서 dpkg의 역할과 패키지 상태에 대한 설명을 확인할 수 있습니다.

시스템에 따라 다릅니다. 잠금 상태의 프로세스는 그래픽 업데이트 프로그램, 보조 프로그램 apt또는 apt-get명령줄, 소프트웨어 설치 프로그램, 자동 유지 관리 작업일 수 있습니다. 오류 메시지만으로 프로세스 이름을 추측하지 마십시오. 먼저 실행 중인 다른 패키지 관리자 창을 모두 닫고 컴퓨터에서 실행 중인 프로세스를 확인하십시오.

해당 메시지만으로는 확인할 수 없습니다. 메시지는 잠금 파일이 오래되었거나, 우분투가 멈췄거나, 패키지 데이터베이스가 손상되었다는 것을 증명하지 못합니다. 잠금 파일은 프로세스가 종료된 후에도 디스크에 남아 있을 수 있으며, 잠금 파일이 존재한다는 사실만으로는 해당 프로세스가 여전히 잠금을 소유하고 있다고 단정할 수 없습니다. 변경 사항을 적용하기 전에 프로세스가 실행 중인지 확인하십시오.

1단계: 이미 사용 중인 패키지 관리자가 있는지 확인합니다.

소프트웨어 업데이트 프로그램, 우분투 소프트웨어 또는 현재 소프트웨어를 설치, 업데이트 또는 제거하는 다른 터미널 창을 찾으세요. 업데이트가 진행 중인 경우 창을 열어둔 채로 완료될 때까지 기다리세요. 그런 다음 원래 명령을 다시 시도해 보세요.

소프트웨어 업데이트 창에서 업데이트가 설치 중이므로, 해당 패키지 설치 작업이 완료될 때까지 기다린 후 터미널 명령을 다시 시도하십시오.
소프트웨어 업데이트 프로그램에서 업데이트 설치가 진행 중인 것을 보여줍니다. 다른 패키지 작업을 시작하기 전에 업데이트가 완료될 때까지 기다리십시오.

그래픽 업데이트가 표시되지 않으면 프로세스 목록을 확인하십시오.

ps -eo pid,ppid,stat,etime,cmd | grep -E '[a]pt|[d]pkg|unattended'

apt, apt-get, dpkg, 또는 와 같은 명령어를 찾아보세요 unattended-upgrade. 일치하는 항목이 발견되더라도 이는 단서일 뿐, 해당 프로세스가 락 홀더임을 증명하는 것은 아닙니다. 검색 결과에는 관련 없는 명령어나 검사 자체도 포함될 수 있습니다. PID와 명령어를 기록해 둔 다음, 다음 단계에서 해당 프로세스를 검사하세요.

2단계: 잠금을 유지하고 있는 프로세스를 식별합니다.

fuser이 도구는 프로세스가 프런트엔드 잠금에 접근하고 있는지 확인하는 데 사용합니다 . 다른 사용자가 소유한 프로세스도 보고할 수 있도록 관리자 권한으로 실행하십시오.

sudo fuser -v /var/lib/dpkg/lock-frontend

다른 일반적인 패키지 관리자 잠금 경로도 확인할 수 있습니다.

sudo fuser -v /var/lib/dpkg/lock /var/cache/apt/archives/lock /var/lib/apt/lists/lock

fuser지정된 파일을 사용하는 프로세스 ID를 보고합니다. 자세한 정보 표시 모드에서는 프로세스 세부 정보가 포함됩니다. 프로세스 ID가 출력되면 프로세스 목록과 비교하고, 출력된 번호를 사용하여 해당 프로세스를 검사하십시오 ps -fp PID. PID접근 가능한 프로세스가 해당 경로를 사용하는 경우 도구는 결과를 반환하지 않을 수 있습니다. 이 결과는 유용하지만 이전 명령이 실패한 이유를 진단하는 것은 아닙니다. 출력 및 제한 사항에 대한 자세한 내용은 Ubuntu fuser 설명서를 참조하십시오.

터미널은 APT 및 dpkg 프로세스를 확인하고 fuser에게 어떤 프로세스가 프런트엔드 잠금에 접근하고 있는지 묻습니다.
apt 및 dpkg 프로세스를 확인하고 프런트엔드 잠금을 사용하여 프로세스를 식별하는 터미널 명령어입니다.

3단계: 기다리거나, 멈춘 것으로 확인된 작업만 중지합니다.

패키지 다운로드, 파일 압축 해제, 패키지 구성 또는 그래픽 업데이트 프로그램의 진행 상황 표시와 같은 프로세스가 진행 중인 경우, 해당 작업이 완료될 때까지 기다리십시오. 대용량 업데이트나 디스크 속도가 느린 경우 예상보다 시간이 오래 걸릴 수 있습니다. 작업이 완료되면 원래 apt-get명령을 다시 실행하십시오. 첫 번째 APT 명령이 실행되는 동안 다른 APT 명령을 시작해도 첫 번째 명령의 완료 시간이 빨라지지는 않습니다.

apt-get install 작업이 아직 패키지를 다운로드 중입니다. 진행 상황을 보면 현재 패키지 작업이 완료될 때까지 기다려야 합니다.
apt-get 패키지 설치 작업이 진행 중일 때 터미널에 표시되는 진행 상황 예시입니다. 패키지 이름과 출력 결과는 다를 수 있습니다.

작업이 멈춘 것처럼 보이면 출력, CPU 또는 디스크 활동, 경과 시간이 변하는지 확인하십시오. 모든 패키지 작업이 멈췄다는 것을 증명하는 단일 타임아웃은 없습니다. 해당 프로세스가 사용자가 직접 실행 중인 포그라운드 명령이고 안전하게 중단할 수 있다면 Ctrl+C해당 터미널에서 `reduced` 명령어를 사용하여 프로세스가 정상적으로 종료되도록 하십시오. 프로세스가 락을 점유하고 있다는 이유만으로 프로세스를 강제로 종료하지 마십시오.

최후의 수단으로, 프로세스가 실제로 응답하지 않는다는 것을 확인하고 정확한 PID를 식별했으며 패키지 구성을 중단하면 패키지가 미완료될 수 있다는 점을 이해한 경우, 정상적인 종료 신호를 보내십시오.

sudo kill -TERM PID

PID확인된 프로세스 ID로 바꾸십시오 . kill -9, killall dpkg, 또는 fuser -k와 같은 명령어를 일상적인 해결 방법으로 사용하지 마십시오. 강제 종료는 패키지 스크립트 실행을 중단시키거나 작업 복구에 시간이 걸릴 수 있습니다. 해당 작업이 직접 시작한 서비스가 아니라 자동 서비스인 경우, 익숙하지 않은 프로세스를 강제로 종료하기보다는 해당 서비스의 상태를 확인하거나 기다리십시오.

4단계: 이전 작업이 중단된 경우에만 패키지 구성을 복구합니다.

APT 또는 dpkg 프로세스가 남아 있지 않고 이전 설치 또는 업그레이드가 중단된 경우, dpkg에게 압축 해제된 패키지 구성을 완료하도록 요청한 다음 APT의 패키지 상태를 확인하십시오.

sudo dpkg --configure -a
sudo apt-get check
활성화된 패키지 작업이 더 이상 없는 것을 확인한 후, dpkg 구성 및 APT 종속성 검사를 실행할 수 있습니다.
중단된 작업 후 보류 중인 dpkg 구성을 완료하고 패키지 데이터베이스를 확인하기 위한 터미널 명령입니다.

프롬프트와 오류 메시지를 모두 읽으십시오. 첫 번째 명령은 패키지 구성 스크립트를 실행할 수 있으며, 시간이 걸리거나 질문이 나올 수 있습니다. apt-get check종속성 문제가 있는지 확인합니다. 종속성 문제가 보고되면, 옵션을 사용하기 전에 제안된 변경 사항을 검토하십시오 sudo apt-get -f install. 이 옵션은 종속성을 복구하려고 시도하며, 이를 위해 패키지를 설치하거나 제거할 수 있습니다. 이해할 수 없는 제거 작업은 승인하지 마십시오. Ubuntu apt-get 설명서에서 이 옵션 에 대한 설명을 확인할 수 check있습니다 --fix-broken.

잠금 오류에 대한 일반적인 오해

  • "잠금 파일이 있으니 삭제해야 할까요?" 아닙니다. 파일이 있다는 사실만으로는 프로세스가 잠금을 점유하고 있는지 알 수 없습니다. 프로세스가 실행 중인 상태에서 파일을 삭제해도 해당 프로세스가 중지되지 않으며, 다른 패키지 명령이 동일한 패키지 데이터베이스에 대해 실행될 수 있습니다. fuser대신 프로세스 목록을 확인하십시오.
  • "PID가 나타나지 않았으므로 데이터베이스가 손상되었습니다." 반드시 그런 것은 아닙니다. 소유자가 확인 사이에 종료되었거나, 이전 잠금이 해제되었거나, 오류가 다른 잠금 경로와 관련되었을 수 있습니다. 패키지 작업이 남아 있지 않은지 확인한 후 한 번 더 시도하십시오. 작업이 중단되었거나 패키지 오류로 인해 구성이 불완전한 경우에만 dpkg를 복구하십시오.
  • "모든 잠금 오류에는 다음이 필요합니다 dpkg --configure -a." 이 명령은 보류 중인 구성 작업을 처리하며, 활성 프로세스가 여전히 점유하고 있는 잠금을 해결하지는 않습니다. 먼저 해당 프로세스가 잠금을 해제할 때까지 기다리거나 안전하게 해결한 다음, 필요한 경우에만 복구 명령을 사용하십시오.
  • "잠금은 설정된 시간(분) 후에 항상 해제됩니다." 자동 업데이트 일정 및 작업 소요 시간은 릴리스, 설정, 네트워크 및 시스템에 따라 달라집니다. 타이머에 의존하지 말고 실제 진행 상황을 확인하십시오.

해결책이 효과가 있었는지 어떻게 알 수 있을까요?

잠금 보유자가 종료된 후 원래 명령을 다시 시도하십시오. 성공적으로 실행되면 잠금 메시지를 지나 요청된 패키지 작업을 완료할 수 있습니다. 작업 dpkg --configure -a이 완료되고 apt-get check종속성 문제가 없다고 보고되면 패키지 구성 및 종속성 검사 상태가 개선된 것입니다. 하지만 이는 관련 없는 저장소 또는 네트워크 문제가 모두 해결되었다는 것을 보장하지는 않습니다.

잠금 오류가 즉시 반환되면 정확한 잠금 경로, 해당 경로에 대한 출력, 일치하는 프로세스 명령 및 PID, 그리고 작업이 계속 진행 중인지 여부를 기록하십시오 . 이러한 세부 정보는 정상적인 경쟁 업데이트와 추가 문제 해결이 필요한 프로세스를 구분하는 데 도움이 됩니다. 프로세스를 식별하는 대신 sudo fuser -v파일을 제거하거나 잠금 파일을 삭제하지 마십시오 ./var/lib/dpkg

공식 참고 자료

댓글 남기기

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

손실된 파티션과 하드 디스크 데이터를 안전하게 복구하는 방법

TestDisk와 PhotoRec을 사용하여 손실된 파티션과 파일을 복구하는 방법을 알아보세요. 원본 드라이브를 보호하고 안전하게 스캔한 다음 복구된 데이터를 다른 디스크에 저장하세요.

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

리눅스 데스크톱에서 QR 코드를 스캔하는 방법

웹캠이나 이미지 파일을 사용하여 CoBang으로 Linux에서 QR 코드를 스캔하세요. Flatpak 카메라 접근 관련 설치 옵션, 설정 단계 및 문제 해결 방법을 참조하세요.

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하는 방법

Cameractrls를 사용하여 Linux에서 웹캠 설정을 변경하세요. 노출, 색상, 깜빡임 감소 및 기타 지원되는 제어 기능을 조정하고 호환되는 비디오 모드를 확인하세요.

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하는 방법: Toolbox, Tar.gz, Snap 및 AUR

Linux에 PhpStorm을 설치하려면 JetBrains Toolbox 또는 독립 실행형 tar.gz 아카이브를 사용하세요. Snap 및 Arch AUR 옵션도 제공됩니다. Java는 이미 포함되어 있습니다.

리눅스에 Cisco Packet Tracer를 설치하는 방법

리눅스에 Cisco Packet Tracer를 설치하는 방법

Cisco Packet Tracer 9.0.1 for Ubuntu 64비트 버전을 다운로드하고, APT를 사용하여 DEB 패키지를 설치한 다음, 터미널에서 라이선스에 동의하고 로그인하여 실습을 시작하십시오.

XFCE 4에서 듀얼 패널을 설정하는 방법

XFCE 4에서 듀얼 패널을 설정하는 방법

각 디스플레이마다 별도의 XFCE 4 패널을 생성하고, 두 번째 패널을 올바른 출력에 할당하고, 위치와 크기를 조정한 다음, 필요한 실행기와 상태 항목을 추가합니다.

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

리눅스에서 CD-ROM을 ISO 파일로 백업하는 방법

GNOME Disks 또는 dd 명령어를 사용하여 Linux에서 CD-ROM ISO 파일을 생성합니다. 광학 드라이브를 식별하고, 복사 과정을 모니터링하고, 이미지 유효성을 검사하고, 손상된 디스크나 오디오 디스크에 다른 도구가 필요한 경우를 알 수 있습니다.

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

리눅스에서 GIMP를 사용하여 이미지를 잘라내는 방법

GIMP를 사용하여 Linux에서 사진 배경 제거하기: 피사체를 따라 그리고, 선택한 배경을 삭제하고, 투명도를 유지한 다음, 재사용 가능한 PNG 파일로 내보낼 수 있습니다.

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear 무료 다운로드: 공식 설치 가이드

FlightGear를 공식 사이트에서 무료로 다운로드하세요. Windows, macOS, Linux 패키지를 비교하고, 데이터 파일을 설치한 후 첫 비행을 시작하세요.

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

Google Tasks 데스크톱 애플리케이션: 컴퓨터에서 사용하는 방법

브라우저에서 Google Tasks를 열거나, Chrome 바로가기 또는 앱 스타일 실행을 추가하고, 캘린더 및 Gmail을 통해 날짜별 할 일을 관리하세요.