Я получаю эту ошибку после обновления
Я получил это сообщение об ошибке после самого последнего обновления:
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
ищет установленные образы Linuxawk '{ 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