종속성을 제거하지 않고 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.