Wie kann ich das Entfernen eines Pakets erzwingen, wenn das Skript zum Entfernen von dpkg fehlschlägt?

16

Ich versuche, ein Paket zu entfernen, in dem ich die /etc/init.d/disco-masterDatei gelöscht habe (in dem Versuch, das Paket manuell zu entfernen). Ich möchte das disco-masterPaket entfernen . Wie mache ich das jetzt?

Das passiert, wenn ich mache sudo apt-get remove disco-master:

removing disco-master ...
invoke-rc.d: unknown initscript, /etc/init.d/disco-master not found.
dpkg: error processing disco-master (--remove):
 subprocess installed pre-removal script returned error exit status 100
Errors were encountered while processing:
 disco-master
E: Sub-process /usr/bin/dpkg returned an error code (1)

Wenn ich das tue, sudo apt-get install --reinstall disco-masterbekomme ich Folgendes:

You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 disco-master : Depends: disco-node (= 0.4.2+nmu1) but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Wenn ich das tue, sudo apt-get -f installbekomme ich Folgendes:

Unpacking disco-node (from .../disco-node_0.4.2+nmu1_amd64.deb) ...
dpkg: error processing /var/cache/apt/archives/disco-node_0.4.2+nmu1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/disco/master/ebin/disco.app', which is also in package disco-master 0.4.1
No apport report written because MaxReports is reached already
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/disco-node_0.4.2+nmu1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Wenn ich renne sudo apt-get remove disco-nodebekomme ich folgendes:

Package disco-node is not installed, so not removed
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 disco-master : Depends: disco-node (= 0.4.1) but it is not going to be installed
                Depends: python-disco (= 0.4.1) but 0.4.2+nmu1 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Als ich das tat, sudo dpkg -P --force-all disco-masterbekam ich:

Removing disco-master ...
invoke-rc.d: unknown initscript, /etc/init.d/disco-master not found.
dpkg: error processing disco-master (--purge):
 subprocess installed pre-removal script returned error exit status 100
Errors were encountered while processing:
 disco-master
Fodon
quelle
3
Versuche zu rennen sudo dpkg -P --force-all disco-master.
Netcoder
habe das ... an die Frage angehängt.
Fodon

Antworten:

18

Erstellen Sie ein Dummy-Initscript, um dpkg zu täuschen:

sudo nano /etc/init.d/disco-master

Gib das Folgende ein:

#!/bin/bash
exit 0

Speichern Sie die Datei, legen Sie die Ausführungsberechtigung ( sudo chmod 755 /etc/init.d/disco-master) fest und versuchen Sie es sudo apt-get remove disco-mastererneut.

Eric Carvalho
quelle
Ich habe eine ähnliche Sache wie das OP nur mit Salt-Master-Paket gemacht ... diese Antwort hat auch bei mir funktioniert!
Anentropic
Lebensretter Eric, du bist großartig.
Peter Teoh
3
Genial, ich hatte: post-removal script returned error exit status 1.. Also, ich fand das Skript /var/lib/dpkg/info/{package}.postrm, ging es durch, um zu überprüfen, ob ich die darin enthaltenen Dinge getan hatte (löschen Sie Configs / Dateien usw.), und änderte es dann auf die oben genannten .. ES FUNKTIONIERT .. Apt funktioniert wieder . Tolle. : D
Grizly