/var/lib/dpkg/ 디렉토리를 샅샅이 뒤지고 루트 사용자로 항목을 지운 경우 불쾌한 "/var/lib/dpkg/status 파일을 열 수 없습니다" 오류 또는 이와 유사한 오류가 발생할 수 있습니다. Linux Filesystem Hierarchy Standard에 따르면 /var에 있는 대부분의 파일은 임시 파일이며 작동 중에 변경됩니다. 그러나 이것이 웹 브라우저 캐시를 지워야 하는 것과 같은 방식으로 지워야 한다는 것을 의미하지는 않습니다.
대부분의 Linux 사용자는 여기를 샅샅이 뒤질 필요가 없기 때문에 좋은 소식은 아마도 이것을 거의 얻지 못할 것입니다. Fedora나 Arch와 같이 apt-get을 사용하지 않는 배포판을 사용하는 사람들은 이 오류가 전적으로 해당 패키지 관리자에만 해당되기 때문에 이 오류가 발생하지 않습니다. 그럼에도 불구하고 그것을 다루고 있다면 계속 읽으십시오.
방법 1:겉보기에 무작위로 수정하여 /var/lib/dpkg/status 파일을 열 수 없음 오류
이 오류가 갑자기 나타나면 ls /var/lib/dpkg/status를 입력합니다. 명령줄에서 출력을 살펴보십시오.
또한 브라우저에 그래픽 파일 관리자를 사용하여 살펴보고 싶을 수도 있습니다.
결과에 상태 파일이 표시되는지 확인합니다. 일반적으로 프롬프트로 바로 돌아가기 전에 /var/lib/dpkg/status 뒤에 아무 것도 없이 행만 표시됩니다. 이 경우 파일이 있고 괜찮을 것입니다. 저장 후 작업 중이던 모든 프로그램을 닫고 재부팅하십시오.
백업 및 실행이 완료되면 sudo apt-get update를 입력합니다. 그 다음 sudo apt-get upgrade 터미널에서 지시를 따릅니다. 관리자 암호를 묻는 메시지가 표시될 수 있지만 업데이트되면 문제가 없습니다. 이상한 오류가 있는지 확인하고 싶을 것입니다.
파일이 없으면 몇 가지 결정을 내려야 합니다.
방법 2:/var/lib/dpkg/status 재생성
일부 사용자는 Linux를 다시 설치하기 전에 이 시점에서 모든 중요한 데이터를 백업합니다. 이렇게 할 수도 있지만 먼저 물건을 구하는 방법이 있을 수 있습니다. /var/lib/dpkg/status의 백업 복사본이 자동으로 만들어지며 동기화되지 않는 오류가 발생한 후 시간이 너무 오래 지나지 않았으면 합니다.
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status를 실행해 보세요. 터미널에서. 이렇게 해도 오류가 발생하지 않으면 문제가 해결되었는지 확인할 수 있습니다. 이렇게 하면 상태 파일의 가장 최근 백업 복사본이 복원되지만 불행히도 너무 오래된 경우 여전히 문제가 될 수 있습니다. 그럼에도 불구하고 다시 시작한 다음 sudo apt-get update를 실행할 수 있습니다. 그 다음 sudo apt-get upgrade 어떤 종류의 종속성 오류가 발생하는지 확인하십시오. 최상의 시나리오에서는 아무 것도 갖고 있지 않고 평소처럼 시스템을 계속 사용할 수 있을 뿐입니다.
상태 목록을 다시 작성해 볼 수도 있습니다. sudo touch /var/lib/dpkg/status를 입력합니다. 루트 사용자로 빈 파일을 만든 다음 sudo apt-get install long-list를 시도합니다. 터미널에서. 이 작업을 자동으로 수행하는 몇 가지 스크립트가 있지만 이는 본질적으로 동일하며 컴퓨터에서 잠재적으로 오래된 스크립트를 실행할 위험이 없습니다. 이 작업을 수행하려면 시스템에 있는 항목을 기억해야 하며 소프트웨어에서 기억하라는 메시지를 표시합니다.
ls /var/backups/dpkg.status*를 시도할 수도 있습니다. 대신 사용할 수 있는 항목이 무엇인지 확인하세요.
실행할 때 나타나는 목록을 살펴보십시오. 압축되지 않은 파일이 있으면 sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status를 시도하세요. 문제가 해결되는지 확인합니다. 항상 다른 것 중 하나를 복사하고 gunzip 명령을 실행하여 압축을 풀 수 있습니다. 그러나 뒤로 갈수록 오래된 파일을 업데이트하여 종속성을 깨뜨릴 위험이 높아진다는 점을 명심하십시오.