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

相关推荐
2501_915909063 小时前
iOS 混淆实战,多工具组合完成 IPA 混淆与加固(源码 + 成品 + 运维一体化方案)
android·运维·ios·小程序·uni-app·iphone·webview
爱宇阳4 小时前
禅道社区版 Docker Compose 服务迁移教程
运维·docker·容器
Paper_Love4 小时前
Linux-查看硬件接口软件占用
linux·运维·服务器
wydaicls4 小时前
Linux 系统下 ZONE 区域的划分
linux·运维·服务器
带土14 小时前
17. Linux wc命令
linux
螺旋小蜗4 小时前
Linux Cgroup与Device Whitelist详解
linux·运维·服务器·cgroup
染指11104 小时前
36.渗透-端口
linux·运维·服务器
takashi_void4 小时前
如何在本地部署大语言模型(Windows,Mac,Linux)三系统教程
linux·人工智能·windows·macos·语言模型·nlp
勤源科技5 小时前
全链路智能运维中的多模态数据融合与语义对齐技术
运维