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

相关推荐
黄焖鸡能干四碗3 分钟前
智能制造工业大数据应用及探索方案(PPT文件)
大数据·运维·人工智能·制造·需求分析
JiMoKuangXiangQu6 分钟前
Linux build:头文件安装
linux·headers_install
橙露10 分钟前
国产PLC与进口PLC全面对比分析:技术、市场与未来趋势
运维·网络
lbb 小魔仙15 分钟前
【Linux】云原生运维效率提升:Linux 终端工具链(kubectl + tmux + fzf)组合拳教程
linux·运维·云原生
清水白石00824 分钟前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
码农小韩1 小时前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
Joren的学习记录1 小时前
【Linux运维大神系列】Kubernetes详解3(kubeadm部署k8s1.23高可用集群)
linux·运维·kubernetes
代码游侠1 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
眠りたいです1 小时前
Docker核心技术和实现原理第二部分:docker镜像与网络原理
运维·网络·docker·容器
2501_933513041 小时前
Linux下载离线rpm和依赖包的方法
linux·运维·服务器