Я устанавливал несколько пакетов, и во время установки одного из них система зависла, и пакет не был установлен. Но пакет был добавлен в список установленных пакетов. Поэтому я перезапускаю систему и пробую следующее:
Когда я пытаюсь удалить пакет, это не работает, поскольку он не может найти файл конфигурации.
Когда я пытаюсь установить пакет, он сообщает, что пакет уже установлен, и поэтому не устанавливается.
При попытке обновления происходит попытка удалить пакет и возникает указанная выше ошибка.
Итак, мой вопрос заключается в том, есть ли способ вручную удалить пакет из списка установленных пакетов или есть другой способ решить эту проблему?
Когда я бегу:sudo apt-get upgrade
Ошибка:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be REMOVED:
libglade2.0-cil libglib2.0-cil libgtk2.0-cil
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
18 not fully installed or removed.
After this operation, 2,819 kB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 119043 files and directories currently installed.)
Removing libglade2.0-cil (2.12.26-0xamarin1) ...
E: File does not exist: /usr/share/cli-common/packages.d/policy.2.8.glade-sharp.installcligac
dpkg: error processing package libglade2.0-cil (--remove):
subprocess installed post-removal script returned error exit status 1
Removing libgtk2.0-cil (2.12.26-0xamarin1) ...
E: File does not exist: /usr/share/cli-common/packages.d/policy.2.6.gtk-dotnet.installcligac
dpkg: error processing package libgtk2.0-cil (--remove):
subprocess installed post-removal script returned error exit status 1
Removing libglib2.0-cil (2.12.26-0xamarin1) ...
E: File does not exist: /usr/share/cli-common/packages.d/policy.2.6.glib-sharp.installcligac
dpkg: error processing package libglib2.0-cil (--remove):
subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
libglade2.0-cil
libgtk2.0-cil
libglib2.0-cil
E: Sub-process /usr/bin/dpkg returned an error code (1)
решение1
Есть несколько подходов, которые можно попробовать.
Первый — исправить /usr/share/cli-common/policy-remove
так, чтобы он не давал сбой, если политика отсутствует: отредактируйте его последнюю строку так, чтобы он запускался rm -f
вместо rm
. Этодолженпозволяют правильно извлечь пакеты.
Если это не удается, и поскольку вы пытаетесь удалить все пакеты Mono, будет достаточно безопасно удалить неисправные postrm
скрипты:
sudo rm /var/lib/dpkg/info/lib{glade,glib,gtk}2.0-cil.postrm
Единственная операция, postrm
которую выполняют скрипты, — это отмена регистрации политик, но вас это не волнует, поскольку вы в любом случае удаляете все.
Вы не единственный человек, который пострадал от этой проблемы: в 2012 году о ней сообщалось как оОшибка Debian 692962.