如何通过Yum批量安装软件,实现高效批量部署提升工作效率?
- 内容介绍
- 文章标签
- 相关推荐
在多台服务器上手动逐个安装组件包,既耗时又容易出现遗漏或版本冲突。在大规模批量部署时重复执行相同的命令会让人头疼。下面用清晰的结构,告诉你如何利用 Yum 一键完成批量安装。从而明显提高工作效率,不过,
痛点回顾
1️⃣ 频繁重复手工操作每台机器都要跑一遍“yum install”。耗费大量时间,
2️⃣ 易出错与缺乏可追踪性手工复制粘贴命令容易出现拼写错误,难以记录安装历史。其实,
3️⃣ 依赖冲突与版本不一致不同机器可能使用不同仓库或缓存。导致软件版本不统一,
4️⃣ 离线环境部署难度大网络受限时需要提前准备好所有 RPM 包。
方案一的观点是,使用 Yum 的软件组
如果你想一次性装完一套相关的软件。可以通过软件组实现:
# 查看可用的软件组
yum grouplist
# 安装指定的软件组
yum groupinstall -y "Development Tools"
优势这方面,
- 一次命令完成多包安装,省时省力。
- Yum 自动解析依赖关系,无需担心缺失库。话说回来,
- 适合需要标准化工具链的开发环境。按理说,
从方案二来看,创建包名列表文件 + xargs 批量安装
将所有需要安装的包名写进一个文这篇文章件。每行一个:
# packages.txt 示例
httpd
mariadb-server
php
nodejs
git
vim
接下来使用 xargs 调用 yum:
# 读取文件并批量安装
xargs -a packages.txt -I {} yum install -y {}
# 或更简洁的方式:
cat packages.txt | xargs yum install -y
优点的观点是,
- 一次性处理数十甚至数百个包。
- AWS、Dockerfile 等脚本中易于嵌入。
- Error handling 可以通过脚本捕获失败信息并重试。
方案三这方面,Shell 脚本自动化批量安装
If you prefer a reusable script:
#!/bin/bash
set -euo pipefail
# 定义要安装的软件包列表
PACKAGES=(
httpd
mariadb-server
php-fpm
git
vim-enhanced
)
# 自动化安装并记录日志
LOGFILE="/var/log/yum_batch_install.log"
echo "$ 开始批量安装">> "$LOGFILE"
for pkg in "${PACKAGES}";do
echo "正在安装 $pkg ..."
yum install -y "$pkg">> "$LOGFILE" 2>&1 || {
echo "❌ $pkg 安装失败!检查日志这方面,$LOGFILE"
exit 1
}
done
echo "$ 所有软件已成功安装">> "$LOGFILE"
echo "✅ 批量部署完成!
"
再看脚本亮点。
- set -euo pipefail: 捕获任何错误立即退出,避免“隐形错误”。
- 日志记录到 /var/log/yum_batch_install.log: 审计和重试都能查阅。
- 数组形式定义包名,可随时添加/删除。其实,
再看方案四,离线批量部署
- Create a directory for RPMs:
# 创建存放目录并下载所需 RPM 包
mkdir -p /opt/pkgs && cd /opt/pkgs
yumdownloader \ --destdir=/opt/pkgs \ httpd mariadb-server php-fpm git vim-enhanced
md5sum *.rpm | tee /opt/pkgs/rpm_md5.txt
yum localinstall -y /opt/pkgs/*.rpm
sed -i 's/^keepcache=./keepcache=1/' /etc/yum.repos.d/.repo
离线部署小技巧:
-
镜像同步如果你有公司内网镜像。请先同步到该镜像,再使用
--downloadonly参数进行下载。 -
版本锁定使用
--disablerepo=* --enablerepo=repo_name指定仓库,以确保一致的版本。
实用建议与排错技巧
-
🔧 检查仓库配置:
yum repolist all查看可用仓库及其状态;若某个仓库不可达,可临时禁用它们再尝试。
yum deplist packagename 可查看某个包所需的依赖;必要时提前预装关键依赖项。按理说,
journalctl -u yum 或查看 /var/log/yum.log 获取详细错误信息;根据提示定位缺失或冲突的软件包。
parallel-ssh 或 Ansible 可以让多台主机同时执行上述脚本,实现“一键”全网覆盖;保持可回滚和 idempotent特性。
rpm --checksig *.rpm 验证签名;按理说,若出现无签名警告,可考虑开启 GPG 校验功能,提高安全级别。一句话: You only need one powerful command to deploy dozens of packages across thousands of servers—no more manual copy‑paste,no more version drift.
在多台服务器上手动逐个安装组件包,既耗时又容易出现遗漏或版本冲突。在大规模批量部署时重复执行相同的命令会让人头疼。下面用清晰的结构,告诉你如何利用 Yum 一键完成批量安装。从而明显提高工作效率,不过,
痛点回顾
1️⃣ 频繁重复手工操作每台机器都要跑一遍“yum install”。耗费大量时间,
2️⃣ 易出错与缺乏可追踪性手工复制粘贴命令容易出现拼写错误,难以记录安装历史。其实,
3️⃣ 依赖冲突与版本不一致不同机器可能使用不同仓库或缓存。导致软件版本不统一,
4️⃣ 离线环境部署难度大网络受限时需要提前准备好所有 RPM 包。
方案一的观点是,使用 Yum 的软件组
如果你想一次性装完一套相关的软件。可以通过软件组实现:
# 查看可用的软件组
yum grouplist
# 安装指定的软件组
yum groupinstall -y "Development Tools"
优势这方面,
- 一次命令完成多包安装,省时省力。
- Yum 自动解析依赖关系,无需担心缺失库。话说回来,
- 适合需要标准化工具链的开发环境。按理说,
从方案二来看,创建包名列表文件 + xargs 批量安装
将所有需要安装的包名写进一个文这篇文章件。每行一个:
# packages.txt 示例
httpd
mariadb-server
php
nodejs
git
vim
接下来使用 xargs 调用 yum:
# 读取文件并批量安装
xargs -a packages.txt -I {} yum install -y {}
# 或更简洁的方式:
cat packages.txt | xargs yum install -y
优点的观点是,
- 一次性处理数十甚至数百个包。
- AWS、Dockerfile 等脚本中易于嵌入。
- Error handling 可以通过脚本捕获失败信息并重试。
方案三这方面,Shell 脚本自动化批量安装
If you prefer a reusable script:
#!/bin/bash
set -euo pipefail
# 定义要安装的软件包列表
PACKAGES=(
httpd
mariadb-server
php-fpm
git
vim-enhanced
)
# 自动化安装并记录日志
LOGFILE="/var/log/yum_batch_install.log"
echo "$ 开始批量安装">> "$LOGFILE"
for pkg in "${PACKAGES}";do
echo "正在安装 $pkg ..."
yum install -y "$pkg">> "$LOGFILE" 2>&1 || {
echo "❌ $pkg 安装失败!检查日志这方面,$LOGFILE"
exit 1
}
done
echo "$ 所有软件已成功安装">> "$LOGFILE"
echo "✅ 批量部署完成!
"
再看脚本亮点。
- set -euo pipefail: 捕获任何错误立即退出,避免“隐形错误”。
- 日志记录到 /var/log/yum_batch_install.log: 审计和重试都能查阅。
- 数组形式定义包名,可随时添加/删除。其实,
再看方案四,离线批量部署
- Create a directory for RPMs:
# 创建存放目录并下载所需 RPM 包
mkdir -p /opt/pkgs && cd /opt/pkgs
yumdownloader \ --destdir=/opt/pkgs \ httpd mariadb-server php-fpm git vim-enhanced
md5sum *.rpm | tee /opt/pkgs/rpm_md5.txt
yum localinstall -y /opt/pkgs/*.rpm
sed -i 's/^keepcache=./keepcache=1/' /etc/yum.repos.d/.repo
离线部署小技巧:
-
镜像同步如果你有公司内网镜像。请先同步到该镜像,再使用
--downloadonly参数进行下载。 -
版本锁定使用
--disablerepo=* --enablerepo=repo_name指定仓库,以确保一致的版本。
实用建议与排错技巧
-
🔧 检查仓库配置:
yum repolist all查看可用仓库及其状态;若某个仓库不可达,可临时禁用它们再尝试。
yum deplist packagename 可查看某个包所需的依赖;必要时提前预装关键依赖项。按理说,
journalctl -u yum 或查看 /var/log/yum.log 获取详细错误信息;根据提示定位缺失或冲突的软件包。
parallel-ssh 或 Ansible 可以让多台主机同时执行上述脚本,实现“一键”全网覆盖;保持可回滚和 idempotent特性。
rpm --checksig *.rpm 验证签名;按理说,若出现无签名警告,可考虑开启 GPG 校验功能,提高安全级别。一句话: You only need one powerful command to deploy dozens of packages across thousands of servers—no more manual copy‑paste,no more version drift.

