添加 changeSource/changeSource.sh
This commit is contained in:
parent
39b8782f57
commit
806943e50d
86
changeSource/changeSource.sh
Normal file
86
changeSource/changeSource.sh
Normal file
@ -0,0 +1,86 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 定义源列表
|
||||
declare -A sources=(
|
||||
["Ubuntu"]="official:archive.ubuntu.com/ubuntu/ tsinghua:mirrors.tuna.tsinghua.edu.cn/ubuntu/ alibaba:mirrors.aliyun.com/ubuntu/ ustc:mirrors.ustc.edu.cn/ubuntu/"
|
||||
["Debian"]="official:deb.debian.org/debian tsinghua:mirrors.tuna.tsinghua.edu.cn/debian/ alibaba:mirrors.aliyun.com/debian/ ustc:mirrors.ustc.edu.cn/debian/"
|
||||
["CentOS"]="official:mirror.centos.org/centos tsinghua:mirrors.tuna.tsinghua.edu.cn/centos/ alibaba:mirrors.aliyun.com/centos/ ustc:mirrors.ustc.edu.cn/centos/"
|
||||
)
|
||||
|
||||
# 函数:获取和验证系统版本
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
DISTRO=$ID
|
||||
VERSION=$VERSION_ID
|
||||
elif [ -f /etc/centos-release ]; then
|
||||
DISTRO="centos"
|
||||
VERSION=$(cut -d' ' -f4 /etc/centos-release)
|
||||
else
|
||||
echo "无法识别当前系统版本。"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 函数:显示源选择菜单
|
||||
display_source_menu() {
|
||||
echo "选择源:"
|
||||
echo "1. 官方"
|
||||
echo "2. 清华"
|
||||
echo "3. 阿里云"
|
||||
echo "4. 科大"
|
||||
read -p "请输入数字选择源 (默认1): " choice
|
||||
choice=${choice:-1}
|
||||
case $choice in
|
||||
1) echo "official";;
|
||||
2) echo "tsinghua";;
|
||||
3) echo "alibaba";;
|
||||
4) echo "ustc";;
|
||||
*) echo "official";;
|
||||
esac
|
||||
}
|
||||
|
||||
# 函数:替换源配置文件
|
||||
update_source() {
|
||||
local DISTRO=$1
|
||||
local SOURCE=$2
|
||||
local VERSION=$3
|
||||
|
||||
case $DISTRO in
|
||||
"ubuntu")
|
||||
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
|
||||
if [ "$SOURCE" = "official" ]; then
|
||||
echo "deb http://archive.ubuntu.com/ubuntu/ $VERSION main restricted universe multiverse" | sudo tee /etc/apt/sources.list
|
||||
else
|
||||
echo "deb http://${sources[$DISTRO,$SOURCE]} $VERSION main restricted universe multiverse" | sudo tee /etc/apt/sources.list
|
||||
fi
|
||||
sudo apt-get update
|
||||
;;
|
||||
"debian")
|
||||
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
|
||||
if [ "$SOURCE" = "official" ]; then
|
||||
echo "deb http://deb.debian.org/debian $VERSION main contrib non-free" | sudo tee /etc/apt/sources.list
|
||||
else
|
||||
echo "deb http://${sources[$DISTRO,$SOURCE]} $VERSION main contrib non-free" | sudo tee /etc/apt/sources.list
|
||||
fi
|
||||
sudo apt-get update
|
||||
;;
|
||||
"centos")
|
||||
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
|
||||
if [ "$SOURCE" = "official" ]; then
|
||||
sudo sed -i "s|^mirrorlist=|#mirrorlist=|" /etc/yum.repos.d/CentOS-Base.repo
|
||||
sudo sed -i "s|^#baseurl=http://mirror.centos.org|baseurl=http://mirror.centos.org|" /etc/yum.repos.d/CentOS-Base.repo
|
||||
else
|
||||
sudo sed -i "s|^mirrorlist=|#mirrorlist=|" /etc/yum.repos.d/CentOS-Base.repo
|
||||
sudo sed -i "s|^#baseurl=http://mirror.centos.org|baseurl=http://${sources[$DISTRO,$SOURCE]}|" /etc/yum.repos.d/CentOS-Base.repo
|
||||
fi
|
||||
sudo yum clean all && sudo yum makecache
|
||||
;;
|
||||
esac
|
||||
echo "源已更新为 $SOURCE 源。"
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
detect_distro
|
||||
SOURCE=$(display_source_menu)
|
||||
update_source $DISTRO $SOURCE $VERSION
|
Loading…
Reference in New Issue
Block a user