Как удалить / установить пакет, который не полностью установлен?

37

Я пошел на установку bsnes на днях и по какой-то причине установка не удалась. Теперь я не могу обновлять, устанавливать новые пакеты или выполнять практически любые команды apt-get, поскольку все они пытаются обработать этот сломанный пакет и сбой. Попытка установить новый пакет также просто обрекает его на ту же участь. Ошибка, которую я получаю:

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

Я искал в Google и здесь, на Ask Ubuntu, но не нашел рабочего решения. Обычно рекомендуется исправить следующее:

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

Это, однако, не работает. Команды apt-get не работают с той же ошибкой, что и выше, и команда dpkg просто не помогает. Другое дело, что они часто предлагают очистить его с помощью Synaptic или командной строки, что также терпит неудачу.

Спасибо за помощь

    
задан Bijak 24.03.2014 в 03:42
источник

8 ответов

16

Итак, после того, как вы снова заглянули в googling и действительно внимательно прочитали сообщения об ошибках, кажется, что dpkg необходимо переустановить.

sudo apt-get install --reinstall dpkg

Что подсказывало, что это была проблема (если кто-то ищет и видит это), это то, что update-alternatives: not found было в сообщении об ошибке. Как только dpkg был переустановлен, остальные пакеты автоматически устанавливались автоматически.

    
ответ дан Bijak 25.03.2014 в 04:26
источник
37

Для опытных пользователей используйте свои собственные риски.

В соответствии со следующим сообщением об ошибке:

subprocess installed post-installation script returned error exit status 127

Вы можете отредактировать /var/lib/dpkg/info/[package_name].postinst и прокомментировать все (или, еще лучше, попытаться понять это и определить проблему), а затем снова попробовать apt-get .

Обратите внимание, что хотя в этом конкретном вопросе сообщение касается «после установки», оно могло бы упоминаться, например, «предварительное удаление» или «пост-удаление» (в каких случаях расширение файла для редактирования будет .prerm или .postrm ).

    
ответ дан Skippy le Grand Gourou 05.06.2015 в 09:58
31

Помимо тех, которые вы уже разместили, есть несколько других команд, которые могут быть полезны.

  • Autoclean очищает локальный репозиторий полученных файлов пакетов.

    sudo apt-get autoclean
    
  • Принудительная установка / удаление пакетов. ☠Используйте с осторожностью

    sudo apt-get --force-yes install <pkgname>
    

    и

    sudo apt-get --force-yes remove <pkgname>
    

Также, как и всегда, вы можете использовать dpkg для установки, удаления и очистки пакетов.

  • Установить

    sudo dpkg -i <pkgname>
    
  • Удалить

    sudo dpkg -r <pkgname>
    
  • Продувка

    sudo dpkg -P <pkgname>
    
ответ дан Registered User 24.03.2014 в 05:10
7

Если все остальное не работает. Что я сделал, так это то, что я сначала сменил каталог на:

cd /var/lib/dpkg/info

, то я удалил все с помощью .postinst :

sudo rm *.postinst

затем обновить репозиторий

sudo apt-get update

, тогда все прошло нормально, когда я сделал:

sudo apt-get --force-yes install openjdk-7-jre-headless
    
ответ дан Mike B 14.04.2016 в 04:39
5

Вы можете удалить файл пакета в директории /var/lib/dpkg/info/ и обновить источник.

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

Затем переустановите пакет sudo apt-get install [package_name]

Док

    
ответ дан Hamed 30.05.2017 в 10:29
4

Если все остальное не удается, вы можете вручную удалить пакет через dpkg . Запуск sudo dpkg -P bsnes должен очистить bsnes .

    
ответ дан saiarcot895 24.03.2014 в 03:56
2

В моем случае apt-get install -f работал. Я устанавливал mysql-workbench-community

Ранее проверенный apt autoclean

Я видел, что ошибка dpkg из-за некоторых отсутствующих зависимостей, которые могут быть исправлены путем установки в принудительном режиме (установка зависимостей)

    
ответ дан Vikas Avnish 19.11.2016 в 11:24
0
sudo apt-get install -f --reinstall coreutils init-system-helpers

После выполнения выше вы можете установить / обновить / удалить / очистить, как обычно, для любых пакетов.     

ответ дан Uddhav Gautam 23.02.2018 в 18:09