适读对象:系统运维、DevOps 工程师、Linux 管理员、企业 IT 部署人员
涵盖核心:安装组件回溯 + 模块/软件组管理 + 模块启用/禁用策略 + 日志溯源
一、安装的时候,你到底装了什么?
在 Linux 安装过程中,尤其是基于 Red Hat 系(RHEL、CentOS、Rocky、AlmaLinux)的系统,安装界面中常出现这样的选项:
最小化安装(Minimal Install)
服务器(Server)
工作站(Workstation)
带 GUI 的服务器(Server with GUI)
自定义组件选择(Custom)
背景原理:Kickstart 与软件组定义
这些“组件选择”本质上对应的是系统内定义好的 软件包组(Package Groups) 或 模块(AppStream Modules),以实现功能预配置。例如:
这些组在安装过程中通过 Kickstart 脚本调用并被记录在 /root/anaconda-ks.cfg
文件中。
二、如何确认你安装了哪些系统组件?
1. 查看安装时的自动化脚本(Kickstart)
cat /root/anaconda-ks.cfg
输出中通常包含如下字段:
%packages
@^server-product-environment
@standard
chrony
kexec-tools
%end
@^server-product-environment
:表示安装了“服务器产品环境”@standard
:标准基础组件chrony
、kexec-tools
:表示手动勾选了这些包
📌 “@” 表示软件组;“@^” 表示环境组(环境 + 组件集合)
2. 查看当前已安装的软件包组
dnf group list installed
你将看到诸如:
Installed Environment Groups:
Server with GUI
Installed Groups:
Standard
Core
3. 查看已启用的模块(AppStream Modules)
dnf module list --enabled
例如你看到:
nodejs 16 [e] common [d] Node.js is a JavaScript runtime
php 8.0 [e] common [d] PHP scripting language
表示你系统启用了 nodejs:16
和 php:8.0
模块,后续 dnf install nodejs
会自动绑定该版本。
三、如何后期安装额外组件?
安装组件有三种思路,具体选择根据目标不同:
A. 安装软件组(如开发工具)
dnf group list # 查看所有组
dnf groupinstall "Development Tools"
典型组名包括:
"Development Tools"
"Server Platform Development"
"Graphical Administration Tools"
B. 启用并安装模块(AppStream 模块)
模块是为了解决一个软件的多版本共存(如 Python、PHP、Node.js)。
dnf module list # 查看可用模块
dnf module enable php:8.2 # 启用模块
dnf install php # 安装绑定版本
可一步完成:
dnf module install php:8.2
C. 安装特定组件包
如果你知道具体包名,可直接安装:
dnf install cockpit
dnf install net-tools
四、如何卸载某个模块或组件?
A. 卸载模块包(仅删除文件)
dnf remove php
B. 禁用模块(避免下次自动选中)
dnf module disable php
📌 模块禁用不会卸载已安装包,但会阻止后续
dnf install php
自动选择该版本。
C. 重置模块状态
dnf module reset php
恢复为未启用状态,可重新选择版本。
五、实战建议与最佳实践
总结
写在最后:别让“系统装完”成为你探索的终点
很多企业运维在系统装好之后便默认“万事大吉”,但真正的系统能力还藏在 module
、group
和组件管理之中。
系统组件,就像 LEGO 积木,装对了才能搭出稳固、好用、可维护的系统结构。
系统是活的,组件是灵魂。