E: 子进程 /usr/bin/dpkg 返回错误代码 (1)

E: 子进程 /usr/bin/dpkg 返回错误代码 (1)

linux-image-2.6.32-5-amd64尝试更新Debian 6, x64 上的软件包时出现错误。

Setting up linux-image-2.6.32-5-amd64 (2.6.32-41squeeze2) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... Generating /boot/grub/default file and setting the default boot entry to 0
entry not specified.
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-amd64.postinst line 799, <STDIN> line 2.
dpkg: error processing linux-image-2.6.32-5-amd64 (--configure):
 subprocess installed post-installation script returned error exit status 128
configured to not write apport reports
                                      Errors were encountered while processing:
 linux-image-2.6.32-5-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

难道我做错了什么?

答案1

今天我遇到了一个问题,同样的签名 (zz-update-grub 返回 1),这并没有告诉你太多信息。我拆开了 grub-mkconfig(到处添加 echo 语句),直到我发现它在源代码 /etc/default/grub 中死机了,在那里我向默认的 linux cmdline 添加了 resume= 和一些交换检测逻辑。

由于我的交换分区目前处于关闭状态(我今天将内存增加了三倍),因此无法找到交换分区,并且反向调用会默默导致脚本退出。Swapon 修复了所有问题,不过此后我已向 /etc/default/grub 添加了一个带有实际错误消息的测试。

我不知道这是否是您的实际问题,但至少可以开始查找(zz-update-grub 主要运行 update-grub,后者使用一些参数运行 grub-mkconfig)。如果有帮助,我可以发布我的代码。

相关内容