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

相关推荐
8K超高清21 小时前
高校巡展:中国传媒大学+河北传媒学院
大数据·运维·网络·人工智能·传媒
ben9518chen1 天前
嵌入式Linux C语言程序设计九
linux·c语言
wuk9981 天前
CentOS7环境搭建L2TP服务器
运维·服务器
恒创科技HK1 天前
香港1核2G云服务器当网站服务器够用不?
运维·服务器
IT 小阿姨(数据库)1 天前
PostgreSQL 之上的开源时序数据库 TimescaleDB 详解
运维·数据库·sql·postgresql·开源·centos·时序数据库
颜大哦1 天前
linux安装mysql
linux·运维·mysql·adb
学习3人组1 天前
Node.js 网站服务器开发
运维·服务器·node.js
来知晓1 天前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器
大聪明-PLUS1 天前
嵌入式 Linux 初学者指南 – 第 2 部分
linux·嵌入式·arm·smarc
feng_blog66881 天前
【信创系统】统信UOS Linux4.19+libbpf开发ebpf程序实现文件操作的实时监控
linux·ebpf