
Я использовал Debian Wheezy больше года без каких-либо проблем до недавнего времени. Без всякой видимой причины система внезапно решила, что ядро Linux настроено только наполовину, и ни одно из исправлений, которые я нашел в сети, не сработало. В результате apt
пытается исправить это каждый раз при выполнении обновлений и терпит неудачу.
Подробности
Симптом
При каждом запуске обновлений apt
в какой-то момент будет предпринята попытка исправить ядро, но произойдет сбой, и процесс обновления прервется с сообщением об ошибке, а затем с сообщением о том, что система обновлена.
Любая деятельность по обновлению apt
заканчивается следующим:
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
E: /usr/sbin/update-initramfs.orig.initramfs-tools - command not found
E: On Debian based systems, update-initramfs from initramfs-tools
E: can be installed with:
E: apt-get install initramfs-tools
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-4-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-4-amd64 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
linux-image-3.2.0-4-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
Ядро
Практически та же проблема была описана ввопрос на Ask Ubuntu. Принятый ответ указал на проблему с dpkg
файлом статуса. Запись статуса дляlinux-image-3.2.0-4-amd64
сказал, что он наполовину настроен.
В качестве первого шага я попробовал следующее:
administrator@Kwheezy:~$ sudo dpkg-reconfigure linux-image-3.2.0-4-amd64
/usr/sbin/dpkg-reconfigure: linux-image-3.2.0-4-amd64 is broken or not fully installed
Переустановка не помогла, значит, проблема в системе.
Решение Ask Ubuntu заключалось в удалении записи из dpkg
файла состояния и последующей переустановке. В моем случае это тоже не сработало. Когда процесс был завершен, dpkg
файл состояния заменил запись другой, которая все еще говорила, что она наполовину настроена, и поведение системы было прежним.
Удачный вывод
Сосредоточимся на сообщениях об ошибках в apt
выводе. Ошибки всегда начинаются с:
/usr/sbin/update-initramfs.orig.initramfs-tools - command not found
Конечно, этот файл не существует. Полезное сообщение сообщает, что его можно установить, установивinitramfs-tools
. Это уже было установлено, но я переустановил его. Оказывается, он apt
уже делал это сам по себе. Все сообщения об ошибках, следующие за руководством по установкеinitramfs-tools
генерируется этой попыткой установки, которая никогда не приводит к/usr/sbin/update-initramfs.orig.initramfs-tools
в процессе установки.
Краткое содержание
- У меня есть последнее доступное ядро Linux из репозитория Wheezy. Это хорошая копия, все зависимости выполнены, и нет сообщений о проблемах с ней у других пользователей.
- Система сообщает, что она не полностью настроена. Я не нашел способа ни настроить ее, ни заставить систему перестать думать, что она не полностью настроена.
решение1
Разрешение
sudo apt-get remove live-tools
sudo apt-get install --reinstall initramfs-tools
sudo apt-get install -f
Объяснение
Получив более полное представление о системе fixer1234в чате, я определил, что установленный пакет live-tools
конфликтует с initramfs-tools
.
При live-tools
установке он переопределяет /usr/sbin/update-initramfs
свой собственный скрипт и помещает оригинал в /usr/sbin/update-initramfs.orig.initramfs-tools
.
live-tools
имеет некоторые проверки работоспособности, которые определяют, находится ли он в работающей системе. Если он не в работающей системе, а в установленной системе, он пытается запустить /usr/sbin/update-initramfs.orig.initramfs-tools
, который является правильным скриптом для обновления initramfs.
В системе fixer1234 /usr/sbin/update-initramfs.orig.initramfs-tools
был удалён.
Поскольку система является установленной, live-tools
она, вероятно, не нужна, поэтому я и рекомендовал ее удалить.
Вот как работает каждый шаг, предложенный в разделе «Решение» выше:
sudo apt-get remove live-tools
При удалении live-tools
будет предпринята попытка восстановиться /usr/sbin/update-initramfs.orig.initramfs-tools
до /usr/sbin/update-initramfs
, но поскольку /usr/sbin/update-initramfs.orig.initramfs-tools
не существует, возникнет ошибка.
live-tools
все равно будут удалены, и это главное.
Нас все еще не хватает /usr/sbin/update-initramfs
.
sudo apt-get install --reinstall initramfs-tools
Чтобы восстановить /usr/sbin/update-initramfs
, мы переустанавливаем пакет, который предоставляет этот файл. А именно, initramfs-tools
.
sudo apt-get install -f
Установка ядра была не завершена из-за сбоя с live-tools
и initramfs-tools
, поэтому для завершения установки и устранения всех проблем с пакетами необходим этот последний шаг.
Теперь у вас должна быть полностью работоспособная система Debian.
(Кстати, эти шаги теоретически работают в Debian 8, Ubuntu 12.04, Ubuntu 14.04, Ubuntu 15.10, Ubuntu 16.04 и Ubuntu 16.10.)