완전히 설치되지 않은 패키지를 제거 / 설치하는 방법은 무엇입니까?


62

나는 다른 날에 bsnes를 설치하고 어떤 이유로 설치에 실패했습니다. 이제이 깨진 패키지를 처리하려고 시도하고 실패 할 때 업데이트, 새 패키지 설치 또는 기본적으로 apt-get 명령을 수행 할 수 없습니다. 새 패키지를 설치하려고 시도해도 동일한 운명에 처하게됩니다. 내가 얻는 오류는 다음과 같습니다.

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ask Ubuntu에서 Google과 여기를 검색했지만 작동하는 솔루션을 찾지 못했습니다. 일반적으로 제안되는 수정은 다음을 실행하는 것입니다.

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

그러나 이것은 작동하지 않습니다. apt-get 명령은 모두 위와 동일한 오류로 실패하며 dpkg 명령은 도움이되지 않습니다. 그들은 종종 시냅틱이나 커맨드 라인을 통해 그것을 제거하는 것이 좋습니다.

도와 주셔서 감사합니다

답변:


60

고급 사용자는 자신의 책임하에 사용하십시오.

다음과 같은 오류 메시지에 따라

subprocess installed post-installation script returned error exit status 127

/var/lib/dpkg/info/[package_name].postinst모든 것을 편집 하고 주석을 달거나 (아직 이해하고 문제를 식별하려고 시도한 후) apt-get다시 시도 하십시오.

이 특정 질문에서이 메시지는 "설치 후"에 관한 것이지만, 예를 들어 "제거 전"또는 "제거 후"와 같이 언급 할 수 있습니다 (이 경우 편집 할 파일의 확장자는 .prerm또는 .postrm) .


2
실제로 이것이 가장 좋은 방법입니다. 재설치 dpkg가 항상 도움이되는 것은 아닙니다.
Danatela

2
고마워요. 나는 고쳐야 /var/lib/dpkg/info/[package_name].prerm했지만 당신의 게시물은 나에게 올바른 방향을 제시했습니다. 확실히 고급 사용자에게는 위험합니다 !
sмurf

가장 좋은 답변입니다. 감사! 수정 .prerm.postrm파일로 문제를 해결하십시오.
퓨저

42

이미 게시 한 것 외에 도움이 될 수있는 다른 명령이 거의 없습니다.

  • 자동 정리는 검색된 패키지 파일의 로컬 저장소를 지 웁니다.

    sudo apt-get autoclean
    
  • 패키지를 강제로 설치 / 제거합니다. ☠주의하여 사용하십시오

    sudo apt-get --force-yes install <pkgname>
    

    sudo apt-get --force-yes remove <pkgname>
    

또한 항상 그렇듯이 dpkg패키지를 설치, 제거 및 제거 하는 데 사용할 수 있습니다 .

  • 설치

    sudo dpkg -i <pkgname>
    
  • 없애다

    sudo dpkg -r <pkgname>
    
  • 숙청

    sudo dpkg -P <pkgname>
    

dpkg와 apt-get --force-yes 명령은 이전과 같은 오류를 반환합니다. 자동 청소는 오류를 반환하지 않지만 깨진 두 패키지로 아무 것도 수행하지 않는 것 같습니다.
Bijak

@Bijak 반드시 제거를 시도해야 bsnes합니다.
등록 된 사용자

dpkg -P, apt-get purge, 그리고 Synaptic과 함께
Bijak

의 출력을 게시dpkg -l |grep bsnes
등록 된 사용자

rF bsnes 0.088-7 amd64 정확한 SNES / SuperFamicom 에뮬레이터
Bijak

27

따라서 더 많은 인터넷 검색을하고 오류 메시지를 다시 자세히 읽은 후에 dpkg다시 설치 해야하는 것처럼 보입니다 .

sudo apt-get install --reinstall dpkg

이것이 문제라는 것을 알리는 것은 (누군가가 검색하고 볼 경우) update-alternatives: not found오류 메시지에 있다는 것입니다. dpkg를 다시 설치하자마자 다른 패키지는 자동으로 정상적으로 설치되었습니다.


3
왜 정답의 (보다 적은 득표 수로 유일하게 정답 (및 수락)이 정답입니까? +1
David Foerster 2016 년

더 이상 다운로드 할 수없는 패키지에서는 작동하지 않기 때문에 "linux-image-extra-4.4.0-65-generic을 다시 설치할 수 없으므로 다운로드 할 수 없습니다."
Joe

3
이것은 아마도 질문의 제목을 기반으로 여기에 오는 사람에게는 아마도 가장 적은 해결책 일 것입니다 . 그러나이 문제로 끝날 수있는 많은 이유 있으므로 제안 된 "이것이 저에게 효과적입니다"솔루션이 많이 제안 될 입니다.
마이클

실제로 작동하지 않습니다.
NelsonGon

15

/var/lib/dpkg/info/경로 에서 패키지 파일을 제거 하고 소스를 업데이트 할 수 있습니다.

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

그런 다음 패키지를 다시 설치하십시오. sudo apt-get install [package_name]

문서


4
실제로 당신은 더 잘 사용했습니다 sudo rm /var/lib/dpkg/info/[pakege_name].*. 그렇지 않으면 동일한 이름으로 시작하는 패키지도 제거합니다. 어쨌든, 이것에 감사합니다, 그것은 나를 위해 일한 유일한 솔루션이었습니다
smac89

13

다른 모든 것이 실패하면. 내가 한 일은 먼저 디렉토리를 다음과 같이 변경했다는 것입니다.

cd /var/lib/dpkg/info

그런 다음 모든 것을 제거했습니다 .postinst.

sudo rm *.postinst

그런 다음 저장소를 업데이트하십시오.

sudo apt-get update

내가 할 때 모든 것이 정상으로 돌아갔습니다.

sudo apt-get --force-yes install openjdk-7-jre-headless

6
이렇게 하면 영향을받는 패키지의 스크립트 뿐만 아니라 모든 설치 후 스크립트가 제거 됩니다. 제 생각에는 너무 열심입니다. -1
David Foerster

문제를 일으키는 특정 설치 후 스크립트 만 쉽게 식별하고 제거 할 수 있으면 실패한 패키지를 제거하는 매우 편리한 방법이 될 수 있습니다.
Ian Mackinnon

영향을받은 커널의 .postinst 이름을 바꾸는 커널 문제로 인한 악몽 후 문제가 해결되었습니다
Andy

5

다른 모든 방법이 실패하면을 통해 패키지를 수동으로 제거 할 수 있습니다 dpkg. 러닝 sudo dpkg -P bsnes을 제거해야합니다 bsnes.


2
dpkg: error processing package libcuda1-340 (--purge): package is in a very bad inconsistent state; you should reinstall it before attempting a removal
endolith

2

제 경우에는 apt-get install -f효과가있었습니다. 나는 mysql-workbench-community를 설치하고 있었다

이전에 시도 apt autoclean

강제 모드로 설치하여 해결할 수있는 일부 누락 된 종속성으로 인해 dpkg 오류가 발생했습니다 (종속성 설치).


0
sudo apt-get install -f --reinstall coreutils init-system-helpers

위에서 실행 한 후에는 모든 패키지에 대해 평소와 같이 설치 / 업그레이드 / 제거 / 제거 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.