it-swarm.com.de

So entfernen Sie ein Deb, ohne seine Abhängigkeiten zu entfernen

Ich möchte die neueste Version von boto installieren, was ich über python setup.py install mache

Wenn ich jedoch versuche, die alte Version zu entfernen, werden auch die folgenden Pakete entfernt:

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

Wie kann ich den Paketmanager anweisen, boto zu entfernen und als extern installiert (oder so ähnlich) zu markieren, damit apt nicht versucht, die fehlende Abhängigkeit zu beheben?

Danke,
Maxime.

40
Maxim Veksler

Sie können ein Dummy-DEB-Paket mit dem Dienstprogramm equivs erstellen. Es stellt die Abhängigkeit bereit, ohne Dateien zu installieren. Ersetzen Sie dann einfach das aktuell installierte Paket durch dpkg -i fake.deb auf die Dummy-Version.

15
João Pinto

Verwende dpkg direkt, nicht apt-get oder aptitude:

Sudo dpkg -r --force-depends "packagename-version"
56
user13364

Ich weiß, dass dies ein alter Beitrag ist, aber da ich kürzlich ein ähnliches Problem hatte, möchte ich meine Lösung in der Hoffnung mitteilen, dass es jemand in Zukunft nützlich findet.

Wenn Sie ein Paket über aptitude installiert haben, weist es den Abhängigkeiten automatisch Flags zu (auto), und wenn Sie versuchen, Ihr Paket erneut zu entfernen, versucht es, alle Abhängigkeiten zu entfernen, bei denen das Auto-Flag immer noch gesetzt ist.

Wie Sie in meinem Fall sehen können, ist es Zabbix, das ich entfernen möchte:

[email protected]:~$ 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/?]

Und wenn wir das Apache-Paket nachschlagen, sieht es so aus

[email protected]:~$ aptitude search ^Apache2
i A Apache2        - Apache HTTP Server metapackage
<snip>

das erste Flag "i" zeigt an, dass Apache installiert ist
Das nächste Flag "A" steht für automatisch installiert

Um dies zu beheben und Apache, MySQL und PHP nicht deinstalliert zu haben, können wir einfach das Auto-Flag mit der folgenden Einstellung entfernen:

[email protected]:~$ 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.

Jetzt sieht es beim Entfernen des zabbix-Pakets so aus:

[email protected]:~$ 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/?] 

Bitte überprüfen Sie die Manpage für Eignung für weitere Details

15
David Berkan

Genau dafür ist apt-mark hold.

apt-mark hold package_name

Aus der Dokumentation:

hold wird verwendet, um ein Paket als zurückgehalten zu markieren, wodurch verhindert wird, dass das Paket automatisch installiert, aktualisiert oder entfernt wird. Der Befehl ist nur ein Wrapper um dpkg --set-selections und der Status ist daher

So heben Sie ein Paket auf:

apt-mark unhold package_name

12
Marcio

AFAIK: Es gibt keine Möglichkeit, ein Paket mit APT zu entfernen, ohne auch die Pakete zu entfernen, die davon abhängen.

Referenz: http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.en.html

3
aneeshep

Um die Antwort von João Pinto zu vervollständigen, können Sie mein kleines Skript verwenden, um defekte Pakete zu reparieren. Dieses Skript erstellt ein Dummy-Paket mit Äquivalenten und installiert es. Sie finden einen Artikel auf mein Blog auf Französisch .

Oder direkt am Gist-Code .

Um es zu benutzen:

$ ./gen-dummy-package.sh --install|i [packageName]+
# e.g. :
$ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
0
heralight