Linux

我怎樣才能修復apt / dpkg?

  • February 24, 2011

當我嘗試執行時,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(認為這是問題,但我沒有運氣)。

試試這個,

當你 gt 卡在那種情況下,使用 CTRL+Z 後台目前程序

那應該再次給您外殼。

然後執行 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 包

我首先會嘗試找出該過程正在嘗試做什麼以及為什麼它可能會卡在那裡。這很可能是一個與失去的文件列表有些無關的問題(您已經通過在頂部安裝完全相同版本的軟體包解決了這個問題;然後 dpkg 只會從新軟體包生成一個新文件列表)。

我認為您的文件系統可能有問題,例如目錄硬連結循環或其他使核心感到困惑的不一致;因此,在這種情況下,我的第一步是確認這一點(例如,通過檢查程序被阻止在哪個核心函式中),如果確實如此,則重新啟動並強制進行文件系統檢查。

引用自:https://serverfault.com/questions/237159