Como forçar a remoção de um pacote se o script de remoção do dpkg falhar?

16

Estou tentando remover um pacote em que excluí o /etc/init.d/disco-masterarquivo (em uma tentativa de remover o pacote manualmente). Eu quero remover o disco-masterpacote. Como faço isso agora?

Isto é o que acontece quando eu faço 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)

Quando eu sudo apt-get install --reinstall disco-masterrecebo o seguinte:

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).

Quando eu sudo apt-get -f installrecebo isso:

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)

Quando corro sudo apt-get remove disco-node, recebo o seguinte:

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).

Quando sudo dpkg -P --force-all disco-mastereu cheguei:

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
fonte
3
Tente correr sudo dpkg -P --force-all disco-master.
Netcoder
fez isso ... anexado à pergunta.
fodon 25/07/12

Respostas:

18

Crie um initscript fictício para enganar o dpkg:

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

Digite o seguinte:

#!/bin/bash
exit 0

Salve o arquivo, defina a permissão de execução ( sudo chmod 755 /etc/init.d/disco-master) e tente sudo apt-get remove disco-masternovamente.

Eric Carvalho
fonte
Fiz uma coisa semelhante ao OP apenas com o pacote salt-master ... essa resposta também funcionou para mim!
Anentropic #
salva-vidas Eric, você é ótimo.
Peter Teoh
3
Brilhante, eu tinha: post-removal script returned error exit status 1.. Então, encontrei esse script /var/lib/dpkg/info/{package}.postrm, examinei-o para verificar se havia feito as coisas nele (excluir configurações / arquivos etc.), depois modifiquei-o para o anterior. FUNCIONA .. O Apt funciona novamente . Surpreendente. : D
Grizly 25/11/2015