温馨提示×

如何使用Yum批量安装软件

小樊
40
2025-12-06 04:53:28
栏目: 编程语言

使用 Yum 批量安装软件的实用方法

一 常用方法

  • 使用包清单文件配合命令替换:创建包含包名的文本(每行一个包名),执行命令:yum install -y $(cat packages.txt)。该方式简洁,适合一次性安装明确列出的多个包。
  • 使用 Shell 循环逐行安装:读取清单并对每个包执行安装,便于在失败时定位问题或加入日志。
  • 使用通配符批量匹配安装:当包名具有统一前缀/后缀时,可用如 yum install -y package* 的方式匹配安装。
  • 安装软件组:对一类功能组件一次性安装,先用 yum grouplist 查看可用组,再用 yum groupinstall “组名” 安装(组名含空格需加引号)。
  • 多机批量:在 Ansible 中使用 yum 模块对主机清单批量执行安装,适合集群环境。

二 命令示例

  • 包清单文件安装
    1. 创建清单:
    cat > packages.txt <<'EOF'
    httpd
    mariadb-server
    php
    EOF
    
    1. 执行安装:
    yum install -y $(cat packages.txt)
    
  • 通配符安装
    yum install -y 'vim*'
    
  • 软件组安装
    yum grouplist | grep -i "Development"
    yum groupinstall -y "Development Tools"
    
  • Shell 脚本安装(逐行、可加日志与判断)
    #!/usr/bin/env bash
    set -Eeuo pipefail
    pkg_list=(httpd mariadb-server php)
    for p in "${pkg_list[@]}"; do
      if rpm -q "$p" >/dev/null 2>&1; then
        echo "[OK] $p 已安装"
      else
        echo "[INFO] 安装 $p ..."
        yum install -y "$p"
      fi
    done
    
  • Ansible 批量安装(playbook)
    - name: 批量安装常用服务
      hosts: webservers
      become: true
      tasks:
        - name: 安装 httpd、mariadb-server、php
          yum:
            name:
              - httpd
              - mariadb-server
              - php
            state: present
    
    执行:ansible-playbook -i inventory site.yml

三 离线批量安装

  • 仅下载 RPM 到本地目录(不安装)
    yum install -y yum-utils
    yumdownloader --destdir=/opt/pkgs httpd mariadb-server php
    # 或使用 downloadonly
    yum install --downloadonly --destdir=/opt/pkgs httpd mariadb-server php
    
  • 安装已下载的 RPM 包
    yum localinstall -y /opt/pkgs/*.rpm
    # 或
    rpm -ivh /opt/pkgs/*.rpm
    
  • 将已安装过的包缓存到本地(便于后续复用)
    /etc/yum.conf 中设置 keepcache=1,之后用 yum 安装时会保留 RPM 包,便于离线复用或审计。

四 实用建议与排错

  • 建议在命令中加入 -y 自动确认,配合脚本或自动化执行;在交互式环境可去掉 -y 以便逐项确认。
  • 包名包含空格或特殊字符时,务必使用引号(如组名:“Development Tools”)。
  • 使用命令替换 $(cat file) 时,确保清单中不含空行或注释行;必要时先清理:
    grep -vE '^\s*#|^\s*$' packages.txt | xargs yum install -y
    
  • 多机场景优先用 Ansible 统一管理、可回滚与并发执行;单机建议用脚本记录日志,便于审计与重试。
  • 遇到依赖冲突或版本锁定时,先检查可用仓库与版本:
    yum repolist
    yum list available package_name
    

0