dpkg: пакет обработки ошибок - Невозможно восстановить / удалить версию образа Linux с помощью apt и dpkg
У меня проблема с apt
и dpkg
обновляют мою версию ядра Linux.
Помощь будет принята с благодарностью, и я также рассматриваю это как хорошую возможность для изучения Linux:)
Я просмотрел множество подобных решений в Интернете, предлагающих команды, которые при запуске оказываются в том же или ошибки очень похожи на те, что я показал ниже, или что у меня может быть полный каталог / boot
, но я не верю, что это проблема, поскольку он сообщает о 50%. Я все равно не могу удалить версии ядра, чтобы освободить место (см. Ошибки ниже):
Я бы хотел получить самую последнюю версию ядра и пару предыдущих версий в качестве запасных. .
В настоящее время $ dpkg --list 'linux-image - *'
возвращает около 50 версий (варианты 5.4 *
, 5.8 *
и ] 5.11 *
)
$ sudo du -sh /boot
337M /boot
$ sudo df /boot
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/nvme0n1p2 721392 328124 340804 50% /boot
Моя текущая версия ядра:
$ uname -r
5.11.0-27-generic
ОС:
~$ uname -a
Linux thomas-labtop 5.11.0-27-generic #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
Когда я запускаю sudo apt --fix-broken install
Я получаю:
$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
linux-image-5.11.0-34-generic
0 to upgrade, 0 to newly install, 1 to remove and 5 not to upgrade.
2 not fully installed or removed.
After this operation, 10.2 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 238716 files and directories currently installed.)
Removing linux-image-5.11.0-34-generic (5.11.0-34.36~20.04.1) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-5.11.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.11.0-27-generic
Found initrd image: /boot/initrd.img-5.11.0-27-generic
Found linux image: /boot/vmlinuz-5.11.0-25-generic
Found initrd image: /boot/initrd.img-5.11.0-25-generic
Found linux image: /boot/vmlinuz-5.4.0-84-generic
Found initrd image: /boot/initrd.img-5.4.0-84-generic
Adding boot menu entry for UEFI Firmware Settings
/etc/grub.d/35_fwupd: line 5: /usr/share/grub: Is a directory
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 126
dpkg: error processing package linux-image-5.11.0-34-generic (--remove):
installed linux-image-5.11.0-34-generic package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
linux-image-5.11.0-34-generic
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)
Я я попытался очистить образ с помощью dpkg, и я также попытался установить его для установки:
$ echo "linux-image-5.11.0-34-generic install" | sudo dpkg --set-selections
Последующие команды apt
в конечном итоге возвращают его к удалению.
Я пробовал различные команды удалить
, очистить
и установить
. Поскольку linux-image-5.11.0-34-generic
находится в состоянии наполовину установлен
, я решил, что могу либо полностью удалить его, чтобы установить заново, либо завершить текущую установку но не смогли предотвратить его пометку как удаленную.
Текущее состояние dpkg --list 'linux-image *'
:
$ dpkg --list 'linux-image*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-======================================-=====================-============-=================================
un linux-image <none> <none> (no description available)
ii linux-image-5.11.0-25-generic 5.11.0-25.27~20.04.1 amd64 Signed kernel image generic
ii linux-image-5.11.0-27-generic 5.11.0-27.29~20.04.1 amd64 Signed kernel image generic
rH linux-image-5.11.0-34-generic 5.11.0-34.36~20.04.1 amd64 Signed kernel image generic
un linux-image-5.4.0-42-generic <none> <none> (no description available)
un linux-image-5.4.0-53-generic <none> <none> (no description available)
un linux-image-5.4.0-54-generic <none> <none> (no description available)
un linux-image-5.4.0-56-generic <none> <none> (no description available)
un linux-image-5.4.0-58-generic <none> <none> (no description available)
un linux-image-5.4.0-59-generic <none> <none> (no description available)
un linux-image-5.4.0-72-generic <none> <none> (no description available)
un linux-image-5.4.0-73-generic <none> <none> (no description available)
un linux-image-5.4.0-74-generic <none> <none> (no description available)
un linux-image-5.4.0-77-generic <none> <none> (no description available)
un linux-image-5.4.0-80-generic <none> <none> (no description available)
un linux-image-5.4.0-81-generic <none> <none> (no description available)
...
...
...
more below
На основании строк:
/etc/grub.d/35_fwupd: line 5: /usr/share/grub: Is a directory
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 126
Я изучал, как решить эту проблему. Решения в Интернете предложили удалить определенные пакеты grub и переустановить их. Учитывая мои текущие проблемы с apt
, я воздержался от этого, потому что это ухудшит состояние моей машины. Также я в любом случае не могу запускать команды изменения состояния apt
.
Ниже приводится содержание /etc/grub.d/35_fwupd
:
$ cat /etc/grub.d/35_fwupd
#! /bin/bash
# SPDX-License-Identifier: LGPL-2.1+
set -e
${pkgdatadir:?}
# shellcheck source=/dev/null
. "$pkgdatadir/grub-mkconfig_lib"
if [ -f /var/lib/fwupd/uefi_capsule.conf ] &&
ls /sys/firmware/efi/efivars/fwupd-*-0abba7dc-e516-4167-bbf5-4d9d1c739416 1>/dev/null 2>&1; then
source /var/lib/fwupd/uefi_capsule.conf
if [ "${EFI_PATH}" != "" ] && [ "${ESP}" != "" ]; then
echo "Adding Linux Firmware Updater entry" >&2
cat << EOF
menuentry 'Linux Firmware Updater' \$menuentry_id_option 'fwupd' {
EOF
${grub_probe:?}
prepare_grub_to_access_device '`${grub_probe} --target=device \${ESP}` | sed -e "s/^/\t/"'
cat << EOF
chainloader ${EFI_PATH}
}
EOF
fi
fi```