apt застревает при установке новых приложений

Вопрос или проблема

Когда я пытаюсь установить новый пакет с помощью apt или apt-get, я получаю следующее сообщение об ошибке:

$ sudo apt install sl
E: dpkg был прерван, вы должны вручную выполнить 'sudo dpkg --configure -a', чтобы исправить проблему. 

Итак, я следую инструкциям:

$ dpkg --configure -a
dpkg: ошибка: запрашиваемая операция требует привилегий суперпользователя
$ sudo dpkg --configure -a
Настройка icaclient (13.10.0.20) ...

Это занимает много времени, поэтому через некоторое время я нажимаю ctrl+c, и это приводит к следующему:

^Cdpkg: ошибка при обработке пакета icaclient (--configure):
постустановка icaclient пакетный скрипт-подпроцесс был прерван
При обработке ошибок возникли:
 icaclient

Теперь, когда я снова пытаюсь установить пакет, кажется, что это работает:

$ sudo apt install sl
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
sl уже является самой новой версией (3.03-17build2).
Следующие пакеты были установлены автоматически и больше не требуются:
  libllvm7 linux-headers-4.15.0-50 linux-image-4.15.0-50-generic linux-modules-4.15.0-50-generic
Используйте 'sudo apt autoremove', чтобы удалить их.
0 обновлено, 0 новых установлено, 0 будет удалено и 398 не обновлено.
1 не полностью установлен или удален.
После этой операции будет использовано 0 Б дополнительного дискового пространства.
Вы хотите продолжить? [Y/n]

И после нажатия Y:

Настройка icaclient (13.10.0.20) ...

Прогресс: [  0%] 
[...................................................]

Теперь он снова завис, и я не могу выйти с помощью ctrl+c. Когда я закрываю экран терминала, он повторяется с самого начала сообщения.

Как я могу это решить?

P.S. Я ежедневно использую приложение icaclient, но, вероятно, могу установить его заново.

Он завис на постустановочном скрипте, как указано в одном из сообщений об ошибках выше. После некоторых поисков я нашел, что постустановочные скрипты хранятся в /var/lib/dpkg/info/

Так что я смог легко это исправить, используя:

sudo rm /var/lib/dpkg/info/icaclient.postinst

После этого мне пришлось выполнить sudo dpkg --configure -a и удалить некоторые файлы блокировки.

Теперь apt работает так, как должен!

Мне пришлось завершить процесс, который удерживает файл блокировки, как описано в вики Debian, используя

sudo fuser -vki -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend

В моем случае apt upgrade завис с сообщением “(Пере)загрузите модули, если возможно” на шаге DKMS. Я нашел скрипт, используя

$ cd /var/lib/dpkg/info
$ rg 'load modules if possible'
tuxedo-drivers.postinst
54:        echo "(Re)load modules if possible"

В этом скрипте после этой строки было множество команд, которые выгружают модули и загружают их снова:

rmmod tuxedo_tuxi_fan_control > /dev/null 2>&1 || true
rmmod tuxi_acpi > /dev/null 2>&1 || true
# ... и так далее ...
modprobe tuxi_acpi > /dev/null 2>&1 || true
modprobe tuxedo_tuxi_fan_control > /dev/null 2>&1 || true

Итак, я попробовал их без части > /dev/null 2>&1 || true, чтобы, возможно, получить больше вывода, но я заметил, что sudo modprobe tuxedo_tuxi_fan_control зависает.

Так что я просто попробовал sudo dpkg --configure -a, и пока он снова зависал, я завершил процесс с помощью командной строки modprobe tuxedo_tuxi_fan_control (используя системный монитор KDE). Затем dpkg продолжил и успешно завершился.

Ответ или решение

Когда вы пытаетесь установить новое приложение с помощью apt или apt-get и сталкиваетесь с сообщением об ошибке «E: dpkg was interrupted…», это часто указывает на то, что предыдущая установка или настройка пакета была прервана, и система требует интервенции. Эта ситуация может быть довольно распространенной, особенно если в процессе установки произошел сбой или зависание. Ваша задача здесь — восстановить нормальное функционирование системы управления пакетами.

Шаги для решения проблемы:

  1. Запуск команды для завершения настройки пакетов:
    Первым делом, следуйте указаниям системы и выполните:

    sudo dpkg --configure -a

    Если вы сталкиваетесь с ошибкой, что операция требует прав суперпользователя, убедитесь, что команду выполняете с использованием sudo.

  2. Обработка зависаний:
    Если выполнение команды зависает (как в вашем случае с icaclient), попробуйте остановить процесс, нажав Ctrl+C. Это может привести к ошибкам, подобным:

    dpkg: error processing package icaclient (--configure):
    installed icaclient package post-installation script subprocess was interrupted

    В этом случае необходимо вручную удалить проблему.

  3. Удаление постинсталляционного скрипта:
    Для того чтобы обойти зависание в постинсталляционном скрипте, вы можете временно удалить скрипт, который отвечает за настройку данного пакета:

    sudo rm /var/lib/dpkg/info/icaclient.postinst
  4. Перезапуск конфигурации пакетов:
    После удаления скрипта снова выполните команду:

    sudo dpkg --configure -a

    Это должно помочь системе продолжить выполнение конфигурации без зависания.

  5. Обработка блокировок:
    Если dpkg или apt по-прежнему висят, возможно, существуют файлы блокировок. Для их удаления, сначала определите процесс, который удерживает блокировку:

    sudo fuser -vki -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend

    Это позволит убить процесс, который может блокировать установку.

  6. Проверка состояния приложения:
    Если проблема связана с конкретным приложением (в вашем случае icaclient), можно попробовать удалить его:

    sudo apt remove icaclient

    После этого применение:

    sudo apt install icaclient
  7. Дополнительные шаги для устранения зависаний:
    Если вы столкнулись с зависаниями в других конфигурациях (например, при работе с DKMS), проверьте скрипты:

    cd /var/lib/dpkg/info
    rg 'load modules if possible'

    Если какая-то из команд модуля зависает (как в вашем случае с modprobe), попробуйте вручную отключить или перезагрузить модули вне конфигурационных скриптов.

Заключение:

Работа с apt и dpkg может иногда приводить к сложным ситуациям. Важно оставаться спокойным и следовать упомянутым шагам для разрешения проблем. Если же проблема продолжает сохраняться, изучение соответствующей документации и сообществ может предоставить дополнительные решения и советы. Не забывайте, что правильная диагностика — это первый шаг к эффективному устранению неполадок.

Оцените материал
Добавить комментарий

Капча загружается...