E: Sub-process /usr/bin/dpkg returned an error code (1)
오류의 주요 원인과 해결 방법을 다루어 보겠습니다.
1. 잠긴 dpkg 상태
- dpkg 또는 apt가 이미 실행 중인 경우 발생할 수 있습니다.
- 해결 방법: 다른 패키지 관리 프로세스가 실행 중인지 확인하고, 문제가 없다면 잠금 파일을 삭제합니다.
sudo rm /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo dpkg --configure -a
sudo apt-get install -f
대부분 위에서 해결됩니다.
참고
다른 블로그에서 sudo rm /var/lib/dpkg/info/* 를 많이 쓰는데 이 명령어를 사용하면 잠재적으로 심각한 문제를 일으킬 수 있습니다. 문제점을 설명해 드리겠습니다:
- 시스템 불안정: /var/lib/dpkg/info/ 디렉토리에는 설치된 모든 패키지에 대한 중요한 정보가 들어 있습니다. 이 정보를 삭제하면 패키지 관리 시스템이 제대로 작동하지 않을 수 있습니다.
- 패키지 관리 불가: 이 파일들을 삭제하면 시스템이 어떤 패키지가 설치되어 있는지, 어떤 파일이 어느 패키지에 속하는지 등을 알 수 없게 됩니다.
- 업그레이드 문제: 향후 패키지 업그레이드 시 문제가 발생할 수 있습니다.
- 패키지 제거 불가: 패키지 제거 시 필요한 정보가 없어 제대로 제거되지 않을 수 있습니다.
- 의존성 문제: 패키지 간의 의존성 정보가 손실되어 시스템 전반에 문제가 생길 수 있습니다.
- 시스템 복구 어려움: 이 방법으로 문제를 "해결"한 후에는 시스템을 정상 상태로 복구하기가 매우 어려워집니다.
이 명령어는 일시적으로 문제를 "해결"하는 것처럼 보일 수 있지만, 장기적으로 더 큰 문제를 초래할 수 있습니다.
2. 깨진 패키지
- 패키지 설치 중 중단되거나 손상된 경우 발생할 수 있습니다.
- 해결 방법: 깨진 패키지를 정리하고, dpkg와 apt를 다시 시도합니다.
sudo apt-get install -f
sudo dpkg --configure -a
3. 의존성 문제
- 설치된 패키지 간의 의존성 문제가 있을 때 발생할 수 있습니다.
- 해결 방법: 의존성 문제를 해결합니다.
sudo apt-get -f install
sudo apt-get autoremove
4. 손상된 패키지 데이터베이스
- 패키지 데이터베이스가 손상된 경우 발생할 수 있습니다.
- 해결 방법: 패키지 상태를 강제로 복구합니다.
sudo dpkg --configure -a
sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade
5. 패키지 충돌
- 특정 패키지가 다른 패키지와 충돌할 때 발생할 수 있습니다.
- 해결 방법: 문제를 일으키는 패키지를 확인하고 제거하거나 수동으로 설치합니다.
sudo apt-get remove <package-name>
sudo apt-get autoremove
sudo apt-get update
sudo apt-get upgrade
6. 손상된 아카이브
- 패키지 다운로드 중 문제가 생겨 아카이브가 손상된 경우 발생할 수 있습니다.
- 해결 방법: 아카이브를 다시 다운로드합니다.
sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade