系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理)
LinuxCentOS系统管理入门笔记第十二期——系统管理工具与软件包管理上篇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目录CockpitLinux 的 Web 管理仪表盘1.1 部署与启动1.2 Web 控制台功能介绍1.3 Cockpit 扩展包RPM 包管理Linux 软件安装的基石2.1 Linux 发行版与包管理体系2.2 RPM 包文件名格式解析2.3 RPM 包组成与数字签名2.4 rpm 命令查询重点2.5 rpm 命令验证2.6 rpm 命令安装与卸载2.7 提取 RPM 包中的文件总结与速查手册1. CockpitLinux 的 Web 管理仪表盘1.1 Cockpit 是什么Cockpit是 Red Hat 主导开发的开源项目通过 Web 浏览器为 Linux 服务器提供图形化管理界面。它轻量、安全、易于部署是系统管理员快速“看一眼”服务器状态的首选工具。核心优势开箱即用无需额外配置安装后即可通过https://hostname:9090访问轻量级对系统资源消耗极小安全使用系统账户密码认证支持 HTTPS 加密可扩展通过插件支持 Docker、Kubernetes、KVM 虚拟机等管理1.2 部署 Cockpit# 1. 安装 Cockpit[rootcentos7 ~]# yum -y install cockpit# 2. 启用并启动服务--now 表示立即启动并设置开机自启[rootcentos7 ~]# systemctl enable cockpit.socket --now# 3. 配置防火墙放行 Cockpit 服务默认端口 9090[rootcentos7 ~]# firewall-cmd --add-servicecockpitsuccess[rootcentos7 ~]# firewall-cmd --add-servicecockpit --permanentsuccess1.3 登录 Cockpit打开浏览器访问https://服务器IP或域名:9090登录要素说明用户名操作系统中的系统账户root 或普通用户密码该账户的系统密码注意首次访问会提示证书不受信任选择“继续访问”即可安全提示生产环境中建议使用有效的 SSL 证书替换自签名证书。1.4 Web 控制台功能概览Cockpit 的主界面按功能模块划分以下是最核心的几大板块功能模块核心能力适用场景系统概览查看 CPU、内存、磁盘、网络实时使用情况设置主机名、系统时间、性能配置集日常巡检日志按严重级别错误/警告/信息检索系统日志支持关键词过滤故障排查存储查看磁盘分区、文件系统使用率创建/删除分区管理 LVM 和 RAID存储管理网络监控收发带宽配置防火墙规则管理网络接口IP、DNS、路由网络配置账户创建、修改、删除本地用户账户管理用户组用户管理服务管理系统服务systemd 单元服务、套接字、计时器等启动/停止/启用/禁用服务管理终端在浏览器中直接打开 Shell 终端快速执行命令诊断报告生成系统诊断报告含硬件、内核、服务等详细信息问题定位内核转储配置内核崩溃时的内存转储kdump内核调试1.5 扩展 Cockpit 功能Cockpit 支持通过安装扩展包来增强功能。查看可用扩展包[rootcentos7 ~]# yum list cockpit-*扩展包功能cockpit-dashboard多服务器统一仪表盘集中管理多台主机cockpit-dockerDocker 容器管理界面化查看/启动/停止容器cockpit-kubernetesKubernetes 集群管理cockpit-machinesKVM 虚拟机管理创建/启动/停止/克隆 VMcockpit-packagekit软件包管理yum/dnf 图形化界面cockpit-storaged高级存储管理LVM、RAID、iSCSIcockpit-composer容器镜像构建类似 buildahcockpit-docCockpit 官方文档本地访问# 一键安装常用扩展包[rootcentos7 ~]# yum install cockpit-dashboard cockpit-docker \cockpit-kubernetes cockpit-machines cockpit-packagekit cockpit-storaged安装完成后注销重新登录即可在左侧菜单栏看到新增功能模块。1.6 Cockpit 的使用场景与定位场景推荐使用 Cockpit说明日常快速巡检✅ 是可视化查看 CPU/内存/磁盘状态比命令行更直观初学者学习 Linux✅ 是降低入门门槛结合终端命令对照学习生产环境紧急故障排查⚠️ 辅助可用 Cockpit 快速定位问题但最终修复仍需命令行自动化运维脚本❌ 否Cockpit 是交互式工具自动化应使用 CLI 命令大规模集群管理✅ 配合 Dashboard通过 cockpit-dashboard 统一管理多台主机2. RPM 包管理Linux 软件安装的基石2.1 Linux 发行版与包管理体系Linux 发行版主要分为两大包管理流派流派包格式包管理命令代表发行版RPM 系.rpmrpm、yum、dnfRHEL、CentOS、Fedora、Rocky、AlmaLinux、OpenSUSEDEB 系.debdpkg、apt、apt-getDebian、Ubuntu、Kali Linux其他源码/自定义pacman、emergeArch Linux、GentooRPMRed Hat Package Manager是红帽系发行版的核心包管理工具。CentOS 提供的所有软件都以.rpm格式打包。2.2 RPM 包文件名格式RPM 软件包的文件名遵循标准格式name-version-release.architecture.rpm实战解析# 示例lrzsz-0.12.20-36.el7.x86_64.rpm部分值含义namelrzsz软件名称描述内容的一个或多个词语version0.12.20原始软件的版本号由上游开发者定义release36.el7发行版号由打包商设置表示该软件包的第几次构建.el7表示面向 CentOS 7architecturex86_64编译运行的处理器架构常见架构标识架构含义x86_6464 位 x86 架构Intel/AMDaarch6464 位 ARM 架构noarch不限定架构如脚本、配置文件i68632 位 x86 架构2.3 RPM 包的组成每个 RPM 包包含三个核心部分组成部分说明文件清单软件包安装时需要释放到系统的所有文件元数据包名、版本、架构、依赖关系、许可证、变更日志、描述信息等脚本安装前pre、安装后post、卸载前preun、卸载后postun需要执行的脚本数字签名与 GPG软件提供商使用 GPG 私钥对 RPM 包进行数字签名客户端使用对应的 GPG 公钥验证签名确保包的完整性未被篡改和来源可信。# 查看 CentOS 的 GPG 公钥[rootcentos7 ~]# rpm -q gpg-pubkey --qf %{name}-%{version}-%{release}\ngpg-pubkey-f4a80eb5-53a7ff4b非对称加密复习密钥类型持有者用途私钥软件提供商如 Red Hat对 RPM 包进行签名公钥客户端系统验证 RPM 包签名是否有效2.4 rpm 命令查询重点rpm -qquery是日常最常用的操作用于查询软件包信息。其基本语法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[rootcentos7 ~]# rpm -q httpd未安装软件包 httpd# 2. 查询系统中所有已安装的包数量通常几百到几千[rootcentos7 ~]# rpm -qa | head -10libgcc-4.8.5-44.el7.x86_64 setup-2.8.71-11.el7.noarch...# 3. 查询某个已安装包的详细信息[rootcentos7 ~]# rpm -qi coreutilsName:coreutils Version:8.22Release:24.el7_9.2 Architecture: x86_64 Install Date:2025年07月18日 星期五10时29分40秒 Group:System Environment/Base Size:14594210License:GPLv3 Summary:Asetof basic GNU tools commonly usedinshell scripts Description:These are the GNU core utilities...# 4. 查询某个包安装了哪些文件[rootcentos7 ~]# 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. 查询某个文件属于哪个包[rootcentos7 ~]# rpm -qf /etc/ssh/sshd_configopenssh-server-7.4p1-22.el7_9.x86_64# 6. 查询未安装的 RPM 包文件信息[rootcentos7 ~]# rpm -qpi httpd-2.4.6-99.el7.centos.1.x86_64.rpmName:httpd Version:2.4.6 Release:99.el7.centos.1 Architecture: x86_64...# 7. 查询未安装的 RPM 包包含哪些配置文件[rootcentos7 ~]# 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. 查询包的安装/卸载脚本[rootcentos7 ~]# rpm -q --scripts openssh-serverpreinstall scriptlet(using /bin/sh):... postinstall scriptlet(using /bin/sh):...2.5 rpm 命令验证rpm -Vverify用于校验已安装软件包的文件是否被修改。rpm{-V|--verify}[select-options][verify-options]验证结果格式如果文件未被修改无输出如果被修改输出一行状态码S.5....T. c /etc/ssh/sshd_config状态码含义S文件大小Size改变M文件权限Mode改变5MD5 校验和改变内容改变D设备号改变L符号链接路径改变U文件所有者User改变G文件所属组Group改变T文件修改时间mTime改变c该文件是配置文件config filed该文件是文档文件doc file实战示例# 1. 验证 openssh-server 包默认无输出表示一切正常[rootcentos7 ~]# rpm -V openssh-server# 2. 修改 sshd_config 配置文件后再次验证[rootcentos7 ~]# sed -i s/PermitRootLogin yes/PermitRootLogin no/g /etc/ssh/sshd_config[rootcentos7 ~]# rpm -V openssh-serverS.5....T. c /etc/ssh/sshd_config# S大小改变5内容改变T时间改变c配置文件# 3. 移走配置文件后验证[rootcentos7 ~]# mv /etc/ssh/sshd_config /tmp/[rootcentos7 ~]# rpm -V openssh-server缺失 c /etc/ssh/sshd_config# “缺失”表示该文件已被删除# 4. 恢复文件[rootcentos7 ~]# mv /tmp/sshd_config /etc/ssh/[rootcentos7 ~]# rpm -V openssh-server# 无输出验证通过2.6 rpm 命令安装与卸载安装-irpm{-i|--install}[install-options]PACKAGE_FILE...常用选项作用-v显示详细过程verbose-h显示进度条hash--nodeps忽略依赖关系不推荐--force强制安装覆盖冲突文件# 下载一个 RPM 包[rootcentos7 ~]# wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm# 友好方式安装-ivh 是最常用组合[rootcentos7 ~]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpmVerifying...################################# [100%]准备中...################################# [100%]正在升级/安装...1:lrzsz-0.12.20-36.el7################################# [100%]# 验证安装[rootcentos7 ~]# rpm -q lrzszlrzsz-0.12.20-36.el7.x86_64依赖问题示例# 尝试安装 httpd 但缺少依赖会报错[rootcentos7 ~]# rpm -ivh httpd-2.4.6-99.el7.centos.1.x86_64.rpm错误依赖检测失败 /etc/mime.types 被 httpd-... 需要 httpd-tools2.4.6-99.el7.centos.1 被 httpd-... 需要 libapr-1.so.0()(64bit)被 httpd-... 需要...这就是为什么实际工作中更常使用yum——它会自动解决依赖关系下一期详细讲解。卸载-e# 卸载软件包-e erase[rootcentos7 ~]# rpm -e lrzsz[rootcentos7 ~]# rpm -q lrzsz未安装软件包 lrzsz⚠️注意rpm -e不会检查依赖关系除非使用--nodeps卸载时需谨慎。推荐使用yum remove。重新安装--reinstall[rootcentos7 ~]# rpm --reinstall -vh lrzsz-0.12.20-36.el7.x86_64.rpm2.7 提取 RPM 包中的文件有时我们需要从 RPM 包中提取某个文件如配置文件模板、二进制工具而不进行完整安装。方法一分步提取# 1. 将 RPM 包转换为 cpio 归档格式[rootcentos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm httpd.cpio# 2. 查看 cpio 中包含哪些文件[rootcentos7 ~]# 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. 提取所有文件-idextract create directories[rootcentos7 ~]# cpio -id * httpd.cpio# 文件被提取到当前目录下的 ./etc、./usr 等目录中# 4. 提取特定文件如 httpd.conf[rootcentos7 ~]# cpio -id ./etc/httpd/conf/httpd.conf httpd.cpio[rootcentos7 ~]# cat ./etc/httpd/conf/httpd.conf# 配置文件内容...方法二一行命令一步到位[rootcentos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm | cpio -id *3. 总结与速查手册3.1 核心知识点一览主题关键点CockpitWeb 管理工具端口 9090systemctl enable cockpit.socket --nowRPM 包名格式name-version-release.architecture.rpmRPM 组成文件 元数据 脚本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.rpm3.3 rpm 验证输出状态码状态码含义S文件大小改变M权限改变5MD5 校验和改变内容改变D设备号改变L符号链接路径改变U所有者改变G所属组改变T修改时间改变3.4 常见错误排查错误信息原因解决方案未安装软件包包未安装用yum install安装依赖检测失败缺少依赖包用yum安装自动解决依赖file conflicts文件冲突使用--force或先卸载冲突包GPG 签名验证失败缺少 GPG 公钥或包被篡改导入对应的 GPG 公钥cpio: premature end of archiveRPM 文件损坏重新下载 RPM 包3.5 思考与拓展原课后作业转化rpm -qa | wc -l的作用是什么→ 统计系统中已安装的 RPM 包数量。通常在 CentOS 7 最小安装中约有 150-200 个包完整安装可达 1000。为什么 RPM 包需要 GPG 签名→ 确保包的完整性和来源可信。防止软件包在传输过程中被篡改或安装恶意伪造的软件包。rpm -ql和rpm -qc的区别是什么→-ql列出包安装的所有文件-qc只列出配置文件如/etc/下的 .conf 文件。如何查看某个命令如ls属于哪个 RPM 包→which ls找到命令路径然后rpm -qf /usr/bin/ls。Cockpit 的默认端口是多少如何修改→ 默认端口是 9090。修改需要编辑/etc/systemd/system/cockpit.socket.d/中的端口配置或者通过systemctl edit cockpit.socket覆盖。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