#!/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