![dpkg --configure -a 在找到 initrd 映像时挂起](https://linux22.com/image/1131808/dpkg%20--configure%20-a%20%E5%9C%A8%E6%89%BE%E5%88%B0%20initrd%20%E6%98%A0%E5%83%8F%E6%97%B6%E6%8C%82%E8%B5%B7.png)
我有一个带有 GitLab 的 Ubuntu 14.04 LTS“桌面”。该系统在 Windows Server 2012 R2 上的虚拟机中运行。
机器每天自动更新“重要安全更新”、“推荐更新”和“不支持的更新”。不更新“预发布更新”。
今天我登录了系统,运行“sudo apt-get update”,但由于某些进程正在使用 dpkg,因此无法完成。
我已经运行“sudo apt-get upgrade”并且它已更新但挂在:
Found linux image: /boot/vmlinuz-3.19.0-39-generic
Found initrd image: /boot/initrd.img.3.19.0-39-generic
Found linux image: /boot/vmlinuz-3.19.0-37-generic
Found initrd image: /boot/initrd.img.3.19.0-37-generic
Found linux image: /boot/vmlinuz-3.19.0-33-generic
Found initrd image: /boot/initrd.img.3.19.0-33-generic
Found linux image: /boot/vmlinuz-3.19.0-32-generic
Found initrd image: /boot/initrd.img.3.19.0-32-generic
Found linux image: /boot/vmlinuz-3.19.0-31-generic
Found initrd image: /boot/initrd.img.3.19.0-31-generic
我重新启动并再次在同一点挂起“sudo apt-get upgrade”。
然后我尝试清理未使用的内核。我运行了:
uname -r
并得到:
3.19.0-39-generic
因此我删除了 3.19.0-31、3.19.0-32 和 3.19.0-33:
sudo rm /boot/initrd.img.3.19.0-31-generic
sudo rm /boot/initrd.img.3.19.0-32-generic
sudo rm /boot/initrd.img.3.19.0-33-generic
sudo rm /boot/vmlinuz-3.19.0-31-generic
sudo rm /boot/vmlinuz-3.19.0-32-generic
sudo rm /boot/vmlinuz-3.19.0-33-generic
然后,我尝试清除:
sudo apt-get purge linux-image-3.19.0-31-generic linux-image-3.19.0-32-generic linux-image-3.19.0-33-generic
但进程也挂了。
然后,我可以“更新”,但“升级”失败,如下所示:
Found linux image: /boot/vmlinuz-3.19.0-39-generic
Found initrd image: /boot/initrd.img.3.19.0-39-generic
Found linux image: /boot/vmlinuz-3.19.0-37-generic
Found initrd image: /boot/initrd.img.3.19.0-37-generic
在某些更新/升级中,它建议我运行dpkg --configure -a
但它也在上述同一点失败了。
另外,当我重新启动时,系统会卡在“点屏幕”上。我必须“关闭”虚拟机并重新启动才能进入。
经过多次重启后apt-get update
,我不知道该怎么办,但是apt-get upgrade
dpkg --configure -a
一切又恢复正常。
现在我再次遇到同样的问题:
当我运行时
apt-get update
,apt-get upgrade
我得到:E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
当我运行时
sudo dpkg --configure -a
它在以下之后挂起:Found linux image: /boot/vmlinuz-3.19.0-42-generic Found initrd image: /boot/initrd.img-3.19.0-42-generic Found linux image: /boot/vmlinuz-3.19.0-39-generic Found initrd image: /boot/initrd.img-3.19.0-39-generic
当我重新启动时,系统也会挂在“点屏幕”
我对 Linux 还不是很了解。有人能帮我解释一下吗?
答案1
暂时修复!
经过多次重启和多次尝试apt-get update
、apt-get upgrade
和apt-get dist-upgrade
之后dpkg --configure -a
,最后一个命令终于成功结束,其余命令也开始成功运行。
在此过程中更新至3.19.0-42-generic内核。
所以我不确定究竟是什么原因导致了它,也不确定究竟是什么解决了它,但无论如何...:)
答案2
看起来在某个时候你升级了内核但并没有完全升级,我需要通过运行以下命令来确保内核正确:
sudo apt-get dist-upgrade
然后更新升级:
sudo apt-get update && sudo apt-get upgrade
接下来,你可以运行以下命令检查所有包是否正确
sudo apt-get -f install
答案3
我遇到过两次类似的问题,而且我注意到每次我的系统想要升级到新内核时都会发生这种情况。以下步骤似乎对我始终有效;
- 启动到最新内核版本的恢复模式。
- 从下拉菜单中以 root 身份登录系统。
- 使用文本编辑器编辑 /etc/resolv.conf 文件,我通常使用 vi,即 vi /etc/resolv.conf 并输入以下内容并保存文件;
名称服务器 208.67.222.220
名称服务器 208.67.222.222
- 完成上述步骤后,按 Ctrl+D(退出)返回恢复模式菜单,然后单击网络以启用网络/互联网连接。
- 接下来点击 dpkg 项来修复损坏的软件包。
就是这样,重启后您的系统应该安装正确的内核并修复/删除损坏的软件包。
答案4
那只是为了解析IP地址映射而配置一个DNS服务器而已。
你甚至可以使用公共谷歌服务器
8.8.8.8 和 8.8.4.4