分享一个可以一键制作在线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

相关推荐
Jason_zhao_MR34 分钟前
米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
linux·嵌入式硬件·物联网·架构·嵌入式·嵌入式实时数据库
网硕互联的小客服41 分钟前
遇到网站500内部服务器错误如何处理?如何预防这样的问题发生?
运维·服务器·安全
叮咚侠44 分钟前
Ubuntu 24.04.3 LTS 中 vdb 的 UUID 永久挂载没有显示的磁盘的操作步骤
linux·运维·ubuntu·挂载磁盘
GAOJ_K1 小时前
滚柱导轨中的密封件如何判断是否需更换?
运维·人工智能·科技·自动化·制造
.小墨迹1 小时前
C++学习之std::move 的用法与优缺点分析
linux·开发语言·c++·学习·算法·ubuntu
风华同学1 小时前
【Linux驱动篇】LED驱动开发实验
linux·驱动开发·ubuntu
李斯维1 小时前
安装 WSL 最好的方式
linux·windows
skyyx20021 小时前
写给网工新手:子网掩码基本概念和一些计算方法
运维·网络
张小九992 小时前
fpocket安装和使用教程
linux·机器学习·github
元气满满-樱2 小时前
Rewrite重写
linux·nginx