我的 Ubuntu Server 18.04 系统虽然可以继续运行,但无法应用任何更新。我不知道我所做的任何系统更改是否是罪魁祸首。
我该怎么做才能解决这个问题?我尝试过自动移除、清除等。
这是典型的输出,但任何 apt 命令都会产生类似的错误:
# 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-4.15.0-22-generic
The following packages will be upgraded:
libcephfs2 librados2 ssh-import-id
3 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/3,065 kB of archives.
After this operation, 8,281 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 149817 files and directories currently installed.)
Removing linux-image-4.15.0-22-generic (4.15.0-22.24) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-22-generic
/etc/kernel/postrm.d/x-grub-legacy-ec2:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ...
Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) /usr/sbin/update-grub-legacy-ec2: line 1101: read:
read error: 0: Bad file descriptor
run-parts: /etc/kernel/postrm.d/x-grub-legacy-ec2 exited with return code 1
dpkg: error processing package linux-image-4.15.0-22-generic (--remove):
installed linux-image-4.15.0-22-generic package post-removal script
subprocess returned error exit status 1
Errors were encountered while processing:
linux-image-4.15.0-22-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
感谢大家的回复。按照以下建议操作。似乎无法通过 apt / dpkg 清理它。以下是输出:
# sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-22-generic
Found initrd image: /boot/initrd.img-4.15.0-22-generic
Found linux image: /boot/vmlinuz-4.15.0-20-generic
Found initrd image: /boot/initrd.img-4.15.0-20-generic
done
# sudo dpkg --purge linux-image-4.15.0-22-generic
dpkg: dependency problems prevent removal of linux-image-4.15.0-22-generic:
linux-image-generic depends on linux-image-4.15.0-22-generic.
linux-modules-extra-4.15.0-22-generic depends on linux-image-4.15.0-22-generic | linux-image-unsigned-4.15.0-22-generic; however:
Package linux-image-4.15.0-22-generic is to be removed.
Package linux-image-unsigned-4.15.0-22-generic is not installed.
dpkg: error processing package linux-image-4.15.0-22-generic (--purge):
依赖问题 - 未删除处理时遇到错误:linux-image-4.15.0-22-generic
答案1
我仍然不清楚为什么会遇到此问题,但似乎缺少 grub /boot/grub/menu.lst 文件导致 apt / dpkg 更新失败。所以我创建了一个空文件。
sudo touch /boot/grub/menu.lst
sudo update-grub2
一切顺利。然后继续更新系统:
sudo apt update
sudo apt upgrade
sudo apt autoremove --purge
在此过程中,会有一个警告,提示当前 menu.lst 文件与软件包维护者的版本不同。选择安装软件包维护者的版本的选项,然后其余的更新和清理将成功完成。下次内核升级时会看看进展如何,但问题暂时解决了。
感谢所有提出建议和帮助的人!
答案2
我知道这应该是一条评论,但我没有足够的声誉。
但我想让你知道我有一个类似问题昨天。
如果这个答案对你不起作用,你可以联系@videonauth。他是个非常好的人,帮助我解决了这个问题。
我将从他的回答中复制粘贴希望对你有帮助的部分:
运行更新后,首先删除可移除软件包,以更新正确的软件包档案:
sudo apt update sudo apt autoremove --purge
这应该会删除到目前为止所有可移动软件包,除了那个设法弄乱的软件包,我们可以通过安装它然后正确地删除它来删除它:
cd /var/cache/apt/archives sudo dpkg -i linux-modules-4.15.0-22-generic_4.15.0-22.24_amd64.deb sudo dpkg -r linux-modules-4.15.0-22-generic_4.15.0-22.24_amd64.deb
(Oussema 的注释:^此命令是基于我的系统架构是 amd64 而使用的。您可以使用以下命令查看您的系统架构uname -a
“i386”、“i486”、“i586”和“i686”以及“athlon”均表示 32 位。“x86_64”表示 64 位(Opteron 或 Athlon-64)。“i686-64”表示 32 位操作,具有 64 位地址空间(采用新内存机制的 Intel 686)。)
现在通过运行以下命令清理档案:
sudo apt clean
现在,我们可以在运行完整的更新过程后正确地重新安装软件包:
sudo apt update sudo apt dist-upgrade
使用以下行:
sudo apt install --reinstall linux-generic