Як змусити видалити пакет, якщо сценарій видалення dpkg не вдався?


16

Я намагаюся видалити пакет, з якого я видалив /etc/init.d/disco-masterфайл (у спробі видалити пакунок вручну). Я хочу видалити disco-masterпакунок. Як це зробити зараз?

Ось що відбувається, коли я роблю 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)

Коли я це роблю, sudo apt-get install --reinstall disco-masterя отримую таке:

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

Коли я це sudo apt-get -f installотримую:

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)

Коли я бігаю, sudo apt-get remove disco-nodeотримую наступне:

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

Коли я це зробив sudo dpkg -P --force-all disco-master:

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

3
Спробуйте запустити sudo dpkg -P --force-all disco-master.
netcoder

зробив це ... додав питання.
фодон

Відповіді:


18

Створіть фіктивний інцидент, щоб обдурити dpkg:

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

Введіть наступні:

#!/bin/bash
exit 0

Збережіть файл, встановіть дозвіл на виконання ( sudo chmod 755 /etc/init.d/disco-master) та повторіть sudo apt-get remove disco-masterспробу.


Я робив подібну річ до ОП лише з пакетом солі-майстра ... ця відповідь також працювала для мене!
Анентропний

Енергозбереження Ерік, ти чудовий.
Петро Тео

3
Brilliant, у мене був: post-removal script returned error exit status 1.. Отже, я виявив , що сценарій /var/lib/dpkg/info/{package}.postrm, знову пройшов через це , щоб переконатися , що я зробив речі в ньому (видалити конфіги / файли і т.д.), а потім модифікувати його вище .. ЦЕ ПРАЦЮЄ .. Apt роботи . Дивовижний. : D
Grizly
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.