CentOS7查看软件组清单并选择性安装:一条命令挑出最省心的包
CentOS7查看软件组清单并选择性安装

装完CentOS7第一件事不是改主机名,也不是关防火墙,而是把软件组捋一遍。很多人图省事直接yum groupinstall "GNOME Desktop",结果装出一堆用不到的组件,磁盘白白吃掉几个G。想精准投喂系统,先得学会yum grouplist这条命令,再搭配yum groupinfo看清每个组里到底塞了啥,最后按需勾选,才算把主动权握在手里。
为什么软件组比单包装更香
单包装只能解决“有没有”的问题,软件组才能解决“全不全”的痛点。比如你要跑一套Java Web,手动装JDK、Tomcat、Maven,依赖漏一个就启动失败;而Development Tools组一次性把gcc、make、autotools全带齐,省得你东拼西凑。更重要的是,组包之间做过冲突测试,版本匹配度高,后期升级省心。
一条命令拉出所有可用组
先确保系统能联网,接着执行:
yum grouplist hidden
hidden参数会把被屏蔽的组也抖出来,比如Security Tools、System Management这类默认不显示的冷门包。输出分三栏:已安装、已安装组语言包、可用组。把中间那栏语言包忽略掉,重点盯右侧“Available Groups”列表,那就是你的自选超市。
看清组里到底有啥再下手
挑中一个组,别急着回车,先yum groupinfo "Web Server",系统会把 Mandatory Packages、Default Packages、Optional Packages 列得明明白白。Mandatory 是必装,Default 是默认勾选,Optional 可打可不打。比如Web Server组里默认带httpd、mod_ssl,却不带nginx,如果你站点跑的是Nginx,就别选这个组,直接单装更干净。
最小化安装后的补装实战
最小化装完系统,连ifconfig都没有,先补基础工具:
yum groupinfo "Base" | grep -A20 "Mandatory Packages"
确认包含vim、tar、net-tools后,执行:
yum groupinstall "Base" -y接着跑业务,发现要编译模块,再把开发组搬上来:
yum groupinstall "Development Tools" --setopt=grouppackagetypes=mandatory,defaultsetopt参数限定只装Mandatory和Default,防止把一堆文档包拖进来。磁盘紧张时,这招能省30%空间。
图形桌面到底要不要装
服务器场景,多数人建议纯命令行,可实际运维里偶尔要跑图形化调试工具。折中方案是装最精简的Xfce:
yum groupinfo "Xfce"确认依赖低于200M后,执行:
yum groupinstall "Xfce" --exclude=leafpad --exclude=mousepadexclude把用不到的文本编辑器踢掉,装完只占380M,比GNOME省1G以上。需要远程桌面时,再单装tigervnc-server,不冲突。
卸载组包也别乱来
有装就有卸,命令格式对称:
yum groupremove "File and Print Server"但系统不会提示哪些包被其他服务依赖,直接卸可能把共享库一起端走。稳妥做法是先干跑:
yum groupremove "File and Print Server" --assumeno看清单里有没有出现samba-libs、cups-libs这类被别的软件调用的包,如果有,就改用yum remove samba单独卸载,避免误伤。
本地仓库也能查组清单
内网环境无法联网,可提前用光盘做本地源。挂载ISO后,编辑repo文件:
baseurl=file:///mnt/cdrom接着执行:
yum --disablerepo=* --enablerepo=cdrom grouplist就能读到光盘里自带的组数据。若自建YUM仓库,记得用createrepo -g comps.xml把组信息写进仓库,否则客户端只能看到单包,看不到组。
一条检查清单避免踩坑
1. 先grouplist再groupinfo,顺序别反。
2. 生产环境加--setopt限定包类型,防止文档和调试器混进来。
3. 卸载前assumeno彩排,确认无共享库被误杀。
4. 装完马上yum history info last,把事务ID记下来,回滚用得到。
5. 定期yum grouplist | grep Installed复查,清理不再用的组,保持系统苗条。
把上面步骤跑顺,CentOS7的软件组就像乐高积木,想拼什么形状,随时拿、随时换,系统永远保持刚刚好。
