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