Остання активність 1774279515

在CentOS停止支持后,社区上还为它保留了一些可用的软件源,这个脚本就是用来快速配置软件源的

doracoin's Avatar doracoin ревизій цього gist 1774279515. До ревизії

1 file changed, 179 insertions

updatesource.sh(файл створено)

@@ -0,0 +1,179 @@
1 + #!/bin/bash
2 +
3 + # 如果遇到windows格式污染请执行:
4 + # sed -i 's/\r$//' updatesource.sh
5 +
6 + set -euo pipefail
7 +
8 + REPO_DIR="/etc/yum.repos.d"
9 + BACKUP_DIR="${REPO_DIR}/backup_$(date +%F_%H-%M-%S)"
10 + REPO_FILE="${REPO_DIR}/CentOS-Base.repo"
11 +
12 + # ==============================
13 + # 选择源
14 + # ==============================
15 + select_mirror() {
16 + echo "==============================="
17 + echo " 选择 CentOS 7 Vault 源"
18 + echo "==============================="
19 + echo "1. 阿里云(推荐)"
20 + echo "2. 清华 TUNA"
21 + echo "3. 华为云"
22 + echo "4. 网易"
23 + echo "5. 官方 vault"
24 + echo "==============================="
25 +
26 + read -rp "请输入编号: " choice
27 +
28 + case "$choice" in
29 + 1) BASEURL="http://mirrors.aliyun.com/centos-vault/7.9.2009" ;;
30 + 2) BASEURL="https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009" ;;
31 + 3) BASEURL="https://repo.huaweicloud.com/centos-vault/7.9.2009" ;;
32 + 4) BASEURL="http://mirrors.163.com/centos-vault/7.9.2009" ;;
33 + 5) BASEURL="https://vault.centos.org/7.9.2009" ;;
34 + *) echo "无效选择"; exit 1 ;;
35 + esac
36 + }
37 +
38 + # ==============================
39 + # 备份
40 + # ==============================
41 + backup_repo() {
42 + echo "[+] 备份 repo → $BACKUP_DIR"
43 + mkdir -p "$BACKUP_DIR"
44 + cp -a ${REPO_DIR}/*.repo "$BACKUP_DIR"/ 2>/dev/null || true
45 + }
46 +
47 + # ==============================
48 + # 写入 repo(无 EOF 版本)
49 + # ==============================
50 + write_repo() {
51 + echo "[+] 写入新 repo"
52 +
53 + # 清理旧 repo
54 + mkdir -p "${REPO_DIR}/bak_old"
55 + mv ${REPO_DIR}/*.repo "${REPO_DIR}/bak_old/" 2>/dev/null || true
56 +
57 + # 写入新 repo
58 + {
59 + echo "[base]"
60 + echo "name=CentOS-7 - Base"
61 + echo "baseurl=${BASEURL}/os/x86_64/"
62 + echo "enabled=1"
63 + echo "gpgcheck=0"
64 + echo ""
65 +
66 + echo "[updates]"
67 + echo "name=CentOS-7 - Updates"
68 + echo "baseurl=${BASEURL}/updates/x86_64/"
69 + echo "enabled=1"
70 + echo "gpgcheck=0"
71 + echo ""
72 +
73 + echo "[extras]"
74 + echo "name=CentOS-7 - Extras"
75 + echo "baseurl=${BASEURL}/extras/x86_64/"
76 + echo "enabled=1"
77 + echo "gpgcheck=0"
78 + } > "$REPO_FILE"
79 + }
80 +
81 + # ==============================
82 + # fastestmirror 控制
83 + # ==============================
84 + config_fastestmirror() {
85 + CONF_FILE="/etc/yum/pluginconf.d/fastestmirror.conf"
86 +
87 + if [[ ! -f "$CONF_FILE" ]]; then
88 + echo "[!] 未找到 fastestmirror 插件,跳过"
89 + return
90 + fi
91 +
92 + read -rp "是否关闭 fastestmirror?(y/n): " fm
93 +
94 + if [[ "$fm" == "y" ]]; then
95 + sed -i 's/^enabled=.*/enabled=0/' "$CONF_FILE"
96 + echo "[+] 已关闭 fastestmirror"
97 + else
98 + sed -i 's/^enabled=.*/enabled=1/' "$CONF_FILE"
99 + echo "[+] 已开启 fastestmirror"
100 + fi
101 + }
102 +
103 + # ==============================
104 + # 刷新缓存
105 + # ==============================
106 + refresh_cache() {
107 + echo "[+] 清理缓存"
108 + yum clean all
109 +
110 + echo "[+] 构建缓存"
111 + yum makecache
112 + }
113 +
114 + # ==============================
115 + # 可选组件
116 + # ==============================
117 + install_optional() {
118 + read -rp "是否安装 EPEL?(y/n): " epel
119 + if [[ "$epel" == "y" ]]; then
120 + yum install -y epel-release || true
121 + fi
122 +
123 + read -rp "是否启用 SCLo?(y/n): " sclo
124 + if [[ "$sclo" == "y" ]]; then
125 + yum install -y centos-release-scl || true
126 + fi
127 + }
128 +
129 + # ==============================
130 + # 回滚
131 + # ==============================
132 + rollback() {
133 + echo "[!] 可用备份:"
134 + ls -d ${REPO_DIR}/backup_* 2>/dev/null || {
135 + echo "没有备份"
136 + exit 1
137 + }
138 +
139 + read -rp "输入备份路径: " dir
140 +
141 + if [[ -d "$dir" ]]; then
142 + rm -f ${REPO_DIR}/*.repo
143 + cp -a "$dir"/*.repo "$REPO_DIR"/
144 + echo "[✓] 回滚完成"
145 + else
146 + echo "[✗] 目录不存在"
147 + exit 1
148 + fi
149 + }
150 +
151 + # ==============================
152 + # 主流程
153 + # ==============================
154 + main() {
155 + echo "1. 更换源"
156 + echo "2. 回滚"
157 + read -rp "请选择: " action
158 +
159 + case "$action" in
160 + 1)
161 + select_mirror
162 + backup_repo
163 + write_repo
164 + config_fastestmirror
165 + refresh_cache
166 + install_optional
167 + echo "[✔] 完成"
168 + ;;
169 + 2)
170 + rollback
171 + ;;
172 + *)
173 + echo "无效选择"
174 + exit 1
175 + ;;
176 + esac
177 + }
178 +
179 + main
Новіше Пізніше