This commit is contained in:
SuperManito
2024-08-22 18:19:49 +08:00
parent 27aff7f038
commit bd79389e63
6 changed files with 70 additions and 65 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash
## Author: SuperManito
## Modified: 2024-07-31
## Modified: 2024-08-22
## License: MIT
## GitHub: https://github.com/SuperManito/LinuxMirrors
## Website: https://linuxmirrors.cn
@@ -245,7 +245,7 @@ function main() {
function handle_command_options() {
## 命令帮助
function output_command_help() {
echo -e "\n命令选项(参数名/含义/参数值)
echo -e "\n命令选项(名/含义/选项值)
--abroad 使用海外软件源 无
--edu 使用中国大陆教育网软件源 无
@@ -261,13 +261,13 @@ function handle_command_options() {
--branch-portage 指定 Gentoo 系统 portage 仓库的软件源分支(路径) 分支名
--codename 指定 Debian 系操作系统的版本代号 代号名称
--protocol 指定 WEB 协议 http 或 https
--use-intranet-source 是否优先使用内网软件源地址 true 或 false
--use-official-source 是否使用目标操作系统的官方软件源 true 或 false
--install-epel 是否安装 EPEL 附加软件包 true 或 false
--close-firewall 是否关闭防火墙 true 或 false
--backup 是否备份原有软件源 true 或 false
--upgrade-software 是否更新软件包 true 或 false
--clean-cache 是否清理下载缓存 true 或 false
--use-intranet-source 优先使用内网软件源地址 无
--use-official-source 使用目标操作系统的官方软件源 无
--only-epel 仅更换 EPEL 软件源模式 无
--ignore-backup-tips 忽略覆盖备份提示 无
--print-diff 打印源文件修改前后差异 无
@@ -291,78 +291,74 @@ function handle_command_options() {
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源地址!"
fi
;;
--source-epel)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE_EPEL="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源地址!"
fi
;;
--source-security)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE_SECURITY="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源地址!"
fi
;;
--source-vault)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE_VAULT="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源地址!"
fi
;;
--source-portage)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE_PORTAGE="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源地址!"
fi
;;
## 使用官方源
--use-official-source)
USE_OFFICIAL_SOURCE="true"
;;
## 指定软件源分支
--branch)
if [ "$2" ]; then
SOURCE_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源分支"
fi
;;
--branch-epel)
@@ -370,7 +366,7 @@ function handle_command_options() {
SOURCE_EPEL_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源分支"
fi
;;
--branch-security)
@@ -378,7 +374,7 @@ function handle_command_options() {
SOURCE_SECURITY_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源分支"
fi
;;
--branch-vault)
@@ -386,7 +382,7 @@ function handle_command_options() {
SOURCE_VAULT_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源分支"
fi
;;
--branch-portage)
@@ -394,7 +390,7 @@ function handle_command_options() {
SOURCE_PORTAGE_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源分支"
fi
;;
## 指定 Debian 系操作系统的版本代号
@@ -403,15 +399,27 @@ function handle_command_options() {
DEBIAN_CODENAME="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定版本代号!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定版本代号!"
fi
;;
## 优先使用内网地址
--use-intranet-source)
USE_INTRANET_SOURCE="true"
## 使用官方源
--use-official-source)
if [ "$2" ]; then
case "$2" in
[Tt]rue | [Ff]alse)
USE_OFFICIAL_SOURCE="${2,,}"
shift
;;
*)
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
--intranet)
## 废弃的命令选项
## 使用内网地址
--intranet | --use-intranet-source)
if [ "$2" ]; then
case "$2" in
[Tt]rue | [Ff]alse)
@@ -419,11 +427,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
## WEB 协议HTTP/HTTPS
@@ -435,11 +443,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 http 或 https 作为参数值"
output_error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该选项后指定 http 或 https "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 WEB 协议(HTTP/HTTPS"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 WEB 协议(http/https"
fi
;;
## 安装 EPEL 附加软件包
@@ -451,11 +459,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
--only-epel)
@@ -471,11 +479,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
## 备份原有软件源
@@ -487,11 +495,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
## 忽略覆盖备份提示
@@ -507,11 +515,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
## 清理下载缓存
@@ -523,11 +531,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
## 打印源文件修改前后差异
@@ -540,7 +548,7 @@ function handle_command_options() {
exit
;;
*)
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请确认后重新输入!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请确认后重新输入!"
;;
esac
shift
@@ -889,10 +897,7 @@ function choose_mirrors() {
local intranet_source
for ((i = 0; i < ${#mirror_list_extranet[@]}; i++)); do
if [[ "${SOURCE}" == "${mirror_list_extranet[i]}" ]]; then
# echo "${SOURCE}"
intranet_source="${mirror_list_intranet[i]}"
# echo "${intranet_source}"
# exit
ONLY_HTTP="True"
break
else

View File

@@ -1,6 +1,6 @@
#!/bin/bash
## Author: SuperManito
## Modified: 2024-07-26
## Modified: 2024-08-22
## License: MIT
## GitHub: https://github.com/SuperManito/LinuxMirrors
## Website: https://linuxmirrors.cn
@@ -134,7 +134,7 @@ function handle_command_options() {
## 命令帮助
function output_command_help() {
echo -e "
命令选项(参数名/含义/参数值)
命令选项(名/含义/选项值)
--source 指定 Docker CE 源地址 地址
--source-registry 指定 Docker Registry 源地址 地址
@@ -154,13 +154,13 @@ function handle_command_options() {
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定软件源地址!"
fi
;;
## 指定 Docker Registry 仓库地址
@@ -168,13 +168,13 @@ function handle_command_options() {
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定有效的地址!"
else
SOURCE_REGISTRY="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定软件源地址!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定镜像仓库地址!"
fi
;;
## 指定 Debian 版本代号
@@ -183,7 +183,7 @@ function handle_command_options() {
DEBIAN_CODENAME="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定版本代号!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定版本代号!"
fi
;;
## 安装最新版本
@@ -195,11 +195,11 @@ function handle_command_options() {
shift
;;
*)
output_error "检测到 ${BLUE}$2${PLAIN} 无效参数值,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false "
;;
esac
else
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请在该参数后指定 true 或 false 作为参数值"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false "
fi
;;
## 忽略覆盖备份提示
@@ -212,7 +212,7 @@ function handle_command_options() {
exit
;;
*)
output_error "检测到 ${BLUE}$1${PLAIN} 无效参数,请确认后重新输入!"
output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请确认后重新输入!"
;;
esac
shift

View File

@@ -31,7 +31,7 @@ hide:
---
无需了解相关技术,文档提供了全面的知识储备和操作指引,轻松上手
文档还提供了一些常见问题的解决方法以及一些高级用法的
文档还提供了一些常见问题的解决方法以及一些高级用法的
- :material-vector-polyline:{ .lg .middle } __广泛的系统支持__

View File

@@ -29,7 +29,7 @@ hide:
???+ question "使用帮助"
:supported: 支持 &nbsp;&nbsp; :unsupport: 不支持 &nbsp;&nbsp; :incompatible: 不兼容,表示软件源分支命名不符合脚本默认规则但可以通过命令参数来使用,关于具体用法示例和各操作系统所使用的默认分支名称[详见此处](../use/command-options.md#指定软件源分支)
:supported: 支持 &nbsp;&nbsp; :unsupport: 不支持 &nbsp;&nbsp; :incompatible: 不兼容,表示软件源分支命名不符合脚本默认规则但可以通过命令选项来使用,关于具体用法示例和各操作系统所使用的默认分支名称[详见此处](../use/command-options.md#指定软件源分支)
如果这里没有想使用的镜像站那可以看看其它运行模式和命令选项。软件源的速度区分刷新速度和下行速率,后者才是关键,具体请结合实际地理位置选择尝试,还可以通过[辅助工具网站](#工具网站)进行一些测试
@@ -241,11 +241,11 @@ hide:
| 非洲 · Liquid Telecom · 肯尼亚 :flag-KE: | [mirror.liquidtelecom.com](https://mirror.liquidtelecom.com "https://mirror.liquidtelecom.com") |
| 非洲 · Dimension Data · 南非 :flag-ZA: | [mirror.dimensiondata.com](https://mirror.dimensiondata.com "https://mirror.dimensiondata.com") |
???+ note "帮助项目完善更多海外软件源"
???+ note "帮助项目完善更多海外软件源"
该列表中的软件源参考自 [`Ubuntu 镜像列表`](https://launchpad.net/ubuntu/+cdmirrors "https://launchpad.net/ubuntu/+cdmirrors")、[`Debian 镜像列表`](https://www.debian.org/CD/http-ftp/#mirrors "https://www.debian.org/CD/http-ftp/#mirrors")、[`Fedora Mirror Manager`](https://admin.fedoraproject.org/mirrormanager/mirrors "https://admin.fedoraproject.org/mirrormanager/mirrors") 并且在此之前全部经过了有效性验证,但未作实际测试
作者没有精力持续维护列表中的这些海外镜像站,如果你想补充更多海外软件源或更正当前已有,请修改脚本内的 [`mirror_list_abroad 数组变量`](https://github.com/SuperManito/LinuxMirrors/blame/main/ChangeMirrors.sh#L28 "https://github.com/SuperManito/LinuxMirrors/blame/main/ChangeMirrors.sh#L28") 并按照下面的编辑规范进行修改
作者没有精力持续维护列表中的这些海外镜像站,如果你想补充更多海外软件源或更正当前已有,请修改脚本内的 [`mirror_list_abroad 数组变量`](https://github.com/SuperManito/LinuxMirrors/blame/main/ChangeMirrors.sh#L60 "https://github.com/SuperManito/LinuxMirrors/blame/main/ChangeMirrors.sh#L60") 并按照下面的编辑规范进行修改
你可以在确认软件源地址无误后前往 GitHub 仓库提交 [Pull Requests](https://github.com/SuperManito/LinuxMirrors/pulls "https://github.com/SuperManito/LinuxMirrors/pulls"),也可以 :material-source-fork: Fork 仓库后自行定制使用

View File

@@ -14,14 +14,14 @@
| `--branch-portage` | 指定 Gentoo 系统 portage 仓库的软件源分支(路径) | 分支名 |
| `--codename` | 指定 Debian 系操作系统的版本代号 | 代号名称 |
| `--protocol` | 指定 WEB 协议 | `http``https` |
| `--use-intranet-source` | 是否优先使用内网软件源地址 | `true``false` |
| `--use-official-source` | 是否使用目标操作系统的官方软件源 | `true``false` |
| `--install-epel` | 是否安装 EPEL 附加软件包 | `true``false` |
| `--close-firewall` | 是否关闭防火墙 | `true``false` |
| `--backup` | 是否备份原有软件源 | `true``false` |
| `--upgrade-software` | 是否更新软件包 | `true``false` |
| `--clean-cache` | 是否清理下载缓存 | `true``false` |
| `--print-diff` | 是否打印源文件修改前后差异 | `true``false` |
| `--use-intranet-source` | 优先使用内网软件源地址 | 无 |
| `--use-official-source` | 使用目标操作系统的官方软件源 | 无 |
| `--only-epel` | 仅更换 EPEL 软件源模式 | 无 |
| `--ignore-backup-tips` | 忽略覆盖备份提示(即不覆盖备份) | 无 |
| `--help` | 查看帮助菜单 | 无 |
@@ -166,7 +166,7 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
--source mirror.example.com \
--protocol http \
--intranet false \
--use-intranet-source false \
--install-epel true \
--close-firewall true \
--backup true \

View File

@@ -1,3 +1,3 @@
mkdocs-material==9.5.30
mkdocs-material==9.5.32
mkdocs-glightbox==0.4.0
mkdocs-exclude-search==0.6.6