Я получаю эту ошибку после обновления

Я получил это сообщение об ошибке после самого последнего обновления:

dpkg: dependency problems prevent configuration of initramfs-tools:
 initramfs-tools depends on initramfs-tools-bin (<< 0.99ubuntu13.2.1~); however:
  Version of initramfs-tools-bin on system is 0.103ubuntu0.2.
 klibc-utils (2.0.1-1ubuntu2) breaks initramfs-tools (<< 0.103) and is installed.
  Version of initramfs-tools to be configured is 0.99ubuntu13.2.
dpkg: error processing initramfs-tools (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of plymouth:
 plymouth depends on initramfs-tools; however:
  Package initramfs-tools is not configured yet.
dpkg: error processing plymouth (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of mountall:
 mountall depends on plymouth; however:
  Package plymouth is not configured yet.
dpkg: error processing mountall (--configure):
 dependency problems - leaving unconfigured
No apport report written because MaxReports is reached already
                                                              No apport report written because MaxReports is reached already
      No apport report written because MaxReports is reached already
                                                                    dpkg: dependency problems prevent configuration of initscripts:
 initscripts depends on mountall (>= 2.28); however:
  Package mountall is not configured yet.
dpkg: error processing initscripts (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of upstart:
 upstart depends on initscripts; however:
  Package initscripts is not configured yet.
 upstart depends on mountall; however:
  Package mountall is not configured yet.
dpkg: error processing upstart (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of passwd:
 passwd depends on upstart-job; however:
  Package upstart-job is not installed.
  Package upstart which provides upstart-job is not configured yet.
dpkg: error processing passwd (--configure):
 dependency problems - leaving unconfigured
No apport report written because MaxReports is reached already
                                                              No apport report written because MaxReports is reached already
      No apport report written because MaxReports is reached already
                                                                    Errors were encountered while processing:
 initramfs-tools
 plymouth
 mountall
 initscripts
 upstart
 passwd
E: Sub-process /usr/bin/dpkg returned an error code (1)

2 ответа

Откройте терминал и выполните следующие команды:

sudo apt-get autoremove
sudo apt-get --purge remove && sudo apt-get autoclean
sudo apt-get -f install
sudo dpkg-reconfigure -a

Последняя команда может занять некоторое время, в зависимости от пакетов, установленных в вашей системе. Поэтому, пожалуйста, будьте терпеливы. Если у вас нет сломанных / остаточных пакетов, они будут выполняться без сообщений.

sudo apt-get update
sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo dpkg-reconfigure -a
sudo dpkg --configure -a
sudo update-initramfs -u

Затем перезагрузите вашу систему.

Мой однострочник для удаления старых ядер (это также освобождает место на диске):

dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge

Объяснение (помните, | использует выходные данные предыдущей команды в качестве входных данных для следующей)

  • dpkg --list список всех установленных пакетов
  • grep linux-image ищет установленные образы Linux
  • awk '{ print $2 }' просто выводит 2-й столбец (который является именем пакета)
  • sort -V упорядочивает элементы по номеру версии
  • sed -n '/'`uname -r`'/q;p' печатает строки перед текущим ядром
  • xargs sudo apt-get -y purge удаляет найденные ядра

Разматывать sed вызов:

  • -n говорит sed быть спокойным
  • `uname -r` выводит текущую установленную версию ядра - мы включаем ее в обратные кавычки, чтобы вывод был включен как часть команды (вы также можете увидеть это как $(uname -r)
  • /something/q говорит остановка, когда вы сопоставляете "что-то" (в этом случае что-то выводится uname -r) - / окружить регулярное выражение
  • p это печать
  • ; это разделитель команды, так /something/q;p говорит, что выход, когда вы соответствуете что-то, иначе распечатать

в целом, sed -n '/'`uname -r`'/q;p' выводит строки, пока они не совпадут с текущим именем ядра.

Если вы параноик (как я), вы можете сделать последнюю часть xargs echo sudo apt-get -y purge чтобы распечатать команду очистки старых ядер, вы можете проверить, что ничего неожиданного не было добавлено до ее запуска.


Модифицированная версия для удаления заголовков:

dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge

Обратите внимание sed вызов изменен. "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")" извлекает только версию (например, "3.2.0-44"), без "-generic" или подобного из uname -r


Версия "все в одном" для удаления изображений и заголовков (объединяет две версии выше):

echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs sudo apt-get -y purge
Другие вопросы по тегам