在看似部分内核升级后,Apt 无法升级或安装新软件包。我试过apt-get purge -f linux-image-extra-3.19.0-22-generic
失败并显示非常相似的错误消息。机器在启动到最新内核版本时也会崩溃(grub 中的默认版本),但以前的版本工作正常。
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be REMOVED:
linux-image-3.19.0-22-generic linux-image-extra-3.19.0-22-generic
The following packages will be upgraded:
linux-cloud-tools-common
1 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
2 not fully installed or removed.
Need to get 0 B/24.3 kB of archives.
After this operation, 208 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 453815 files and directories currently installed.)
Removing linux-image-extra-3.19.0-22-generic (3.19.0-22.22) ...
depmod: FATAL: could not load /boot/System.map-3.19.0-22-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/dkms 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
update-initramfs: Generating /boot/initrd.img-3.19.0-22-generic
grep: /boot/config-3.19.0-22-generic: No such file or directory
depmod: WARNING: could not open /tmp/mkinitramfs_6gldfB/lib/modules/3.19.0-22-generic/modules.order: No such file or directory
depmod: WARNING: could not open /tmp/mkinitramfs_6gldfB/lib/modules/3.19.0-22-generic/modules.builtin: No such file or directory
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
dpkg: error processing package linux-image-extra-3.19.0-22-generic (--remove):
subprocess installed post-removal script returned error exit status 1
Removing linux-image-3.19.0-22-generic (3.19.0-22.22) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
update-initramfs: Deleting /boot/initrd.img-3.19.0-22-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postrm.d at /var/lib/dpkg/info/linux-image-3.19.0-22-generic.postrm line 328.
dpkg: error processing package linux-image-3.19.0-22-generic (--remove):
subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
linux-image-extra-3.19.0-22-generic
linux-image-3.19.0-22-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)
我需要让 apt 再次工作并进入可以安装未来内核的状态。正确清除 3.19.0-22 内核会很好但没有必要。随时询问更多信息,并提前致谢
--编辑--
0x450 的答案适用于任何非内核相关的包。内核和 grub 更新将 apt 和 dpkg 返回到损坏状态。我注意到这个反复出现的错误消息:
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
这可能是与 grub 配置文件相关的问题吗?
sudo apt-get install --reinstall linux-image-extra-3.19.0-22-generic
导致非常相似的错误(可以在这里查看)
sudo dpkg --configure -a
创建此错误
sudo apt-get purge linux-image-extra-3.19.0-22-generic
创建此错误
0x4*_*450 12
我遇到了完全相同的问题,但损坏的内核包是 3.13.0.57 版。
检查问题:
检查dpkg status
软件包:
dpkg --status linux-image-3.19.0-22-generic
dpkg --status linux-image-extra-3.19.0-22-generic
Run Code Online (Sandbox Code Playgroud)
如果输出表明软件包处于错误状态,即half installed或not fully installed,这意味着它们分别已损坏apt-get
和dpkg
。
解决方案:
受感染的内核软件包的条目必须手动从状态文件中删除dpkg
,以便apt-get
与dpkg
正常再次本身的功能。步骤如下:
确保创建状态文件的备份,以防万一出现问题。
sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup
/var/lib/dpkg/status
使用您喜欢的文本编辑器打开并仅搜索和删除损坏包的引用。您不得删除任何其他内容!
运行sudo apt-get update
并sudo apt-get upgrade
确保一切都已修复。
此步骤是可选的,因为包管理器不再跟踪包,但如果您愿意,可以通过删除它们来释放一些磁盘空间。您可以安全地删除所有手动的破碎内核软件包的条目/boot
,并在/usr/src
但要非常小心。确保仅触摸与您的案例中的3.19.0-22版本相对应的文件/文件夹。
事实证明,该问题是由 grub-mkconfig 崩溃并显示错误消息引起的Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
(sda9 保留了我的 fs 根目录)。
Apt 崩溃是因为当它尝试安装新内核时,它运行 grub-mkconfig 将它们添加到启动菜单中。这实际上不是 apt 的问题,而是 grub 的问题。
我通过重新安装 ubuntu 并使用 ext3 而不是 ext4 作为包含我的文件系统根的分区来修复它。不过,我的主目录仍在其自己的 ext4 分区中,因此它似乎没有受到影响。
0x450 的答案作为一种临时修复效果很好,以便可以再次使用 apt。但它并不能解决根本问题。
归档时间: |
|
查看次数: |
8216 次 |
最近记录: |