종속성을 제거하지 않고 deb를 제거하는 방법


43

나는 최신 버전의 설치하고자하는 BOTO 내가 통해 수행python setup.py install

그러나 이전 버전을 제거하려고하면 다음 패키지도 제거됩니다.

apt-get remove python-boto
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  cloud-init cloud-utils euca2ools python-boto

패키지 관리자에게 boto를 제거하도록 알리고 외부에서 (또는 이와 비슷한) 설치된 것으로 표시하여 apt가 누락 된 종속성을 수정하려고 시도하지 않습니까?

고마워요,
맥심


<code> sudo dpkg --python-boto 제거 </ code>를 사용해 보셨습니까?
dkuntz2

답변:


16

equivs유틸리티를 사용하여 더미 .deb 패키지를 만들 수 있으며 파일을 설치하지 않고도 종속성을 제공합니다. 그런 다음을 사용하여 현재 설치된 패키지를 더미 버전으로 교체하십시오 dpkg -i fake.deb.


60

apt-get이나 적성이 아닌 dpkg를 직접 사용하십시오.

sudo dpkg -r --force-depends "packagename-version"

1
그러나 apt를 사용하여 무언가를 설치하려고하면 dpkg로 제거한 패키지가 누락되어 다시 설치됩니다. 질문 어떻게 다시 설치하지 않으려면 일관성 상태를 무시합니까?
Maxim Veksler

15

나는 이것이 오래된 게시물이라는 것을 알고 있지만 최근에 비슷한 문제가 있었기 때문에 미래의 누군가가 유용하다고 생각하기 때문에 내 솔루션을 공유하고 싶습니다.

aptitude를 통해 패키지를 설치 한 경우 종속성 (자동)에 플래그를 자동으로 할당하고 패키지를 다시 제거하려고하면 자동 플래그가 여전히 설정된 모든 종속성을 제거하려고합니다.

내 경우에 알 수 있듯이 zabbix는 제거하고 싶습니다.

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  apache2{u} dbconfig-common{u} fping{u} javascript-common{u} libhtml-template-perl{u} libiksemel3{u} libjs-prototype{u} 
  libjs-scriptaculous{u} libopenipmi0{u} libt1-5{u} mysql-server{u} mysql-server-5.1{u} mysql-server-core-5.1{u} php5{u} php5-gd{u} 
  php5-mysql{u} snmpd{u} wwwconfig-common{u} zabbix-frontend-php{p} zabbix-server-mysql{p} 
0 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 44.9 MB will be freed.
Do you want to continue? [Y/n/?]

우리가 아파치 패키지를 찾아 보면

uman@mango:~$ aptitude search ^apache2
i A apache2        - Apache HTTP Server metapackage
<snip>

첫 번째 플래그 "i"는 아파치가 설치되었음을
나타냅니다. 다음 플래그 "A"는 자동으로 설치됨을 나타냅니다.

따라서이 문제를 해결하고 아파치, mysql 및 php를 제거하지 않으려면 다음과 같이 적절하게 auto 플래그를 제거하면됩니다.

uman@mango:~$ sudo aptitude unmarkauto apache2 mysql-server php5
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.

zabbix 패키지를 제거 할 때 다음과 같이 보입니다 :

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  dbconfig-common{u} fping{u} javascript-common{u} libiksemel3{u} libjs-prototype{u} libjs-scriptaculous{u} libopenipmi0{u} libt1-5{u} 
  php5-gd{u} wwwconfig-common{u} zabbix-frontend-php{p} zabbix-server-mysql{p} 
0 packages upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 16.6 MB will be freed.
Do you want to continue? [Y/n/?] 

자세한 내용은 맨 페이지에서 적성을 확인하십시오.


이것은 상황에 따라 모두의 최선의 대답처럼 보입니다. 모든 부양 가족을 찾아서 자동 표시를 해제하는 명령을 만들기가 너무 어렵지 않아야합니다.
johny 왜

13

그것이 바로 무엇 apt-mark hold을위한 것입니다.

apt-mark hold package_name

설명서에서 :

hold는 패키지를 보류 된 것으로 표시하는 데 사용되며, 패키지가 자동으로 설치, 업그레이드 또는 제거되지 않도록합니다. 이 명령은 dpkg --set-selections 주위의 래퍼 일 뿐이므로 상태는

패키지를 보류 해제하려면

apt-mark unhold package_name


1
내 상황에서는 이것이 권장되는 방법입니다.
Paulo Coghi

1
불행히도, 이것은 의존성을 유지하지 못합니다. 즉, 패키지 A와 B를 설치하고 공통 종속성 X를 공유하고 A를 보유하면 X를 보유하지 않으며 "E : 오류, pkgProblemResolver :: 생성 된 중단을 해결하면 보류 된 패키지로 인해 발생할 수 있습니다."와 함께 B 제거에 실패합니다.
MSalters

이 작업을 수행 할 때 오류가 발생합니다. The following packages have unmet dependencies: mysql-server-5.7 : Depends: apparmor (>= 2.10) but it is not going to be installed E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
frogstarr78


0

João Pinto의 답변을 완성하기 위해 작은 스크립트를 사용하여 깨진 패키지를 수정할 수 있습니다.이 스크립트는 equivs로 더미 패키지를 만들어 설치합니다. 내 블로그에서 프랑스어 로 기사를 찾을 수 있습니다 .

또는 요점 코드 에 직접 .

그것을 사용하려면 :

$ ./gen-dummy-package.sh --install|i [packageName]+
# e.g. :
$ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.