分享一个可以一键制作在线yum源的脚本


复制代码
#!/bin/bash
# 自动化配置CentOS 7在线yum源(基于阿里云归档源)
# 需以root权限执行

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo "错误:请使用root权限执行此脚本(sudo或直接登录root)"
    exit 1
fi

echo "===== 开始配置DNS解析 ====="
# 备份原有DNS配置
cp /etc/resolv.conf /etc/resolv.conf.bak$(date +%Y%m%d)
# 添加通用DNS服务器(避免域名解析失败)
cat << EOF >> /etc/resolv.conf
nameserver 114.114.114.114  # 国内通用DNS
nameserver 8.8.8.8          # 备用DNS
EOF
echo "DNS配置完成"


echo -e "\n===== 开始替换CentOS 7 yum源 ====="
# 备份原有yum源配置
if [ -f "/etc/yum.repos.d/CentOS-Base.repo" ]; then
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak$(date +%Y%m%d)
    echo "已备份原有yum源配置"
fi

# 安装curl(如果未安装,用于下载源配置)
if ! command -v curl &> /dev/null; then
    echo "未检测到curl,尝试通过原有源安装(若失败可手动安装)"
    yum install -y curl || {
        echo "curl安装失败,尝试使用wget替代"
        yum install -y wget || {
            echo "错误:curl和wget均无法安装,请检查基础网络"
            exit 1
        }
    }
fi

# 下载阿里云CentOS 7归档源
echo "下载阿里云CentOS 7源配置..."
if command -v curl &> /dev/null; then
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo || {
        echo "阿里云源下载失败,尝试官方归档源..."
        # 若阿里云失败,直接写入官方vault源配置
        cat << EOF > /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-\$releasever - Base
baseurl=https://vault.centos.org/7.9.2009/os/\$basearch/
gpgcheck=1
gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-\$releasever - Updates
baseurl=https://vault.centos.org/7.9.2009/updates/\$basearch/
gpgcheck=1
gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-\$releasever - Extras
baseurl=https://vault.centos.org/7.9.2009/extras/\$basearch/
gpgcheck=1
gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7
EOF
    }
else
    # 若curl不可用,用wget下载
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo || {
        echo "阿里云源下载失败,使用官方归档源..."
        # 写入官方vault源配置(同上文)
        cat << EOF > /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-\$releasever - Base
baseurl=https://vault.centos.org/7.9.2009/os/\$basearch/
gpgcheck=1
gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-\$releasever - Updates
baseurl=https://vault.centos.org/7.9.2009/updates/\$basearch/
gpgcheck=1
gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-\$releasever - Extras
baseurl=https://vault.centos.org/7.9.2009/extras/\$basearch/
gpgcheck=1
gpgkey=https://vault.centos.org/RPM-GPG-KEY-CentOS-7
EOF
    }
fi

# 替换源配置中的$releasever为具体版本7(避免变量解析问题)
sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
echo "yum源配置替换完成"


echo -e "\n===== 清理并重建yum缓存 ====="
yum clean all &> /dev/null
yum makecache &> /dev/null || {
    echo "缓存重建失败,尝试强制重建..."
    yum makecache fast
}
echo "yum缓存重建完成"


echo -e "\n===== 测试安装git(验证源有效性) ====="
yum install -y git && {
    echo -e "\n===== 全部操作完成!yum源已配置,git安装成功 ====="
    exit 0
}

# 若git安装失败,提示可能的问题
echo -e "\n警告:git安装失败,可能源仍有问题,请检查网络或手动调整源配置"
exit 1

使用方法:

将脚本保存为 fix_centos7_yum.sh

赋予执行权限:chmod +x fix_centos7_yum.sh

执行脚本:./fix_centos7_yum.sh

相关推荐
贝锐4 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien20045 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
天远Date Lab6 小时前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
2601_962074687 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
小张同学a.7 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
大模型丫丫8 小时前
Hermes Agent:轻量级智能体框架实战指南
大数据·运维·服务器
考虑考虑8 小时前
kubectl命令
运维·后端·自动化运维
NJCloud8 小时前
Docker 容器技术入门:部署、核心概念与基础命令
运维·docker·容器
2601_962072339 小时前
docker自建rustdesk-server远程桌面
运维·docker·容器
Blockchina9 小时前
Codex 实战:从一句需求到可验收的 Linux 主机巡检脚本
运维·服务器·网络