当 Ubuntu 大版本升级时会有大量的包废弃或者大版本更新,此种操作会导致出现大量配置残留的包,仅剩下配置文件,而缺失可执行文件。
起
将系统升级后,很多包有跨版本升级(特别是内核),还有部分废弃的包,因此会出现很多配置文件残留的包。
$ sudo dpkg -l | grep "^rc"
rc linux-image-5.0.0-13-generic 5.0.0-13.14 amd64 Signed kernel image generic
rc linux-image-5.0.0-38-generic 5.0.0-38.41 amd64 Signed kernel image generic
rc linux-image-5.3.0-46-generic 5.3.0-46.38 amd64 Signed kernel image generic
rc linux-modules-5.0.0-38-generic 5.0.0-38.41 amd64 Linux kernel extra modules for version 5.0.0 on 64 bit x86 SMP
rc linux-modules-5.3.0-46-generic 5.3.0-46.38 amd64 Linux kernel extra modules for version 5.3.0 on 64 bit x86 SMP
rc linux-modules-extra-5.0.0-13-generic 5.0.0-13.14 amd64 Linux kernel extra modules for version 5.0.0 on 64 bit x86 SMP
rc linux-modules-extra-5.0.0-38-generic 5.0.0-38.41 amd64 Linux kernel extra modules for version 5.0.0 on 64 bit x86 SMP
rc linux-modules-extra-5.3.0-46-generic 5.3.0-46.38 amd64 Linux kernel extra modules for version 5.3.0 on 64 bit x86 SMP
rc ntp 1:4.2.8p12+dfsg-3ubuntu2 amd64 Network Time Protocol daemon and utility programs
结
移除全部破损的包
sudo apt remove --purge $(dpkg -l | grep "^iU" | awk '{print $2}')
移除全部残留的包
sudo apt remove --purge $(dpkg -l | grep "^rc" | awk '{print $2}')
增
使用 dpkg
命令时可以看到系统目前存在的全部包及其状态,例如 rc
等都是两个字母的缩写。
这前后的两个字母的含义分别是:
第一位 -> 预期状态
- u ... Unknown 未知
- i ... Install 已安装
- r ... Remove 已移除
- p ... Purge 已彻底清理
- h ... Hold 已冻结
第二位 -> 当前状态
- n ... Not-installed 未安装
- i ... Installed 已安装
- c ... Config-files 仅存配置文件
- U ... Unpacked 未成功安装
- F ... Half-configured 配置失败
- h ... Half-installed 安装失败
- W ... Triggers-awaiting 等待与其他包安置触发器
- t ... Triggers-pending 触发器挂起
第三位 -> 错误状态(默认不显示,以空格取代)
- R ... reinstall-required 损坏的包需要重新安装
以上的内容取自 man 手册,查看请使用
man dpkg-query
附上 dpkg -l
部分说明
The first three columns of the output show the desired action,
the package status, and errors, in that order.
Desired action:
u = Unknown
i = Install
h = Hold
r = Remove
p = Purge
Package status:
n = Not-installed
c = Config-files
H = Half-installed
U = Unpacked
F = Half-configured
W = Triggers-awaiting
t = Triggers-pending
i = Installed
Error flags:
<empty> = (none)
R = Reinst-required
An uppercase status or error letter indicates the package is
likely to cause severe problems. Please refer to dpkg(1) for
information about the above states and flags.
附录
参考链接
- 「How to remove all “rc” - residual packages using command line at once?」 - AskUbuntu
- 「What do the various dpkg flags like 'ii' 'rc' mean? 」 - AskUbuntu
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2023-09-17 02:31 AM