添加 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