Loading

centos7更换aliyun软件源一键脚本

centos7更换aliyun软件源

centos7更换aliyun软件源一键脚本

curl -O https://raw.githubusercontent.com/Yogoshiteyo/aliyun.repo/main/chageyum.sh && chmod +x chageyum.sh && ./chageyum.sh

换源完成

[root@localhost tmp]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirrors.aliyun.com
  • extras: mirrors.aliyun.com
  • updates: mirrors.aliyun.com
    源标识 源名称 状态
    base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
    cker-ce-stable/x86_64 Docker CE Stable - x86_64 337
    epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,791
    extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
    updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 6,173
    repolist: 30,899

chageyum.sh

#!/bin/bash

function install_docker_repo() {
    read -p "是否安装Docker源? (y/n): " install_docker
    if [[ $install_docker == "y" || $install_docker == "Y" ]]; then
        curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    fi
}

function setup_aliyun_repo() {
    local repo_dir="/etc/yum.repos.d/aliyun"

    if [ ! -d "$repo_dir" ] || [ -z "$(ls -A $repo_dir)" ]; then
        echo "未找到阿里云源的文件,确保文件已下载。"
        return 1
    fi

    backup
    echo "现有的YUM源文件已备份到 /etc/yum.repos.d/backup"

    rm -rf /etc/yum.repos.d/*.repo
    cp $repo_dir/*.repo /etc/yum.repos.d/
    yum clean all
    yum makecache
    install_docker_repo
}

function backup() {
    if [ ! -d "/etc/yum.repos.d/backup" ]; then
        mkdir /etc/yum.repos.d/backup
    fi
    mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
    if [ $? -ne 0 ]; then
        echo "备份失败,请检查权限或路径。"
        return 1
    fi
}



function chyum() {
    PS3='选择操作: '
    options=("阿里云" "恢复备份" "退出")
    select fav in "${options[@]}"; do
        case $fav in
            "阿里云")
                setup_aliyun_repo || continue
                exit
                ;;
            "恢复备份")
                restore_backup || continue
                exit
                ;;
            "退出")
                echo "用户请求退出"
                exit
                ;;
            *)
                echo "无效选项 $REPLY"
                ;;
        esac
    done
}

function download_repo_file() {
    local url=$1
    local output=$2
    local attempts=3

    for ((i=1; i<=attempts; i++)); do
        curl -o $output $url
        if [ -s $output ] && grep -q "baseurl" $output; then
            echo "$output 下载成功"
            return 0
        else
            echo "$output 下载失败,重试 $i/$attempts"
        fi
    done

    echo "$output 下载失败"
    return 1
}

function download_repo_files() {
    mkdir -p /etc/yum.repos.d/aliyun

    download_repo_file https://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/aliyun/CentOS-Base.repo
    download_repo_file https://mirrors.aliyun.com/repo/epel-7.repo /etc/yum.repos.d/aliyun/epel.repo
}

if [ ! -d "/etc/yum.repos.d/aliyun" ]; then
    download_repo_files
fi

chyum

posted @ 2024-07-23 09:56  Yogochann  阅读(330)  评论(0)    收藏  举报