在 Mint 19 上再次 apt-get upgrade 和 apt-get autoremove 后,发现 dpkg 无法配置轴映像更新包。更准确地说,我无法删除旧的 linux-image-4.15.0-66-generic。当我再次运行升级时,我得到了这个:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Расчёт обновлений… Готово
Следующий пакет устанавливался автоматически и больше не требуется:
shim
Для его удаления используйте «sudo apt autoremove».
Следующие пакеты будут УДАЛЕНЫ:
linux-image-4.15.0-66-generic
Следующие пакеты будут оставлены в неизменном виде:
fwupd fwupdate fwupdate-signed linux-generic linux-headers-generic linux-image-generic
Следующие пакеты будут обновлены:
code linux-base
Обновлено 2 пакетов, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 6 пакетов не обновлено.
Установлено или удалено не до конца 5 пакетов.
Необходимо скачать 0 B/62,3 MB архивов.
После данной операции объём занятого дискового пространства уменьшится на 8 394 kB.
Хотите продолжить? [Д/н] y
Предварительная настройка пакетов ...
(Чтение базы данных … на данный момент установлено 410706 файлов и каталогов.)
Удаляется linux-image-4.15.0-66-generic (4.15.0-66.75) …
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-66-generic
/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/50_linuxmint.cfg'
Генерируется файл настройки grub …
Найден образ linux: /boot/vmlinuz-4.15.0-76-generic
Найден образ initrd: /boot/initrd.img-4.15.0-76-generic
Найден образ linux: /boot/vmlinuz-4.15.0-72-generic
Найден образ initrd: /boot/initrd.img-4.15.0-72-generic
Найден образ linux: /boot/vmlinuz-4.15.0-70-generic
Найден образ initrd: /boot/initrd.img-4.15.0-70-generic
Найден образ linux: /boot/vmlinuz-4.15.0-20-generic
Найден образ initrd: /boot/initrd.img-4.15.0-20-generic
Найден образ linux: /boot/vmlinuz-4.15.0-76-generic
Найден образ initrd: /boot/initrd.img-4.15.0-76-generic
Найден образ linux: /boot/vmlinuz-4.15.0-72-generic
Найден образ initrd: /boot/initrd.img-4.15.0-72-generic
Найден образ linux: /boot/vmlinuz-4.15.0-70-generic
Найден образ initrd: /boot/initrd.img-4.15.0-70-generic
Найден образ linux: /boot/vmlinuz-4.15.0-20-generic
Найден образ initrd: /boot/initrd.img-4.15.0-20-generic
Добавление записи в загрузочное меню для конфигурации с микропрограммой EFI
ошибка: syntax error.
ошибка: Incorrect command.
ошибка: syntax error.
Синтаксическая ошибка в строке 138
В сгенерированном файле настроек GRUB обнаружены синтаксические ошибки.
Убедитесь, что в файлах /etc/default/grub
и /etc/grub.d/* ошибки отсутствуют или пошлите сообщение об ошибке
в прикреплённым файлом /boot/grub/grub.cfg.new.
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 1
dpkg: ошибка при обработке пакета linux-image-4.15.0-66-generic (--remove):
installed linux-image-4.15.0-66-generic package post-removal script subprocess returned error exit status 1
При обработке следующих пакетов произошли ошибки:
linux-image-4.15.0-66-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
我使用 grub-mkconfig 手动配置了 grub,但 dpkg 固执地按照他的方式进行了配置。当我查看他生成的配置的第 138 行时,是这样的:
### BEGIN /etc/grub.d/40_custom_proxy ###
menuentry "Linux Mint" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-f034ca3a-4301-49a0-8ca3-148874a7e419' {
} # ЭТО 138 СТРОКА
### END /etc/grub.d/40_custom_proxy ###
我怀疑花括号块中应该有一些指示,就像其他块一样,但是如何获得它们呢?没有注释的 /etc/default/grub 文件如下所示:
GRUB_DEFAULT="0"
GRUB_TIMEOUT_STYLE="hidden"
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
和 /ect/default/grub.d//etc/default/grub.d/50_linuxmint.cfg 像这样:
set -e
GRUB_DISTRIBUTOR="Ubuntu"
问题是现在 dpkg 尝试使用任何 apt 操作删除旧的 linux 映像,无论是升级、删除还是安装,所以现在我根本无法使用包管理器。有什么方法可以让 dpkg 忘记这个图像而不尝试配置 grub?事实上,我不需要鹅耳枥,计算机立即加载带有 Linux 的部分。
明白了。我试图完全删除 /etc/grub.d/40_custom_proxy 文件,这样它就不会被复制到配置中,它有帮助,dpkg 启动并更新了所有内容。重新启动后,Mint 启动正常,但引导加载程序崩溃如下:
原则上都是一样的,但为了解决所有问题,我完全重新安装了 grub,因为现在 apt-get 已经可用了。现在 grub 也从它自己的分区开始,它在列表中有之前删除的 Mint。问题已结束。