ubuntu dpkg -l 输出第一列解释

dpkg -l 的输出第一列实际上是 3 个字符的状态字段,不是单纯一个状态。

你这里:

复制代码
ii  docker-ce
rc  docker.io

分别是这 3 个位置:

复制代码
     ① ② ③
     ↓ ↓ ↓
    Want  Status  Error

完整含义是:

位置 名称 含义
第 1 个字符 Want 用户希望这个包处于什么状态
第 2 个字符 Status 当前包实际处于什么状态
第 3 个字符 Eflag 是否存在错误/异常标记

不过 dpkg -l 默认只显示比较常见的组合,所以你经常看到的是 ii、rc、un 等。


1. 第一位:Want ------ 用户期望状态

第一位一共有这些状态:

字符 含义
u Unknown,未知
i Install,用户希望安装
r Remove,用户希望卸载
p Purge,用户希望彻底清除配置
h Hold,保持当前版本/状态

例如:

复制代码
ii
^^
||
|+-- 当前状态
+--- 用户希望安装

2. 第二位:Status ------ 实际状态

第二位常见的状态:

字符 含义
n Not-installed,未安装
i Installed,已安装
c Config-files,只剩配置文件
u Unpacked,已解包但还没配置
f Failed-config,配置失败
h Half-installed,安装了一半
w Triggers-awaiting,等待触发器
t Triggers-pending,有触发器待处理

这里特别注意:

复制代码
rc

不是一个状态叫 rc,而是:

复制代码
r + c

即:

复制代码
r = 用户要求卸载
c = 当前只剩配置文件

所以:

复制代码
rc docker.io

就是:

docker.io 已经被卸载,但是配置文件状态还留在 dpkg 数据库里。


3. 第三位:Error flag

第三位通常是:

字符 含义
空格 没有错误
R Reinst-required,需要重新安装

所以正常情况下你看到:

复制代码
ii␠

第三个字符实际上是一个空格。

例如:

复制代码
ii  docker-ce

实际上可以理解为:

复制代码
i i " "
│ │ └── 无错误
│ └──── 已安装
└────── 用户希望安装

你的输出逐个解释

docker-ce

复制代码
ii  docker-ce

实际上:

复制代码
i i " "
│ │
│ └── Installed:已经安装
└──── Want=Install:用户希望它安装

所以:

正常安装状态。


docker.io

复制代码
rc  docker.io

实际上:

复制代码
r c " "
│ │
│ └── Config-files:软件已经卸载,只剩配置状态
└──── Want=Remove:用户希望卸载

所以:

软件已经没了,只剩 dpkg 的配置文件状态记录。

这就是你前面执行:

复制代码
dpkg -L docker.io

出现:

复制代码
Package 'docker.io' does not contain any files (!)

的原因。


如果看到 un

例如:

复制代码
un  xxx

意思是:

复制代码
u = Unknown
n = Not-installed

即:

dpkg 没有安装这个包。

实际上 dpkg -l 的输出里会包含大量这种状态。


最重要的一张表

你平时排查服务器时,记住这几个就够了:

dpkg -l 含义
ii 已安装,正常
rc 软件已卸载,但配置状态/配置文件残留
un 未安装
iU 已解包,但还没完成配置
iF 配置失败
h? 与 hold/半安装等状态有关,需要进一步看具体组合
?? 其他组合,查具体两位含义

另外,dpkg -l 的状态组合理论上不止这些,因为它是三个字段的组合,而每个字段都有多个取值。

你这台机器目前最关键的是:

复制代码
ii  cri-dockerd
ii  docker-ce
ii  docker-ce-cli
rc  docker.io
ii  nvidia-docker2

也就是说,真正安装着 Docker 的是 docker-ce,不是 docker.io;docker.io 只是一个残留的 rc 条目。

相关推荐
北风toto23 分钟前
Linux 服务器如何判断 CPU 是否支持 x86-64-v2 指令集
java·linux·服务器
程序员-Benothing26 分钟前
Linux抓包分析教程:tcpdump、Wireshark、tshark实战
linux·运维·服务器
QMCY_jason27 分钟前
ubuntu x86_64架构的编译 aarch64架构的程序
linux·运维·ubuntu
分布式存储与RustFS29 分钟前
RustFS 该跟 stable 还是 nightly?两条版本线的分工、风险与回退,一张表说清
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
拂拉氏42 分钟前
【知识讲解】 Linux进程间通信之管道与共享内存
linux·进程间通信
其实防守也摸鱼43 分钟前
Linux文本处理命令理论学习
linux·服务器·前端·数据库·sql·学习·安全
无足鸟ICT1 小时前
【RHCA+】rpm命令(安装、升级、卸载和查询)
linux·运维·服务器
吹什么轩1 小时前
linux系统复习:从冯·诺依曼到操作系统:一切的开场
linux·运维·服务器
程序员-Benothing1 小时前
SSH从入门到精通:密钥登录、config配置、跳板机
linux·运维·服务器·ssh
Elastic 中国社区官方博客1 小时前
Jina AI:Elasticsearch 集成
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·jina