欢迎光临
我们一直在努力

Linux(CentOS)系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理

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

目录

  • Cockpit:Linux 的 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. 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 的使用场景与定位

    场景推荐使用 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 思考与拓展(原课后作业转化)

  • 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

    赞(0)
    未经允许不得转载:171主机测评 » Linux(CentOS)系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址