在我的 Elementary OS 系统上,dpkg 报告许多未安装的内核软件包。 (我之前对它们进行了 apt-get purge。)我想让它们完全被遗忘,但我不知道如何以这种方式得到它们。
例如:
elementary:~$ dpkg -l linux-*-3.2.0-51*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-====================================-====================================-========================================================================================
un linux-headers-3.2.0-51 <none> (no description available)
un linux-headers-3.2.0-51-generic <none> (no description available)
un linux-image-3.2.0-51-generic <none> (no description available)
apt-get purge 不起作用:
elementary:~$ sudo apt-get purge linux-headers-3.2.0-51
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package linux-headers-3.2.0-51 is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
dpkg 不起作用:
elementary:~$ sudo dpkg --purge linux-headers-3.2.0-51
dpkg: warning: there's no installed package matching linux-headers-3.2.0-51
elementary:~$ sudo dpkg --forget-old-unavail
dpkg: warning: obsolete '--forget-old-unavail' option, unavailable packages are automatically cleaned up.
apt-cache 显示:
elementary:~$ apt-cache policy linux-headers-3.2.0-51
linux-headers-3.2.0-51:
Installed: (none)
Candidate: 3.2.0-51.77
Version table:
3.2.0-51.77 0
500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
aptitude 未安装。
显然,有些事情我不明白。为什么 dpkg -l 显示已清除的软件包?我该如何让 dpkg 忘记它们?
答案1
根据您的apt-cache policy
输出,它们仍然在存档中(也称为可用),因此 dpkg 不会忘记它们。所以简短的回答是没有办法消除该记录。
长答案是你可以编辑/var/lib/dpkg/status
(它是一个纯文本文件)来做到这一点。请务必保留备份。破坏这个文件并不是一件好事,糟糕程度接近“你考虑过重新安装吗?”
答案2
您可以使用dpkg --clear-avail
dpkgs 删除可用包列表。