Linux(CentOS)系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理
Linux系统管理入门系列更多文章欢迎访问:
Linux入门——系统管理1、Linux入门——系统管理2
我的主页:AOwhisky,这里有更多运维系统性知识整理和其他有趣内容,欢迎与我一起探讨学习~
引言:从“黑框框”到“仪表盘”——Linux 管理的两条路
前十一期,我们一直在终端里摸爬滚打——敲命令、看输出、翻日志。这是 Linux 管理的基本功,也是“硬核”的必经之路。但有一个问题始终存在:有没有更直观的方式来管理服务器?
想象一下,你是一架飞机的机长。你面前有密密麻麻的仪表盘(命令行),每一个旋钮和开关都对应一个精确的功能。熟练之后,你可以在几秒钟内完成复杂操作。但如果你只是想快速看一眼“飞行高度”“油量”“发动机温度”呢?这时候,一块综合仪表盘(Web 管理界面) 就派上了用场——它把关键信息可视化,让你一目了然。
Cockpit 正是 Linux 服务器的“综合仪表盘”——一个轻量级的 Web 管理工具。通过浏览器就能查看系统状态、管理服务、监控日志、操作容器和虚拟机,甚至管理 Kubernetes 集群。
但“仪表盘”只能帮你“看”和“点”,真正要理解系统的底层运作,还得回到命令行。本期另一个核心主题是 RPM 软件包管理——Linux 生态中软件安装、更新、卸载的底层机制。你将学会如何查询、验证、提取 RPM 包,理解“软件包”这个概念的来龙去脉。
本期分为两大模块:
- Cockpit:部署、登录与各项管理功能
- RPM 包管理:包名解析、查询验证、安装卸载与文件提取
读完这一期,你将掌握两种管理风格:“仪表盘”式的 Web 可视化管理 + 底层“手术刀”式的 RPM 包操作。
— Compiled and Authored by Whisky — July 25
th, 2026
目录
- 1.1 部署与启动
- 1.2 Web 控制台功能介绍
- 1.3 Cockpit 扩展包
- 2.1 Linux 发行版与包管理体系
- 2.2 RPM 包文件名格式解析
- 2.3 RPM 包组成与数字签名
- 2.4 rpm 命令:查询(重点)
- 2.5 rpm 命令:验证
- 2.6 rpm 命令:安装与卸载
- 2.7 提取 RPM 包中的文件
1. Cockpit:Linux 的 Web 管理仪表盘
1.1 Cockpit 是什么?
Cockpit 是 Red Hat 主导开发的开源项目,通过 Web 浏览器为 Linux 服务器提供图形化管理界面。它轻量、安全、易于部署,是系统管理员快速“看一眼”服务器状态的首选工具。
核心优势:
- 开箱即用:无需额外配置,安装后即可通过 https://hostname:9090 访问
- 轻量级:对系统资源消耗极小
- 安全:使用系统账户密码认证,支持 HTTPS 加密
- 可扩展:通过插件支持 Docker、Kubernetes、KVM 虚拟机等管理
1.2 部署 Cockpit
# 1. 安装 Cockpit
[root@centos7 ~]# yum -y install cockpit
# 2. 启用并启动服务(–now 表示立即启动并设置开机自启)
[root@centos7 ~]# systemctl enable cockpit.socket –now
# 3. 配置防火墙放行 Cockpit 服务(默认端口 9090)
[root@centos7 ~]# firewall-cmd –add-service=cockpit
success
[root@centos7 ~]# firewall-cmd –add-service=cockpit –permanent
success
1.3 登录 Cockpit
打开浏览器访问:https://<服务器IP或域名>:9090
| 用户名 | 操作系统中的系统账户(root 或普通用户) |
| 密码 | 该账户的系统密码 |
| 注意 | 首次访问会提示证书不受信任,选择“继续访问”即可 |
💡 安全提示:生产环境中,建议使用有效的 SSL 证书替换自签名证书。
1.4 Web 控制台功能概览
Cockpit 的主界面按功能模块划分,以下是最核心的几大板块:
| 系统概览 | 查看 CPU、内存、磁盘、网络实时使用情况;设置主机名、系统时间、性能配置集 | 日常巡检 |
| 日志 | 按严重级别(错误/警告/信息)检索系统日志,支持关键词过滤 | 故障排查 |
| 存储 | 查看磁盘分区、文件系统使用率;创建/删除分区;管理 LVM 和 RAID | 存储管理 |
| 网络 | 监控收发带宽;配置防火墙规则;管理网络接口(IP、DNS、路由) | 网络配置 |
| 账户 | 创建、修改、删除本地用户账户;管理用户组 | 用户管理 |
| 服务 | 管理系统服务(systemd 单元:服务、套接字、计时器等);启动/停止/启用/禁用 | 服务管理 |
| 终端 | 在浏览器中直接打开 Shell 终端 | 快速执行命令 |
| 诊断报告 | 生成系统诊断报告(含硬件、内核、服务等详细信息) | 问题定位 |
| 内核转储 | 配置内核崩溃时的内存转储(kdump) | 内核调试 |
1.5 扩展 Cockpit 功能
Cockpit 支持通过安装扩展包来增强功能。查看可用扩展包:
[root@centos7 ~]# yum list cockpit-*
| cockpit-dashboard | 多服务器统一仪表盘,集中管理多台主机 |
| cockpit-docker | Docker 容器管理(界面化查看/启动/停止容器) |
| cockpit-kubernetes | Kubernetes 集群管理 |
| cockpit-machines | KVM 虚拟机管理(创建/启动/停止/克隆 VM) |
| cockpit-packagekit | 软件包管理(yum/dnf 图形化界面) |
| cockpit-storaged | 高级存储管理(LVM、RAID、iSCSI) |
| cockpit-composer | 容器镜像构建(类似 buildah) |
| cockpit-doc | Cockpit 官方文档(本地访问) |
# 一键安装常用扩展包
[root@centos7 ~]# yum install cockpit-dashboard cockpit-docker \\
cockpit-kubernetes cockpit-machines cockpit-packagekit cockpit-storaged
安装完成后,注销重新登录即可在左侧菜单栏看到新增功能模块。
1.6 Cockpit 的使用场景与定位
| 日常快速巡检 | ✅ 是 | 可视化查看 CPU/内存/磁盘状态,比命令行更直观 |
| 初学者学习 Linux | ✅ 是 | 降低入门门槛,结合终端命令对照学习 |
| 生产环境紧急故障排查 | ⚠️ 辅助 | 可用 Cockpit 快速定位问题,但最终修复仍需命令行 |
| 自动化运维脚本 | ❌ 否 | Cockpit 是交互式工具,自动化应使用 CLI 命令 |
| 大规模集群管理 | ✅ 配合 Dashboard | 通过 cockpit-dashboard 统一管理多台主机 |
2. RPM 包管理:Linux 软件安装的基石
2.1 Linux 发行版与包管理体系
Linux 发行版主要分为两大包管理流派:
| RPM 系 | .rpm | rpm、yum、dnf | RHEL、CentOS、Fedora、Rocky、AlmaLinux、OpenSUSE |
| DEB 系 | .deb | dpkg、apt、apt-get | Debian、Ubuntu、Kali Linux |
| 其他 | 源码/自定义 | pacman、emerge | Arch Linux、Gentoo |
RPM(Red Hat Package Manager)是红帽系发行版的核心包管理工具。CentOS 提供的所有软件都以 .rpm 格式打包。
2.2 RPM 包文件名格式
RPM 软件包的文件名遵循标准格式:
name-version-release.architecture.rpm
实战解析:
# 示例:lrzsz-0.12.20-36.el7.x86_64.rpm
| name | lrzsz | 软件名称(描述内容的一个或多个词语) |
| version | 0.12.20 | 原始软件的版本号(由上游开发者定义) |
| release | 36.el7 | 发行版号(由打包商设置,表示该软件包的第几次构建,.el7 表示面向 CentOS 7) |
| architecture | x86_64 | 编译运行的处理器架构 |
常见架构标识:
| x86_64 | 64 位 x86 架构(Intel/AMD) |
| aarch64 | 64 位 ARM 架构 |
| noarch | 不限定架构(如脚本、配置文件) |
| i686 | 32 位 x86 架构 |
2.3 RPM 包的组成
每个 RPM 包包含三个核心部分:
| 文件清单 | 软件包安装时需要释放到系统的所有文件 |
| 元数据 | 包名、版本、架构、依赖关系、许可证、变更日志、描述信息等 |
| 脚本 | 安装前(pre)、安装后(post)、卸载前(preun)、卸载后(postun)需要执行的脚本 |
数字签名与 GPG:
软件提供商使用 GPG 私钥对 RPM 包进行数字签名,客户端使用对应的 GPG 公钥验证签名,确保包的完整性(未被篡改)和来源可信。
# 查看 CentOS 的 GPG 公钥
[root@centos7 ~]# rpm -q gpg-pubkey –qf '%{name}-%{version}-%{release}\\n'
gpg-pubkey-f4a80eb5-53a7ff4b
非对称加密复习:
| 私钥 | 软件提供商(如 Red Hat) | 对 RPM 包进行签名 |
| 公钥 | 客户端系统 | 验证 RPM 包签名是否有效 |
2.4 rpm 命令:查询(重点)
rpm -q(query)是日常最常用的操作,用于查询软件包信息。其基本语法:
rpm {-q|–query} [select-options] [query-options]
选择选项(select-options):定位要查哪个包
| -a | 查询所有已安装的包 | rpm -qa |
| -f FILE | 查询某个文件属于哪个包 | rpm -qf /etc/passwd |
| -p PACKAGE_FILE | 查询一个未安装的 .rpm 文件 | rpm -qpi package.rpm |
| -g GROUP | 查询某个包组中的所有包 | rpm -qg 'System Environment/Base' |
查询选项(query-options):显示什么信息
| -i | 显示包的详细信息(Name、Version、Description 等) | rpm -qi coreutils |
| -l | 列出包安装的所有文件 | rpm -ql openssh-server |
| -c | 仅列出配置文件 | rpm -qc openssh-server |
| -d | 仅列出文档文件 | rpm -qd openssh-server |
| –scripts | 显示包安装/卸载时的脚本 | rpm -q –scripts openssh-server |
| –changelog | 显示包的变更日志 | rpm -q –changelog openssh-server |
| -R | 显示包的依赖关系 | rpm -qR httpd |
实战示例
# 1. 查询系统中是否安装了 httpd
[root@centos7 ~]# rpm -q httpd
未安装软件包 httpd
# 2. 查询系统中所有已安装的包(数量通常几百到几千)
[root@centos7 ~]# rpm -qa | head -10
libgcc-4.8.5-44.el7.x86_64
setup-2.8.71-11.el7.noarch
...
# 3. 查询某个已安装包的详细信息
[root@centos7 ~]# rpm -qi coreutils
Name : coreutils
Version : 8.22
Release : 24.el7_9.2
Architecture: x86_64
Install Date: 2025年07月18日 星期五 10时29分40秒
Group : System Environment/Base
Size : 14594210
License : GPLv3+
Summary : A set of basic GNU tools commonly used in shell scripts
Description :
These are the GNU core utilities...
# 4. 查询某个包安装了哪些文件
[root@centos7 ~]# rpm -ql openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd.service
/usr/sbin/sshd
...
# 5. 查询某个文件属于哪个包
[root@centos7 ~]# rpm -qf /etc/ssh/sshd_config
openssh-server-7.4p1-22.el7_9.x86_64
# 6. 查询未安装的 RPM 包文件信息
[root@centos7 ~]# rpm -qpi httpd-2.4.6-99.el7.centos.1.x86_64.rpm
Name : httpd
Version : 2.4.6
Release : 99.el7.centos.1
Architecture: x86_64
...
# 7. 查询未安装的 RPM 包包含哪些配置文件
[root@centos7 ~]# rpm -qpc httpd-2.4.6-99.el7.centos.1.x86_64.rpm
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf/httpd.conf
...
# 8. 查询包的安装/卸载脚本
[root@centos7 ~]# rpm -q –scripts openssh-server
preinstall scriptlet (using /bin/sh):
...
postinstall scriptlet (using /bin/sh):
...
2.5 rpm 命令:验证
rpm -V(verify)用于校验已安装软件包的文件是否被修改。
rpm {-V|–verify} [select-options] [verify-options]
验证结果格式:如果文件未被修改,无输出;如果被修改,输出一行状态码:
S.5….T. c /etc/ssh/sshd_config
| S | 文件大小(Size)改变 |
| M | 文件权限(Mode)改变 |
| 5 | MD5 校验和改变(内容改变) |
| D | 设备号改变 |
| L | 符号链接路径改变 |
| U | 文件所有者(User)改变 |
| G | 文件所属组(Group)改变 |
| T | 文件修改时间(mTime)改变 |
| c | 该文件是配置文件(config file) |
| d | 该文件是文档文件(doc file) |
实战示例:
# 1. 验证 openssh-server 包(默认无输出表示一切正常)
[root@centos7 ~]# rpm -V openssh-server
# 2. 修改 sshd_config 配置文件后再次验证
[root@centos7 ~]# sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
[root@centos7 ~]# rpm -V openssh-server
S.5....T. c /etc/ssh/sshd_config
# S:大小改变,5:内容改变,T:时间改变,c:配置文件
# 3. 移走配置文件后验证
[root@centos7 ~]# mv /etc/ssh/sshd_config /tmp/
[root@centos7 ~]# rpm -V openssh-server
缺失 c /etc/ssh/sshd_config
# “缺失”表示该文件已被删除
# 4. 恢复文件
[root@centos7 ~]# mv /tmp/sshd_config /etc/ssh/
[root@centos7 ~]# rpm -V openssh-server
# 无输出,验证通过
2.6 rpm 命令:安装与卸载
安装(-i)
rpm {-i|–install} [install-options] PACKAGE_FILE ...
| -v | 显示详细过程(verbose) |
| -h | 显示进度条(hash) |
| –nodeps | 忽略依赖关系(不推荐) |
| –force | 强制安装(覆盖冲突文件) |
# 下载一个 RPM 包
[root@centos7 ~]# wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
# 友好方式安装(-ivh 是最常用组合)
[root@centos7 ~]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:lrzsz-0.12.20-36.el7 ################################# [100%]
# 验证安装
[root@centos7 ~]# rpm -q lrzsz
lrzsz-0.12.20-36.el7.x86_64
依赖问题示例
# 尝试安装 httpd 但缺少依赖会报错
[root@centos7 ~]# rpm -ivh httpd-2.4.6-99.el7.centos.1.x86_64.rpm
错误:依赖检测失败:
/etc/mime.types 被 httpd-... 需要
httpd-tools = 2.4.6-99.el7.centos.1 被 httpd-... 需要
libapr-1.so.0()(64bit) 被 httpd-... 需要
...
这就是为什么实际工作中更常使用 yum——它会自动解决依赖关系(下一期详细讲解)。
卸载(-e)
# 卸载软件包(-e = erase)
[root@centos7 ~]# rpm -e lrzsz
[root@centos7 ~]# rpm -q lrzsz
未安装软件包 lrzsz
⚠️ 注意:rpm -e 不会检查依赖关系(除非使用 –nodeps),卸载时需谨慎。推荐使用 yum remove。
重新安装(–reinstall)
[root@centos7 ~]# rpm –reinstall -vh lrzsz-0.12.20-36.el7.x86_64.rpm
2.7 提取 RPM 包中的文件
有时我们需要从 RPM 包中提取某个文件(如配置文件模板、二进制工具),而不进行完整安装。
方法一:分步提取
# 1. 将 RPM 包转换为 cpio 归档格式
[root@centos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm > httpd.cpio
# 2. 查看 cpio 中包含哪些文件
[root@centos7 ~]# cpio -t < httpd.cpio | head -10
./etc/httpd
./etc/httpd/conf
./etc/httpd/conf.d
./etc/httpd/conf.d/README
./etc/httpd/conf.d/autoindex.conf
...
# 3. 提取所有文件(-id:extract + create directories)
[root@centos7 ~]# cpio -id '*' < httpd.cpio
# 文件被提取到当前目录下的 ./etc、./usr 等目录中
# 4. 提取特定文件(如 httpd.conf)
[root@centos7 ~]# cpio -id ./etc/httpd/conf/httpd.conf < httpd.cpio
[root@centos7 ~]# cat ./etc/httpd/conf/httpd.conf
# 配置文件内容…
方法二:一行命令一步到位
[root@centos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm | cpio -id '*'
3. 总结与速查手册
3.1 核心知识点一览
| Cockpit | Web 管理工具,端口 9090,systemctl enable cockpit.socket –now |
| RPM 包名格式 | name-version-release.architecture.rpm |
| RPM 组成 | 文件 + 元数据 + 脚本,GPG 数字签名保证完整性 |
| rpm -q | 查询已安装包:-qi(信息)、-ql(文件列表)、-qf(文件归属) |
| rpm -V | 验证文件完整性:输出状态码表示修改类型 |
| rpm -ivh | 安装 RPM 包(含进度条) |
| rpm -e | 卸载 RPM 包 |
| rpm2cpio | 提取 RPM 包中的文件(不安装) |
3.2 rpm 查询命令速查表
| 查询所有已安装包 | rpm -qa |
| 查询包是否安装 | rpm -q 包名 |
| 查看包详细信息 | rpm -qi 包名 |
| 列出包安装的所有文件 | rpm -ql 包名 |
| 列出包的配置文件 | rpm -qc 包名 |
| 列出包的文档文件 | rpm -qd 包名 |
| 查看包安装/卸载脚本 | rpm -q –scripts 包名 |
| 查看包变更日志 | rpm -q –changelog 包名 |
| 查询文件属于哪个包 | rpm -qf /path/to/file |
| 查询未安装的 RPM 文件 | rpm -qpi file.rpm |
| 查询未安装包的配置文件 | rpm -qpc file.rpm |
3.3 rpm 验证输出状态码
| S | 文件大小改变 |
| M | 权限改变 |
| 5 | MD5 校验和改变(内容改变) |
| D | 设备号改变 |
| L | 符号链接路径改变 |
| U | 所有者改变 |
| G | 所属组改变 |
| T | 修改时间改变 |
3.4 常见错误排查
| 未安装软件包 | 包未安装 | 用 yum install 安装 |
| 依赖检测失败 | 缺少依赖包 | 用 yum 安装(自动解决依赖) |
| file conflicts | 文件冲突 | 使用 –force 或先卸载冲突包 |
| GPG 签名验证失败 | 缺少 GPG 公钥或包被篡改 | 导入对应的 GPG 公钥 |
| cpio: premature end of archive | RPM 文件损坏 | 重新下载 RPM 包 |
3.5 思考与拓展(原课后作业转化)
3.6 生产环境最佳实践
| 日常包查询 | 使用 rpm -qi 查看包信息,rpm -ql 查看文件归属 |
| 验证包完整性 | 定期执行 rpm -Va 检查所有包的文件是否被篡改(适合安全审计) |
| 安装新包 | 优先使用 yum 而非 rpm -ivh,自动解决依赖 |
| 提取配置文件模板 | 用 rpm2cpio 从 RPM 包中提取文件,而不安装完整包 |
| Cockpit 管理 | 日常巡检使用 Cockpit,深度管理回到命令行 |
| 生产环境安全 | Cockpit 建议配置有效的 SSL 证书,并限制访问 IP |
下期预告:本期我们了解了 RPM 包的基本操作,但 rpm 命令最大的痛点是——无法自动解决依赖关系。安装一个软件需要手动下载十几个依赖包,这在生产环境中几乎不可行。下一期我们将深入学习 YUM 软件包管理——它会自动分析依赖、从软件仓库中下载所需包、一键安装。此外,我们还将学习 源码编译安装(如 Nginx 从源码编译)和 自建 YUM 仓库,让你彻底掌握 Linux 软件管理的全貌。敬请期待第十三期!
— Compiled and Authored by Whisky — July 25
th, 2026





