우분투에서 깨진 패키지를 삭제하는 방법


37

깨진 패키지를 제거 할 수 없습니다. 다음 명령을 사용하십시오. sudo apt-get -f install 하지만 다음과 같은 응답이 나타납니다.

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

나는 다양한 명령을 시도했다.

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

그러나 나는 결과를 얻지 못했습니다. 시냅틱을 설치할 수 없습니다. 깨진 아이디어를 어떻게 제거 할 수 있습니까?


여기에 몇 가지 답변 제안했다 --force-remove-reinstreq--force-overwrite. Linux 전문가 인 경우에만이 두 가지 (특히 첫 번째 것)를 사용해야합니다. 시스템을 완전히 손상시킬 수 있기 때문입니다.
g_p December

답변:


54

이 명령을 실행하여 우분투에서 손상된 패키지를 제거하십시오.

sudo dpkg --remove --force-remove-reinstreq package_name 

패키지를 제거한 후 명령으로 시스템을 업데이트하십시오.

sudo apt-get update

성공적으로 업데이트 한 후 시스템을 다시 시작하십시오.


5
이 명령은 시스템을 복구하는 것보다 더 많이 중단하므로 항상 피해야합니다.
rancho

2
@rancho는 어떤 패키지인지에 달려 있습니다.
Philip

좋은 방법, 거스가 항상 package_name을 쓰는 방식이지만 900 형식의 목록을 미친 형식으로 볼 수 Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs )있습니다. LTS를 기다리는 것은 정말 미친 짓입니다.
nyxee 2012 년

@rancho "수리하는 것보다 더 많은 시스템을 망가 뜨립니다"당신은 정교하게 할 수 있습니까? man dpkg많이 도움이되지 않습니다.
Stéphane Gourichon

이것이 나를 위해 일한 유일한 것입니다. 패키지를 업데이트하는 동안 mysql을 중단했습니다. 이제 제거하거나 다시 설치할 수 없습니다. 그래서 이것은 내 생명을 구했습니다.
Ankit Singhaniya

11

터미널을 열고 다음 명령을 사용하십시오

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

문제를 해결해야합니다.


11

나는 그것을 발견했다 :

sudo dpkg --remove --force-remove-reinstreq <packagename>

가장 잘 작동합니다. 다른 패키지에 종속되어 패키지를 제거하지 않는다는 오류가 발생하면 다른 패키지도 제거하십시오. 이 단계를 여러 번 반복 한 다음 삭제 된 패키지를 다시 설치해야합니다.

force-remove-reinstreq패키지를 삭제하는 "핵 옵션"입니다. 삭제하려는 패키지에 따라 다른 패키지가있는 경우에만 실패합니다.이 경우에도 종속 패키지도 삭제했습니다.


핵 옵션은 퍼지, 청소, 재설치, 자동 제거 dpkg및 둘 다를 통해 작동 하고 apt-get실패한 곳에서 작동 했습니다. 고맙습니다.
LAFK는 Monica Reinstate Monica

이다 그냥 모든 핵무기 다시 시작하려는 경우 가장 좋은 솔루션입니다. 많은 시간을 절약했습니다! (또한 --purge 후 --purge 사용)
andersevenrud

plase, package_nameapt 로그 파일에 1000 개 이상의 라인 (일부 복제) 이 있을 때 이를 채우는 방법에 대한 힌트를 줄 수
있습니까

4

이것은 내 문제를 해결했다.

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

따라서 정답으로 표시하십시오.
jarno

완벽하게 작동합니다.
Shubham Patel

3

터미널을 열고 줄마다이 줄을 붙여 넣습니다.

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

그런 다음 다시 시도하십시오


2

같은 오류가 반복 우리가 할 경우 apt-get cleanapt-get -f install우리가에서 정크 데이터를 제거하지 않는 한 /var/lib/dpkg/status우분투에서 파일.

아파치 깨진 패키지를 제거해야한다고 가정 해보십시오. 처음에는 상태 파일을 열고 패키지 아파치를 검색해야합니다. 전체 패키지 설명을 제거하고 상태 파일을 저장하십시오. 그런 다음 apt-get -f install및을 사용해보십시오 apt-get clean.


2

위의 어느 것도 나를 위해 일하지 않았습니다. 결국 / var / lib / dpkg / status 파일을 편집하고 거기에서 패키지를 제거했습니다.

다른 일이 실패 하더라도이 작업을 수행하지 않는 것이 좋습니다 ...


이것은 나를 위해 일한 유일한 것 같습니다. --force-remove-reinstreq의 이른바 '핵 옵션'조차도 문제가되는 패키지를 삭제할 수 없습니다. 감사합니다.
alex

1

위의 어느 것도 나를 위해 일하지 않았습니다.

나는 사용했다 sudo aptitude.

즉시 오류를 발견하고 옵션을 제공했습니다. 선택하고 수정합니다.


또한 데비안에서 나를 위해 고쳤습니다. 이것은 나에게 유일한 해결책이었습니다. 전에는 저에게 도움이되지 않았습니다! 감사!
Hirbod

0

여기 하나가 있습니다 :

패키지 목록을 다음과 같이 업데이트하십시오

 sudo apt-get update

그런 다음 부분 패키지를 정리하십시오.

 sudo apt-get autoclean

이제 apt 캐시를 정리하십시오

 sudo apt-get clean

이제 불필요한 의존성을 제거하십시오

 sudo apt-get autoremove

위의 명령에서 깨진 패키지를 식별하고 다음과 같이 강제로 제거 할 수 있습니다

 sudo dpkg --remove --force-remove-reinstreq package_name

마지막으로 의존성이있는 다른 패키지를 모핑하십시오.

 sudo apt-get -f install 

어떻게되는지 말해줘


`sudo dpkg --remove -force --force-remove-reinstreq package_name 명령이 잘못되었다고 생각합니다.
Juan Simón

Ji ... 그래서 어느 것이 올바른 방법입니까?
Olu Smith

0
  1. 오늘 또는 어제 설치된 모든 패키지를 조회합니다 awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl : i386이 문제를 일으켰으므로 패키지를 제거합니다 sudo dpkg -r wine-qqintl:i386

  3. 끝난.


1
좋아, 우리는 최근에 이와 같은 패키지를 설치할 수 있지만, 이것은 깨진 패키지를 제거하는 방법을 묻는 질문에 대답하지 않습니다
Zanna

0

고장난 코디 패키지에 문제가있었습니다. 시냅틱 패키지 관리자를 열고 "브로큰"필터를 사용하여 패키지를 찾고 완전히 제거하도록 표시했습니다. 챔피언처럼 작동했습니다.

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