我该如何修复 apt / dpkg?

我该如何修复 apt / dpkg?

当我尝试运行时,Apt 不断崩溃

apt-get upgrade

xxx@xxx:/root/# sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  linux-generic linux-headers-generic linux-image-generic
The following packages will be upgraded:
  cvs dovecot-common dovecot-pop3d language-pack-en language-pack-en-base
  language-pack-gnome-en language-pack-gnome-en-base libgssapi-krb5-2
  libk5crypto3 libkrb5-3 libkrb5support0 libssl0.9.8 login openssl passwd
15 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
1 not fully installed or removed.
Need to get 0B/14.9MB of archives.
After this operation, 3,731kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Preconfiguring packages ...
(Reading database ...
dpkg: warning: files list file for package `cvs' missing, assuming package has no files currently installed.
(Reading database ... 141611 files and directories currently installed.)
Preparing to replace cvs 1:1.12.13-12ubuntu1 (using .../cvs_1%3a1.12.13-12ubuntu1_amd64.deb) ...
Unpacking replacement cvs ...

它只是挂在那里:(,CTRL + C没有任何反应,我已经杀死了dpkg驱动器,然后用apt

sudo killall -9 dpkg
sudo killall -9 apt-get

但 dpkg 仍在运行:(

我设法一次性终止所有进程并尝试删除 cvs(我认为那是问题所在但我没有运气)。

答案1

尝试这个,

当你陷入这种情况时,使用 CTRL+Z 在后台处理当前进程

这应该会再次给你 shell。

然后执行 pgrep dpkg | xargs kill -9# 终止所有匹配字符串 dpkg 的进程

pgrep apt-get | xargs kill -9# 终止所有匹配字符串 apt-get 的进程

dpkg --purge cvs# 删除当前安装的 cvs 包

apt-get update# 从你的 apt 存储库更新软件包列表

apt-get install cvs# 从更新的存储库安装 cvs 包

答案2

我首先会尝试找出该进程正在做什么以及为什么它会卡在那里。这很可能是一个与缺少文件列表无关的问题(您已经通过在上面安装完全相同版本的软件包解决了这个问题;然后 dpkg 只会从新软件包生成新的文件列表)。

我认为您的文件系统可能有问题,例如目录硬链接循环或其他不一致之处使内核感到困惑;因此,在这种情况下,我的第一步是确认这一点(例如,通过检查进程在哪个内核函数中被阻止),如果确实如此,则重新启动并强制进行文件系统检查。

答案3

我自己刚刚遇到了这个错误 - 它显然是已知的并且在这里积极地工作:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/624877

相关内容