Compare commits

...

4 Commits

Author SHA1 Message Date
Super Manito
fec7c28054 更新文档 2025-11-02 03:43:42 +08:00
Super Manito
1ddf1fb708 Docker 脚本新增适配 Kylin Server 操作系统 2025-11-02 02:37:25 +08:00
Super Manito
c84ed20dfa 更新文档 2025-11-01 02:13:19 +08:00
Super Manito
655c8cdabe 优化 2025-11-01 02:00:21 +08:00
37 changed files with 239 additions and 107 deletions

33
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,33 @@
# 参与共建
这篇指南会指导你如何为 LinuxMirrors 贡献自己的一份力量,请你在提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南。
## 行为准则
我们有一份 [行为准则](https://github.com/SuperManito/LinuxMirrors/blob/main/CODE_OF_CONDUCT.md),希望所有的贡献者都能遵守,请花时间阅读一遍全文以确保你能明白哪些是可以做的,哪些是不可以做的。
## 透明的开发
我们所有的工作都会放在 [GitHub](https://github.com/SuperManito/LinuxMirrors) 上。不管是核心团队的成员还是外部贡献者的 pull request 都需要经过同样流程的 review。
## Pull Request
请确保你的代码符合我们的编码规范,并且通过了所有的测试。提交前请务必在本地客户端进行测试,确保脚本的功能和性能符合预期,不会出现任何致命性的错误。
---
# Contributing to LinuxMirrors
The following is a set of guidelines for contributing to LinuxMirrors. Please spend several minutes reading these guidelines before you create an issue or pull request.
## Code of Conduct
We have adopted a [Code of Conduct](https://github.com/SuperManito/LinuxMirrors/blob/main/CODE_OF_CONDUCT.md) that we expect project participants to adhere to. Please read the full text so that you can understand what actions will and will not be tolerated.
## Open Development
All work on LinuxMirrors happens directly on [GitHub](https://github.com/SuperManito/LinuxMirrors). Both core team members and external contributors send pull requests which go through the same review process.
## Pull Request
Please ensure that your code complies with our coding standards and passes all tests. Before submitting, be sure to test it on your local client to ensure that the script's functionality and performance meet expectations and that there are no fatal errors.

View File

@@ -1,3 +1,7 @@
2025-11-02
* Adapted for Kylin Server to docker script [#1ddf1fb](https://github.com/SuperManito/LinuxMirrors/commit/1ddf1fb708987cf59c4ef56b0a0410caf1b8e726)
2025-10-12 2025-10-12
* Added support for I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c) * Added support for I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c)

View File

@@ -1,3 +1,7 @@
2025-11-02
* Docker 脚本新增适配 Kylin Server 操作系统 [#1ddf1fb](https://github.com/SuperManito/LinuxMirrors/commit/1ddf1fb708987cf59c4ef56b0a0410caf1b8e726)
2025-10-12 2025-10-12
* 新增适配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c) * 新增适配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c)

View File

@@ -1,3 +1,7 @@
2025-11-02
* Docker 腳本新增適配 Kylin Server 作業系統 [#1ddf1fb](https://github.com/SuperManito/LinuxMirrors/commit/1ddf1fb708987cf59c4ef56b0a0410caf1b8e726)
2025-10-12 2025-10-12
* 新增適配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c) * 新增適配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c)

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
## Author: SuperManito ## Author: SuperManito
## Modified: 2025-10-20 ## Modified: 2025-11-02
## License: MIT ## License: MIT
## GitHub: https://github.com/SuperManito/LinuxMirrors ## GitHub: https://github.com/SuperManito/LinuxMirrors
## Website: https://linuxmirrors.cn ## Website: https://linuxmirrors.cn
@@ -163,12 +163,12 @@ SPONSOR_ADS=(
"1Panel · Linux 面板|极简运维 ➜ \033[3mhttps://1panel.cn\033[0m" "1Panel · Linux 面板|极简运维 ➜ \033[3mhttps://1panel.cn\033[0m"
"多途云 · 智能化防护,每一次连接皆在安全之下 ➜ \033[3mhttps://www.duotuyun.com\033[0m" "多途云 · 智能化防护,每一次连接皆在安全之下 ➜ \033[3mhttps://www.duotuyun.com\033[0m"
"毫秒镜像 · 专为中国开发者提供Docker镜像加速下载服务 ➜ \033[3mhttps://1ms.run\033[0m" "毫秒镜像 · 专为中国开发者提供Docker镜像加速下载服务 ➜ \033[3mhttps://1ms.run\033[0m"
"林枫云 · 专注独立IP高频VPSR9/i9系列定制 ➜ \033[3mhttps://www.dkdun.cn\033[0m"
"不死鸟CDN · 香港日本高防CDN免实名/免备案轻松阻断DDOS/CC攻击 ➜ \033[3mhttps://www.bsncdn.org\033[0m" "不死鸟CDN · 香港日本高防CDN免实名/免备案轻松阻断DDOS/CC攻击 ➜ \033[3mhttps://www.bsncdn.org\033[0m"
"青叶云 · 香港1T高防自助防火墙无视CC大带宽回国优化线路 ➜ \033[3mhttps://www.qingyeyun.com\033[0m" "青叶云 · 香港1T高防自助防火墙无视CC大带宽回国优化线路 ➜ \033[3mhttps://www.qingyeyun.com\033[0m"
"莱卡云 · 专业云计算服务器提供商 ➜ \033[3m https://www.lcayun.com\033[0m" "莱卡云 · 专业云计算服务器提供商 ➜ \033[3m https://www.lcayun.com\033[0m"
"云悠YUNYOO · 全球高性价比云服务器低至15.99元起 ➜ \033[3mhttps://yunyoo.cc\033[0m" "云悠YUNYOO · 全球高性价比云服务器低至15.99元起 ➜ \033[3mhttps://yunyoo.cc\033[0m"
"速拓云 · 国内高防云28元/月香港云100M优化线路9元/月 ➜ \033[3mhttps://www.sutuoyun.com\033[0m" "速拓云 · 国内高防云28元/月香港云100M优化线路9元/月 ➜ \033[3mhttps://www.sutuoyun.com\033[0m"
"林枫云 · 专注独立IP高频VPSR9/i9系列定制 ➜ \033[3mhttps://www.dkdun.cn\033[0m"
"语鹿云盾 · 专业CDN加速、防御亚太百兆三网优化CDN低至9元起 ➜ \033[3mhttps://www.lucdn.cn\033[0m" "语鹿云盾 · 专业CDN加速、防御亚太百兆三网优化CDN低至9元起 ➜ \033[3mhttps://www.lucdn.cn\033[0m"
"不二云 · 国内外建站快响应服务器的不二之选 ➜ \033[3mhttps://cb2.cn\033[0m" "不二云 · 国内外建站快响应服务器的不二之选 ➜ \033[3mhttps://cb2.cn\033[0m"
"HKGserver · 全球家宽双ISP住宅原生云服务器54元/月起 ➜ \033[3mhttps://www.hkgserver.com\033[0m" "HKGserver · 全球家宽双ISP住宅原生云服务器54元/月起 ➜ \033[3mhttps://www.hkgserver.com\033[0m"
@@ -198,6 +198,8 @@ SYSTEM_OPENCLOUDOS_STREAM="OpenCloudOS Stream"
SYSTEM_TENCENTOS="TencentOS" SYSTEM_TENCENTOS="TencentOS"
SYSTEM_OPENEULER="openEuler" SYSTEM_OPENEULER="openEuler"
SYSTEM_ANOLISOS="Anolis" SYSTEM_ANOLISOS="Anolis"
SYSTEM_KYLIN_DESKTOP="Kylin Desktop"
SYSTEM_KYLIN_SERVER="Kylin Server"
SYSTEM_OPENKYLIN="openKylin" SYSTEM_OPENKYLIN="openKylin"
SYSTEM_OPENSUSE="openSUSE" SYSTEM_OPENSUSE="openSUSE"
SYSTEM_ARCH="Arch" SYSTEM_ARCH="Arch"
@@ -223,7 +225,8 @@ File_ArchLinuxRelease=/etc/arch-release
File_ManjaroRelease=/etc/manjaro-release File_ManjaroRelease=/etc/manjaro-release
File_AlpineRelease=/etc/alpine-release File_AlpineRelease=/etc/alpine-release
File_GentooRelease=/etc/gentoo-release File_GentooRelease=/etc/gentoo-release
File_openKylinVersion=/etc/kylin-version/kylin-system-version.conf File_KylinRelease=/etc/kylin-release
File_kylinVersion=/etc/kylin-version/kylin-system-version.conf
File_ProxmoxVersion=/etc/pve/.version File_ProxmoxVersion=/etc/pve/.version
## 定义软件源相关文件或目录 ## 定义软件源相关文件或目录
@@ -759,7 +762,7 @@ function collect_system_info() {
SYSTEM_FACTIONS="${SYSTEM_OPENCLOUDOS}" # 自 9.0 版本起不再基于红帽 SYSTEM_FACTIONS="${SYSTEM_OPENCLOUDOS}" # 自 9.0 版本起不再基于红帽
elif [ -s "${File_AnolisOSRelease}" ]; then elif [ -s "${File_AnolisOSRelease}" ]; then
SYSTEM_FACTIONS="${SYSTEM_ANOLISOS}" # 自 8.8 版本起不再基于红帽 SYSTEM_FACTIONS="${SYSTEM_ANOLISOS}" # 自 8.8 版本起不再基于红帽
elif [ -s "${File_openKylinVersion}" ]; then elif [ -s "${File_kylinVersion}" ] && [[ "${SYSTEM_ID}" == *"openkylin"* ]]; then
SYSTEM_FACTIONS="${SYSTEM_OPENKYLIN}" SYSTEM_FACTIONS="${SYSTEM_OPENKYLIN}"
elif [ -f "${File_ArchLinuxRelease}" ]; then elif [ -f "${File_ArchLinuxRelease}" ]; then
SYSTEM_FACTIONS="${SYSTEM_ARCH}" SYSTEM_FACTIONS="${SYSTEM_ARCH}"
@@ -1088,7 +1091,7 @@ function check_command_options() {
function choose_display_language() { function choose_display_language() {
local result local result
if command_exists tput; then if command_exists tput; then
local lang_key_labels=() local -a lang_key_labels=()
local language_text local language_text
for ((i = 0; i < ${#MESSAGE_LANG_KEYS[@]}; i++)); do for ((i = 0; i < ${#MESSAGE_LANG_KEYS[@]}; i++)); do
language_text="${MESSAGE_LANG_DISPLAY[${MESSAGE_LANG_KEYS[$i]}]}" language_text="${MESSAGE_LANG_DISPLAY[${MESSAGE_LANG_KEYS[$i]}]}"
@@ -1136,22 +1139,21 @@ function choose_mirrors() {
local text=$1 local text=$1
echo "${#text}" echo "${#text}"
} }
local -a list_arr=()
local list_arr=()
local list_arr_sum="$(eval echo \${#$1[@]})" local list_arr_sum="$(eval echo \${#$1[@]})"
for ((i = 0; i < $list_arr_sum; i++)); do for ((i = 0; i < $list_arr_sum; i++)); do
list_arr[$i]="$(eval echo \${$1[i]})" list_arr[$i]="$(eval echo \${$1[i]})"
done done
local name_width=${2:-"30"} local name_width=${2:-"30"}
local __labels=() local -a list_labels=()
if [[ "${3}" ]]; then if [[ "${3}" ]]; then
eval "__labels=(\"\${${3}[@]}\")" eval "list_labels=(\"\${${3}[@]}\")"
fi fi
if command_exists printf; then if command_exists printf; then
local tmp_uchar_1 tmp_uchar_2 tmp_uchar_3 tmp_uchar_4 tmp_default_length tmp_length tmp_unicode_length tmp_spaces_nums tmp_max_length local tmp_uchar_1 tmp_uchar_2 tmp_uchar_3 tmp_uchar_4 tmp_default_length tmp_length tmp_unicode_length tmp_spaces_nums tmp_max_length
for ((i = 0; i < ${#list_arr[@]}; i++)); do for ((i = 0; i < ${#list_arr[@]}; i++)); do
if [[ "${__labels[$i]}" ]]; then if [[ "${list_labels[$i]}" ]]; then
tmp_name="${__labels[$i]}" tmp_name="${list_labels[$i]}"
else else
tmp_name="${list_arr[i]}" tmp_name="${list_arr[i]}"
fi fi
@@ -1176,8 +1178,8 @@ function choose_mirrors() {
done done
else else
for ((i = 0; i < ${#list_arr[@]}; i++)); do for ((i = 0; i < ${#list_arr[@]}; i++)); do
if [[ "${__labels[$i]}" ]]; then if [[ "${list_labels[$i]}" ]]; then
tmp_name="${__labels[$i]}" tmp_name="${list_labels[$i]}"
else else
tmp_name="${list_arr[i]}" tmp_name="${list_arr[i]}"
fi fi
@@ -1248,7 +1250,7 @@ function choose_mirrors() {
mirror_list_label_msg_prefix="mirrors.default" mirror_list_label_msg_prefix="mirrors.default"
mirror_list_print_length=32 mirror_list_print_length=32
fi fi
local mirror_list_labels=() local -a mirror_list_labels=()
local mirror_list_length=$(eval "echo \${#${mirror_list_name}[@]}") local mirror_list_length=$(eval "echo \${#${mirror_list_name}[@]}")
local label_msg_index label_msg_content local label_msg_index label_msg_content
for ((i = 0; i < ${mirror_list_length}; i++)); do for ((i = 0; i < ${mirror_list_length}; i++)); do
@@ -1611,7 +1613,7 @@ function remove_original_mirrors() {
mkdir -p "${Dir_YumRepos}" mkdir -p "${Dir_YumRepos}"
return return
fi fi
local repo_patterns=() local -a repo_patterns=()
if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_FEDORA}" ]]; then if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_FEDORA}" ]]; then
repo_patterns=( repo_patterns=(
"fedora.repo" "fedora.repo"
@@ -1849,7 +1851,7 @@ function change_mirrors_main() {
print_diff print_diff
fi fi
## 更新软件源 ## 更新软件源
local commands=() local -a commands=()
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
commands+=("apt-get update") commands+=("apt-get update")
@@ -1972,7 +1974,7 @@ function upgrade_software() {
esac esac
fi fi
fi fi
local commands=() local -a commands=()
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
commands+=("apt-get upgrade -y") commands+=("apt-get upgrade -y")
@@ -2793,7 +2795,7 @@ function change_mirrors_openSUSE() {
## 修改源 ## 修改源
cd $Dir_ZYppRepos cd $Dir_ZYppRepos
local opensuse_repo_files=() local -a opensuse_repo_files=()
case "${SYSTEM_ID}" in case "${SYSTEM_ID}" in
opensuse-leap) opensuse-leap)
case "${SYSTEM_VERSION_ID_MAJOR}" in case "${SYSTEM_VERSION_ID_MAJOR}" in
@@ -3071,8 +3073,8 @@ function get_package_manager() {
function interactive_select_list() { function interactive_select_list() {
_SELECT_RESULT="" _SELECT_RESULT=""
eval "local __values=(\"\${${1}[@]}\")" eval "local -a __values=(\"\${${1}[@]}\")"
local __labels=() local -a __labels=()
local message="${2}" local message="${2}"
local selected=0 local selected=0
local start=0 local start=0
@@ -3306,7 +3308,7 @@ function animate_exec() {
exit 130 exit 130
} }
function make_temp_file() { function make_temp_file() {
local temp_dirs=("." "/tmp") local -a temp_dirs=("." "/tmp")
local tmp_file="" local tmp_file=""
for dir in "${temp_dirs[@]}"; do for dir in "${temp_dirs[@]}"; do
[[ ! -d "${dir}" || ! -w "${dir}" ]] && continue [[ ! -d "${dir}" || ! -w "${dir}" ]] && continue

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
## Author: SuperManito ## Author: SuperManito
## Modified: 2025-10-23 ## Modified: 2025-11-02
## License: MIT ## License: MIT
## GitHub: https://github.com/SuperManito/LinuxMirrors ## GitHub: https://github.com/SuperManito/LinuxMirrors
## Website: https://linuxmirrors.cn ## Website: https://linuxmirrors.cn
@@ -81,12 +81,12 @@ SPONSOR_ADS=(
"1Panel · Linux 面板|极简运维 ➜ \033[3mhttps://1panel.cn\033[0m" "1Panel · Linux 面板|极简运维 ➜ \033[3mhttps://1panel.cn\033[0m"
"多途云 · 智能化防护,每一次连接皆在安全之下 ➜ \033[3mhttps://www.duotuyun.com\033[0m" "多途云 · 智能化防护,每一次连接皆在安全之下 ➜ \033[3mhttps://www.duotuyun.com\033[0m"
"毫秒镜像 · 专为中国开发者提供Docker镜像加速下载服务 ➜ \033[3mhttps://1ms.run\033[0m" "毫秒镜像 · 专为中国开发者提供Docker镜像加速下载服务 ➜ \033[3mhttps://1ms.run\033[0m"
"林枫云 · 专注独立IP高频VPSR9/i9系列定制 ➜ \033[3mhttps://www.dkdun.cn\033[0m"
"不死鸟CDN · 香港日本高防CDN免实名/免备案轻松阻断DDOS/CC攻击 ➜ \033[3mhttps://www.bsncdn.org\033[0m" "不死鸟CDN · 香港日本高防CDN免实名/免备案轻松阻断DDOS/CC攻击 ➜ \033[3mhttps://www.bsncdn.org\033[0m"
"青叶云 · 香港1T高防自助防火墙无视CC大带宽回国优化线路 ➜ \033[3mhttps://www.qingyeyun.com\033[0m" "青叶云 · 香港1T高防自助防火墙无视CC大带宽回国优化线路 ➜ \033[3mhttps://www.qingyeyun.com\033[0m"
"莱卡云 · 专业云计算服务器提供商 ➜ \033[3m https://www.lcayun.com\033[0m" "莱卡云 · 专业云计算服务器提供商 ➜ \033[3m https://www.lcayun.com\033[0m"
"云悠YUNYOO · 全球高性价比云服务器低至15.99元起 ➜ \033[3mhttps://yunyoo.cc\033[0m" "云悠YUNYOO · 全球高性价比云服务器低至15.99元起 ➜ \033[3mhttps://yunyoo.cc\033[0m"
"速拓云 · 国内高防云28元/月香港云100M优化线路9元/月 ➜ \033[3mhttps://www.sutuoyun.com\033[0m" "速拓云 · 国内高防云28元/月香港云100M优化线路9元/月 ➜ \033[3mhttps://www.sutuoyun.com\033[0m"
"林枫云 · 专注独立IP高频VPSR9/i9系列定制 ➜ \033[3mhttps://www.dkdun.cn\033[0m"
"语鹿云盾 · 专业CDN加速、防御亚太百兆三网优化CDN低至9元起 ➜ \033[3mhttps://www.lucdn.cn\033[0m" "语鹿云盾 · 专业CDN加速、防御亚太百兆三网优化CDN低至9元起 ➜ \033[3mhttps://www.lucdn.cn\033[0m"
"不二云 · 国内外建站快响应服务器的不二之选 ➜ \033[3mhttps://cb2.cn\033[0m" "不二云 · 国内外建站快响应服务器的不二之选 ➜ \033[3mhttps://cb2.cn\033[0m"
"HKGserver · 全球家宽双ISP住宅原生云服务器54元/月起 ➜ \033[3mhttps://www.hkgserver.com\033[0m" "HKGserver · 全球家宽双ISP住宅原生云服务器54元/月起 ➜ \033[3mhttps://www.hkgserver.com\033[0m"
@@ -116,9 +116,12 @@ SYSTEM_OPENCLOUDOS_STREAM="OpenCloudOS Stream"
SYSTEM_TENCENTOS="TencentOS" SYSTEM_TENCENTOS="TencentOS"
SYSTEM_OPENEULER="openEuler" SYSTEM_OPENEULER="openEuler"
SYSTEM_ANOLISOS="Anolis" SYSTEM_ANOLISOS="Anolis"
SYSTEM_KYLIN_DESKTOP="Kylin Desktop"
SYSTEM_KYLIN_SERVER="Kylin Server"
SYSTEM_OPENKYLIN="openKylin" SYSTEM_OPENKYLIN="openKylin"
SYSTEM_OPENSUSE="openSUSE" SYSTEM_OPENSUSE="openSUSE"
SYSTEM_ARCH="Arch" SYSTEM_ARCH="Arch"
SYSTEM_MANJARO="Manjaro"
SYSTEM_ALPINE="Alpine" SYSTEM_ALPINE="Alpine"
SYSTEM_GENTOO="Gentoo" SYSTEM_GENTOO="Gentoo"
SYSTEM_NIXOS="NixOS" SYSTEM_NIXOS="NixOS"
@@ -140,7 +143,9 @@ File_ArchLinuxRelease=/etc/arch-release
File_ManjaroRelease=/etc/manjaro-release File_ManjaroRelease=/etc/manjaro-release
File_AlpineRelease=/etc/alpine-release File_AlpineRelease=/etc/alpine-release
File_GentooRelease=/etc/gentoo-release File_GentooRelease=/etc/gentoo-release
File_openKylinVersion=/etc/kylin-version/kylin-system-version.conf File_KylinRelease=/etc/kylin-release
File_kylinVersion=/etc/kylin-version/kylin-system-version.conf
File_ProxmoxVersion=/etc/pve/.version
## 定义软件源相关文件或目录 ## 定义软件源相关文件或目录
File_AptSourceList=/etc/apt/sources.list File_AptSourceList=/etc/apt/sources.list
@@ -520,6 +525,9 @@ function collect_system_info() {
## 判定当前系统派系 ## 判定当前系统派系
if [ -s "${File_DebianVersion}" ]; then if [ -s "${File_DebianVersion}" ]; then
SYSTEM_FACTIONS="${SYSTEM_DEBIAN}" SYSTEM_FACTIONS="${SYSTEM_DEBIAN}"
if [ -s "${File_kylinVersion}" ]; then
[[ "${ONLY_REGISTRY}" != "true" ]] && unsupport_system_error "Kylin Desktop" "apt-get install -y docker\nsystemctl enable --now docker"
fi
elif [ -s "${File_RedHatRelease}" ]; then elif [ -s "${File_RedHatRelease}" ]; then
SYSTEM_FACTIONS="${SYSTEM_REDHAT}" SYSTEM_FACTIONS="${SYSTEM_REDHAT}"
elif [ -s "${File_openEulerRelease}" ] || [ -s "${File_HuaweiCloudEulerOSRelease}" ]; then elif [ -s "${File_openEulerRelease}" ] || [ -s "${File_HuaweiCloudEulerOSRelease}" ]; then
@@ -530,8 +538,12 @@ function collect_system_info() {
SYSTEM_FACTIONS="${SYSTEM_ANOLISOS}" # 自 8.8 版本起不再基于红帽 SYSTEM_FACTIONS="${SYSTEM_ANOLISOS}" # 自 8.8 版本起不再基于红帽
elif [ -s "${File_TencentOSServerRelease}" ]; then elif [ -s "${File_TencentOSServerRelease}" ]; then
SYSTEM_FACTIONS="${SYSTEM_TENCENTOS}" # 自 4 版本起不再基于红帽 SYSTEM_FACTIONS="${SYSTEM_TENCENTOS}" # 自 4 版本起不再基于红帽
elif [ -s "${File_openKylinVersion}" ]; then elif [ -s "${File_kylinVersion}" ] || [ -s "${File_KylinRelease}" ]; then
[[ "${ONLY_REGISTRY}" != "true" ]] && unsupport_system_error "openKylin" "apt-get install -y docker\nsystemctl enable --now docker" if [[ "${SYSTEM_ID}" == *"openkylin"* ]]; then
SYSTEM_FACTIONS="${SYSTEM_OPENKYLIN}"
else
SYSTEM_FACTIONS="${SYSTEM_KYLIN_SERVER}"
fi
elif [ -f "${File_ArchLinuxRelease}" ]; then elif [ -f "${File_ArchLinuxRelease}" ]; then
[[ "${ONLY_REGISTRY}" != "true" ]] && unsupport_system_error "Arch Linux" "pacman -S docker\nsystemctl enable --now docker" [[ "${ONLY_REGISTRY}" != "true" ]] && unsupport_system_error "Arch Linux" "pacman -S docker\nsystemctl enable --now docker"
elif [ -f "${File_GentooRelease}" ]; then elif [ -f "${File_GentooRelease}" ]; then
@@ -545,7 +557,7 @@ function collect_system_info() {
fi fi
## 判定系统类型、版本、版本号 ## 判定系统类型、版本、版本号
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
if command_exists lsb_release; then if command_exists lsb_release; then
SYSTEM_JUDGMENT="$(lsb_release -is)" SYSTEM_JUDGMENT="$(lsb_release -is)"
SYSTEM_VERSION_CODENAME="${DEBIAN_CODENAME:-"$(lsb_release -cs)"}" SYSTEM_VERSION_CODENAME="${DEBIAN_CODENAME:-"$(lsb_release -cs)"}"
@@ -616,7 +628,8 @@ function collect_system_info() {
## 定义软件源仓库名称 ## 定义软件源仓库名称
if [[ -z "${SOURCE_BRANCH}" ]]; then if [[ -z "${SOURCE_BRANCH}" ]]; then
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
local debian_codename_latest="trixie"
case "${SYSTEM_JUDGMENT}" in case "${SYSTEM_JUDGMENT}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}")
SOURCE_BRANCH="debian" SOURCE_BRANCH="debian"
@@ -626,7 +639,7 @@ function collect_system_info() {
;; ;;
"${SYSTEM_KALI}") "${SYSTEM_KALI}")
SOURCE_BRANCH="debian" SOURCE_BRANCH="debian"
SOURCE_BRANCH_CODENAME="trixie" SOURCE_BRANCH_CODENAME="${debian_codename_latest}"
;; ;;
"${SYSTEM_LINUX_MINT}") "${SYSTEM_LINUX_MINT}")
if [[ "${SYSTEM_NAME}" == *"LMDE"* ]]; then if [[ "${SYSTEM_NAME}" == *"LMDE"* ]]; then
@@ -652,6 +665,24 @@ function collect_system_info() {
;; ;;
esac esac
;; ;;
# "${SYSTEM_KYLIN_DESKTOP}")
# SOURCE_BRANCH="debian"
# case "${SYSTEM_VERSION_ID_MAJOR}" in
# "v10")
# SOURCE_BRANCH_CODENAME="bullseye"
# ;;
# "v11")
# SOURCE_BRANCH_CODENAME="${debian_codename_latest}"
# ;;
# *)
# SOURCE_BRANCH_CODENAME="${debian_codename_latest}"
# ;;
# esac
# ;;
"${SYSTEM_OPENKYLIN}")
SOURCE_BRANCH="debian"
SOURCE_BRANCH_CODENAME="${debian_codename_latest}"
;;
*) *)
# 其余 Debian 系衍生操作系统 # 其余 Debian 系衍生操作系统
SOURCE_BRANCH="debian" SOURCE_BRANCH="debian"
@@ -659,7 +690,7 @@ function collect_system_info() {
;; ;;
esac esac
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
case "${SYSTEM_JUDGMENT}" in case "${SYSTEM_JUDGMENT}" in
"${SYSTEM_FEDORA}") "${SYSTEM_FEDORA}")
SOURCE_BRANCH="fedora" SOURCE_BRANCH="fedora"
@@ -679,10 +710,10 @@ function collect_system_info() {
fi fi
## 定义软件源更新文字 ## 定义软件源更新文字
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
SYNC_MIRROR_TEXT="$(msg "source.sync.text1")" SYNC_MIRROR_TEXT="$(msg "source.sync.text1")"
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
SYNC_MIRROR_TEXT="$(msg "source.sync.text2")" SYNC_MIRROR_TEXT="$(msg "source.sync.text2")"
;; ;;
esac esac
@@ -697,7 +728,7 @@ function collect_system_info() {
function choose_display_language() { function choose_display_language() {
local result local result
if command_exists tput; then if command_exists tput; then
local lang_key_labels=() local -a lang_key_labels=()
local language_text local language_text
for ((i = 0; i < ${#MESSAGE_LANG_KEYS[@]}; i++)); do for ((i = 0; i < ${#MESSAGE_LANG_KEYS[@]}; i++)); do
language_text="${MESSAGE_LANG_DISPLAY[${MESSAGE_LANG_KEYS[$i]}]}" language_text="${MESSAGE_LANG_DISPLAY[${MESSAGE_LANG_KEYS[$i]}]}"
@@ -744,14 +775,13 @@ function choose_mirrors() {
local text=$1 local text=$1
echo "${#text}" echo "${#text}"
} }
local -a list_arr=()
local list_arr=()
local list_arr_sum="$(eval echo \${#$1[@]})" local list_arr_sum="$(eval echo \${#$1[@]})"
for ((i = 0; i < $list_arr_sum; i++)); do for ((i = 0; i < $list_arr_sum; i++)); do
list_arr[$i]="$(eval echo \${$1[i]})" list_arr[$i]="$(eval echo \${$1[i]})"
done done
local name_width=${2:-"30"} local name_width=${2:-"30"}
local list_labels=() local -a list_labels=()
if [[ "${3}" ]]; then if [[ "${3}" ]]; then
eval "list_labels=(\"\${${3}[@]}\")" eval "list_labels=(\"\${${3}[@]}\")"
fi fi
@@ -837,7 +867,7 @@ function choose_mirrors() {
} }
local mirror_list_name mirror_list_length local mirror_list_name mirror_list_length
local mirror_list_labels=() local -a mirror_list_labels=()
local label_msg_index label_msg_content local label_msg_index label_msg_content
if [[ -z "${SOURCE}" ]] && [[ "${ONLY_REGISTRY}" != "true" ]]; then if [[ -z "${SOURCE}" ]] && [[ "${ONLY_REGISTRY}" != "true" ]]; then
mirror_list_name="mirror_list_docker_ce" mirror_list_name="mirror_list_docker_ce"
@@ -1005,22 +1035,22 @@ function install_dependency_packages() {
local commands package_manager local commands package_manager
## 删除原有源 ## 删除原有源
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
sed -i '/docker-ce/d' $File_AptSourceList sed -i '/docker-ce/d' $File_AptSourceList
rm -rf $File_DockerSourceList rm -rf $File_DockerSourceList
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
rm -rf $Dir_YumRepos/*docker*.repo rm -rf $Dir_YumRepos/*docker*.repo
;; ;;
esac esac
## 更新软件源 ## 更新软件源
commands=() commands=()
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
package_manager="apt-get" package_manager="apt-get"
commands+=("${package_manager} update") commands+=("${package_manager} update")
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
package_manager="$(get_package_manager)" package_manager="$(get_package_manager)"
commands+=("${package_manager} makecache") commands+=("${package_manager} makecache")
;; ;;
@@ -1048,11 +1078,10 @@ function install_dependency_packages() {
commands=() commands=()
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
commands+=("${package_manager} install -y ca-certificates curl") commands+=("${package_manager} install -y ca-certificates curl")
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
# 注:红帽 8 版本才发布了 dnf 包管理工具
case "${SYSTEM_VERSION_ID_MAJOR}" in case "${SYSTEM_VERSION_ID_MAJOR}" in
7) 7)
commands+=("${package_manager} install -y yum-utils device-mapper-persistent-data lvm2") commands+=("${package_manager} install -y yum-utils device-mapper-persistent-data lvm2")
@@ -1087,9 +1116,9 @@ function install_dependency_packages() {
## 配置 Docker CE 源 ## 配置 Docker CE 源
function configure_docker_ce_mirror() { function configure_docker_ce_mirror() {
local commands=() local -a commands=()
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
## 处理 GPG 密钥 ## 处理 GPG 密钥
local file_keyring="/etc/apt/keyrings/docker.asc" local file_keyring="/etc/apt/keyrings/docker.asc"
apt-key del 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 >/dev/null 2>&1 # 删除旧的密钥 apt-key del 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 >/dev/null 2>&1 # 删除旧的密钥
@@ -1102,11 +1131,11 @@ function configure_docker_ce_mirror() {
chmod a+r $file_keyring chmod a+r $file_keyring
## 添加源 ## 添加源
[ -d "${Dir_AptAdditionalSources}" ] || mkdir -p $Dir_AptAdditionalSources [ -d "${Dir_AptAdditionalSources}" ] || mkdir -p $Dir_AptAdditionalSources
local source_content="deb [arch=$(dpkg --print-architecture) signed-by=${file_keyring}] ${WEB_PROTOCOL}://${SOURCE}/linux/${SOURCE_BRANCH} ${SOURCE_BRANCH_CODENAME:-"${SYSTEM_VERSION_CODENAME}"} stable" local source_content="deb [arch=$(dpkg --print-architecture) signed-by=${file_keyring}] ${WEB_PROTOCOL}://${SOURCE}/linux/${SOURCE_BRANCH} ${DEBIAN_CODENAME:-"${SOURCE_BRANCH_CODENAME:-"${SYSTEM_VERSION_CODENAME}"}"} stable"
echo "${source_content}" | tee $File_DockerSourceList >/dev/null 2>&1 echo "${source_content}" | tee $File_DockerSourceList >/dev/null 2>&1
commands+=("apt-get update") commands+=("apt-get update")
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
local repo_file_url="${WEB_PROTOCOL}://${SOURCE}/linux/${SOURCE_BRANCH}/docker-ce.repo" local repo_file_url="${WEB_PROTOCOL}://${SOURCE}/linux/${SOURCE_BRANCH}/docker-ce.repo"
local package_manager="$(get_package_manager)" local package_manager="$(get_package_manager)"
case "${SYSTEM_VERSION_ID_MAJOR}" in case "${SYSTEM_VERSION_ID_MAJOR}" in
@@ -1195,6 +1224,19 @@ function configure_docker_ce_mirror() {
;; ;;
esac esac
fi fi
if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_KYLIN_SERVER}" ]]; then
case "${SYSTEM_VERSION_ID_MAJOR}" in
"V10")
target_version="8"
;;
"V11")
target_version="10"
;;
*)
target_version="10"
;;
esac
fi
;; ;;
esac esac
sed -e "s|\$releasever|${target_version}|g" \ sed -e "s|\$releasever|${target_version}|g" \
@@ -1227,12 +1269,12 @@ function install_docker_engine() {
## 导出可安装的版本列表 ## 导出可安装的版本列表
function export_version_list() { function export_version_list() {
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
apt-cache madison docker-ce | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCEVersionTmp apt-cache madison docker-ce | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCEVersionTmp
apt-cache madison docker-ce-cli | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCECliVersionTmp apt-cache madison docker-ce-cli | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCECliVersionTmp
grep -wf $File_DockerCEVersionTmp $File_DockerCECliVersionTmp >$File_DockerVersionTmp grep -wf $File_DockerCEVersionTmp $File_DockerCECliVersionTmp >$File_DockerVersionTmp
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
local package_manager="$(get_package_manager)" local package_manager="$(get_package_manager)"
$package_manager list docker-ce --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCEVersionTmp $package_manager list docker-ce --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCEVersionTmp
$package_manager list docker-ce-cli --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCECliVersionTmp $package_manager list docker-ce-cli --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$File_DockerCECliVersionTmp
@@ -1252,20 +1294,20 @@ function install_docker_engine() {
# 确定需要卸载的软件包 # 确定需要卸载的软件包
local package_list local package_list
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
package_list='docker* podman podman-docker containerd runc' package_list='docker* podman podman-docker containerd runc'
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
package_list='docker* podman podman-docker runc' package_list='docker* podman podman-docker runc'
;; ;;
esac esac
# 卸载软件包并清理残留 # 卸载软件包并清理残留
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
apt-get remove -y $package_list >/dev/null 2>&1 apt-get remove -y $package_list >/dev/null 2>&1
apt-get autoremove -y >/dev/null 2>&1 apt-get autoremove -y >/dev/null 2>&1
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
local package_manager="$(get_package_manager)" local package_manager="$(get_package_manager)"
$package_manager remove -y $package_list >/dev/null 2>&1 $package_manager remove -y $package_list >/dev/null 2>&1
$package_manager autoremove -y >/dev/null 2>&1 $package_manager autoremove -y >/dev/null 2>&1
@@ -1277,7 +1319,7 @@ function install_docker_engine() {
function install_main() { function install_main() {
local target_docker_version local target_docker_version
local pkgs="" local pkgs=""
local commands=() local -a commands=()
if [[ "${INSTALL_LATESTED_DOCKER}" == "true" ]]; then if [[ "${INSTALL_LATESTED_DOCKER}" == "true" ]]; then
pkgs="docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin" pkgs="docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin"
else else
@@ -1295,7 +1337,7 @@ function install_docker_engine() {
target_docker_version="${DESIGNATED_DOCKER_VERSION}" target_docker_version="${DESIGNATED_DOCKER_VERSION}"
else else
if [[ "${CAN_USE_ADVANCED_INTERACTIVE_SELECTION}" == "true" ]]; then if [[ "${CAN_USE_ADVANCED_INTERACTIVE_SELECTION}" == "true" ]]; then
local version_list=( local -a version_list=(
$(cat $File_DockerVersionTmp | sort -t '.' -k1,1nr -k2,2nr -k3,3nr | tr '\n' ' ' | sed 's/ $//') $(cat $File_DockerVersionTmp | sort -t '.' -k1,1nr -k2,2nr -k3,3nr | tr '\n' ' ' | sed 's/ $//')
) )
local mirror_list_name="version_list" local mirror_list_name="version_list"
@@ -1327,7 +1369,7 @@ function install_docker_engine() {
local major_version="$(echo ${target_docker_version} | cut -d'.' -f1)" local major_version="$(echo ${target_docker_version} | cut -d'.' -f1)"
local minor_version="$(echo ${target_docker_version} | cut -d'.' -f2)" local minor_version="$(echo ${target_docker_version} | cut -d'.' -f2)"
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
if [[ $major_version -gt 18 ]] || [[ $major_version -eq 18 && $minor_version -ge 9 ]]; then if [[ $major_version -gt 18 ]] || [[ $major_version -eq 18 && $minor_version -ge 9 ]]; then
local tmp_version="$(apt-cache madison docker-ce-cli | grep "${target_docker_version}" | head -1 | awk '{print $3}' | awk -F "${target_docker_version}" '{print$1}')" local tmp_version="$(apt-cache madison docker-ce-cli | grep "${target_docker_version}" | head -1 | awk '{print $3}' | awk -F "${target_docker_version}" '{print$1}')"
pkgs="docker-ce=${tmp_version}${target_docker_version}* docker-ce-cli=${tmp_version}${target_docker_version}*" pkgs="docker-ce=${tmp_version}${target_docker_version}* docker-ce-cli=${tmp_version}${target_docker_version}*"
@@ -1336,7 +1378,7 @@ function install_docker_engine() {
fi fi
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
pkgs="docker-ce-${target_docker_version}" pkgs="docker-ce-${target_docker_version}"
if [[ $major_version -gt 18 ]] || [[ $major_version -eq 18 && $minor_version -ge 9 ]]; then if [[ $major_version -gt 18 ]] || [[ $major_version -eq 18 && $minor_version -ge 9 ]]; then
pkgs="${pkgs} docker-ce-cli-${target_docker_version}" pkgs="${pkgs} docker-ce-cli-${target_docker_version}"
@@ -1352,10 +1394,10 @@ function install_docker_engine() {
fi fi
fi fi
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
commands+=("apt-get install -y ${pkgs}") commands+=("apt-get install -y ${pkgs}")
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
commands+=("$(get_package_manager) install -y ${pkgs}") commands+=("$(get_package_manager) install -y ${pkgs}")
;; ;;
esac esac
@@ -1410,10 +1452,10 @@ function install_docker_engine() {
## 判定是否已安装 ## 判定是否已安装
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
dpkg -l | grep docker-ce-cli -q dpkg -l | grep docker-ce-cli -q
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
rpm -qa | grep docker-ce-cli -q rpm -qa | grep docker-ce-cli -q
;; ;;
esac esac
@@ -1506,10 +1548,10 @@ function change_docker_registry_mirror() {
function only_change_docker_registry_mirror() { function only_change_docker_registry_mirror() {
## 判定是否已安装 ## 判定是否已安装
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
dpkg -l | grep docker-ce-cli -q dpkg -l | grep docker-ce-cli -q
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
rpm -qa | grep docker-ce-cli -q rpm -qa | grep docker-ce-cli -q
;; ;;
esac esac
@@ -1526,13 +1568,13 @@ function only_change_docker_registry_mirror() {
if ! command_exists jq; then if ! command_exists jq; then
## 更新软件源 ## 更新软件源
local package_manager local package_manager
local commands=() local -a commands=()
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
package_manager="apt-get" package_manager="apt-get"
commands+=("${package_manager} update") commands+=("${package_manager} update")
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
package_manager="$(get_package_manager)" package_manager="$(get_package_manager)"
commands+=("${package_manager} makecache") commands+=("${package_manager} makecache")
;; ;;
@@ -1582,7 +1624,6 @@ function only_change_docker_registry_mirror() {
function handleRegistryMirrorsValue() { function handleRegistryMirrorsValue() {
local content="$1" local content="$1"
local delimiter=","
local result="" local result=""
content="$(echo "${content}" | sed 's| ||g')" content="$(echo "${content}" | sed 's| ||g')"
local -a items=(${content//,/ }) local -a items=(${content//,/ })
@@ -1614,11 +1655,11 @@ function check_installed_result() {
echo -e "\n$FAIL $(msg "result.install.failed")" echo -e "\n$FAIL $(msg "result.install.failed")"
local source_file package_manager local source_file package_manager
case "${SYSTEM_FACTIONS}" in case "${SYSTEM_FACTIONS}" in
"${SYSTEM_DEBIAN}") "${SYSTEM_DEBIAN}" | "${SYSTEM_OPENKYLIN}")
source_file="${File_DockerSourceList}" source_file="${File_DockerSourceList}"
package_manager="apt-get" package_manager="apt-get"
;; ;;
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
source_file="${File_DockerRepo}" source_file="${File_DockerRepo}"
package_manager="$(get_package_manager)" package_manager="$(get_package_manager)"
;; ;;
@@ -1660,7 +1701,7 @@ function get_package_manager() {
;; ;;
esac esac
;; ;;
"${SYSTEM_FEDORA}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}") "${SYSTEM_FEDORA}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_ANOLISOS}" | "${SYSTEM_TENCENTOS}" | "${SYSTEM_KYLIN_SERVER}")
command="dnf" command="dnf"
;; ;;
esac esac
@@ -1669,8 +1710,8 @@ function get_package_manager() {
function interactive_select_list() { function interactive_select_list() {
_SELECT_RESULT="" _SELECT_RESULT=""
eval "local __values=(\"\${${1}[@]}\")" eval "local -a __values=(\"\${${1}[@]}\")"
local __labels=() local -a __labels=()
local message="${2}" local message="${2}"
local selected=0 local selected=0
local start=0 local start=0
@@ -1904,7 +1945,7 @@ function animate_exec() {
exit 130 exit 130
} }
function make_temp_file() { function make_temp_file() {
local temp_dirs=("." "/tmp") local -a temp_dirs=("." "/tmp")
local tmp_file="" local tmp_file=""
for dir in "${temp_dirs[@]}"; do for dir in "${temp_dirs[@]}"; do
[[ ! -d "${dir}" || ! -w "${dir}" ]] && continue [[ ! -d "${dir}" || ! -w "${dir}" ]] && continue

View File

@@ -34,7 +34,7 @@
<td align="center">14 ~ 25</td> <td align="center">14 ~ 25</td>
</tr> </tr>
<tr> <tr>
<td><a href="https://www.kali.org" target="_blank" rel="noopener noreferrer"><sub><img src="/docs/assets/images/icon/kali-linux.svg" width="16" height="16"></sub></a>&nbsp;Kali Linux</td> <td><a href="https://www.kali.org" target="_blank" rel="noopener noreferrer"><sub><img src="/docs/assets/images/icon/kali-linux.png" width="16" height="16"></sub></a>&nbsp;Kali Linux</td>
<td align="center">all</td> <td align="center">all</td>
</tr> </tr>
<tr> <tr>

View File

@@ -34,7 +34,7 @@
<td align="center">14 ~ 25</td> <td align="center">14 ~ 25</td>
</tr> </tr>
<tr> <tr>
<td><a href="https://www.kali.org" target="_blank" rel="noopener noreferrer"><sub><img src="/docs/assets/images/icon/kali-linux.svg" width="16" height="16"></sub></a>&nbsp;Kali Linux</td> <td><a href="https://www.kali.org" target="_blank" rel="noopener noreferrer"><sub><img src="/docs/assets/images/icon/kali-linux.png" width="16" height="16"></sub></a>&nbsp;Kali Linux</td>
<td align="center">all</td> <td align="center">all</td>
</tr> </tr>
<tr> <tr>

View File

@@ -34,7 +34,7 @@
<td align="center">14 ~ 25</td> <td align="center">14 ~ 25</td>
</tr> </tr>
<tr> <tr>
<td><a href="https://www.kali.org" target="_blank" rel="noopener noreferrer"><sub><img src="/docs/assets/images/icon/kali-linux.svg" width="16" height="16"></sub></a>&nbsp;Kali Linux</td> <td><a href="https://www.kali.org" target="_blank" rel="noopener noreferrer"><sub><img src="/docs/assets/images/icon/kali-linux.png" width="16" height="16"></sub></a>&nbsp;Kali Linux</td>
<td align="center">all</td> <td align="center">all</td>
</tr> </tr>
<tr> <tr>

18
SECURITY.md Normal file
View File

@@ -0,0 +1,18 @@
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| all | :white_check_mark: |
## Reporting a Vulnerability
Use this section to tell people how to report a vulnerability.
Tell them where to go, how often they can expect to get an update on a
reported vulnerability, what to expect if the vulnerability is accepted or
declined, etc.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -1 +0,0 @@
<svg viewBox="0 0 519.36 293.65" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="m478.2 30.541c-1.708-.45694-3.4119-.54087-5.1767-.54087h-427.93c-6.4231.050078-12.061 4.1054-14.195 10.144-.69747 1.9633-.90029 3.9505-.90029 6.0098v202.42c.23751 8.4346 6.8365 15.012 15.194 15.033 17.519.0232 53.594-.0631 53.594-.0631l-.06358-15.665h-52.62c-.27926-1.6828-.20829-199.78.06358-200.69 1.6119-.225 425.79-.1438 426.72.07426.25653 1.5279.1824 199.65-.0982 200.69h-354.74v15.667s1.3845 0 2.0182.0232h354.25c6.3531-.0631 11.982-4.0483 14.147-10.038.69741-1.9079.89785-3.8747.89785-5.886v-202.8c-.13354-6.6996-4.6932-12.585-11.143-14.365zm-360.14 174.01v-40.513c0-.91374.25653-1.5554 1.0028-2.1347 3.129-2.4743 6.2158-5.019 9.3034-7.5448.30803-.22871.60752-.43189.99168-.71223.33308.4305.61322.78284.87185 1.1699 5.2486 7.5722 10.501 15.136 15.746 22.696 6.4361 9.3128 12.883 18.583 19.306 27.852.35674.53803.68407.94598 1.475.94598 6.7627-.0232 13.519-.0232 20.273-.0232.22361 0 .4537-.0743.80993-.15494-14.956-21.781-29.85-43.412-44.79-65.174 3.0057-3.4891 5.9134-6.8472 8.8178-10.288 2.912-3.3691 5.8136-6.7497 8.7208-10.142 2.9029-3.3839 5.7849-6.7734 8.6954-10.161 2.9045-3.3952 5.8136-6.7826 8.6851-10.168 2.8915-3.3601 5.7622-6.7219 8.8271-10.347h-1.704c-6.1202 0-12.237.03707-18.358-.0232-1.1253 0-1.835.32611-2.5775 1.1995-15.036 17.806-30.108 35.614-45.178 53.399-.19994.22776-.45973.43188-.89398.83223v-44.294c0-3.6662.0631-7.3435 0-11.012h-18.909v116.15c1.5011.2635 17.926.20969 18.939-.0631v-1.4778zm100.96 1.681c.15215-.43977.32612-.81748.45878-1.2267 3.0557-8.6814 6.1147-17.348 9.1787-26.037.50973-1.3965 1.0166-2.8008 1.4772-4.2031.18231-.58535.48083-.89161 1.0981-.81748.19994.0232.43236 0 .6355 0h43.136c3.8993 10.803 7.7716 21.529 11.629 32.255h20.193c-14.567-39.029-29.072-77.903-43.549-116.77h-20.649c-.1327.25469-.2301.44024-.28254.61435-14.377 38.551-28.737 77.119-43.109 115.66-.0631.0631-.0631.18231-.0631.25654v.1234c0 .0501.0631.0743.0743.1322h19.734zm17.457-50.036c3.9768-11.515 8.0101-22.979 11.885-34.526 1.5549-4.6404 2.7269-9.4269 4.0507-14.159.11181-.3586.18231-.7185.33309-1.2583.19994.30524.35627.49141.41055.69246 3.1587 11.794 7.4766 23.237 11.398 34.807 1.6288 4.8139 3.3157 9.5985 4.9739 14.415.12618.43097.25097.86203.40405 1.3949h-33.882c.15123-.50194.27927-.93364.42586-1.3654zm102.24-57.278c0-3.0077.11083-5.988-.0868-8.9671h-18.675c-.31545 1.4523-.23845 115.33.0631 116.29h68.021v-16.18h-32.812c-2.7584 0-5.5385.0232-8.2848 0-2.7069-.0232-5.4025.0993-8.2101-.0631v-91.058zm81.201-8.2513c0-.18045 0-.33029-.0626-.51752 0-.05008-.0626-.06309-.0626-.09881 0-.0232-.0749-.06309-.0749-.06309h-18.739v116.22h18.838c.0626-.19531.11047-.29922.11047-.43097v-115.11z" fill="#367bf0" fill-rule="evenodd" stroke-width="1.2274"/></svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -755,7 +755,7 @@ const mirrorsTableFilterSelectOptions = [
{ {
value: 'kali', value: 'kali',
label: 'Kali Linux', label: 'Kali Linux',
iconName: 'kali-linux.svg', iconName: 'kali-linux.png',
}, },
{ {
value: 'armbian', value: 'armbian',

View File

@@ -6,6 +6,10 @@ search:
exclude: true exclude: true
--- ---
### `2025-11-02`
* Adapted for Kylin Server to docker script [#1ddf1fb](https://github.com/SuperManito/LinuxMirrors/commit/1ddf1fb708987cf59c4ef56b0a0410caf1b8e726)
### `2025-10-12` ### `2025-10-12`
* Added support for I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c) * Added support for I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c)

View File

@@ -6,6 +6,10 @@ search:
exclude: true exclude: true
--- ---
### `2025-11-02`
* Docker 脚本新增适配 Kylin Server 操作系统 [#1ddf1fb](https://github.com/SuperManito/LinuxMirrors/commit/1ddf1fb708987cf59c4ef56b0a0410caf1b8e726)
### `2025-10-12` ### `2025-10-12`
* 新增适配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c) * 新增适配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c)

View File

@@ -6,6 +6,10 @@ search:
exclude: true exclude: true
--- ---
### `2025-11-02`
* Docker 腳本新增適配 Kylin Server 作業系統 [#1ddf1fb](https://github.com/SuperManito/LinuxMirrors/commit/1ddf1fb708987cf59c4ef56b0a0410caf1b8e726)
### `2025-10-12` ### `2025-10-12`
* 新增適配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c) * 新增適配 I18n [#bf2adc1](https://github.com/SuperManito/LinuxMirrors/commit/bf2adc1adf4f2de4820f617a23aabf247a47281c)

View File

@@ -107,7 +107,7 @@ hide:
| --- | :---: | | --- | :---: |
| <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | _813_ | | <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | _813_ |
| <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** :material-information-outline:{ title="Supports Ubuntu family derivatives, such as <code>UKylin</code>, <code>Kubuntu</code>, etc.<br/>Due to rapid iteration, not all non-LTS versions are directly supported. See documentation for details." } | _1425_ | | <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** :material-information-outline:{ title="Supports Ubuntu family derivatives, such as <code>UKylin</code>, <code>Kubuntu</code>, etc.<br/>Due to rapid iteration, not all non-LTS versions are directly supported. See documentation for details." } | _1425_ |
| <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.svg" width="16" height="16"></a> **Kali Linux** | _all_ | | <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.png" width="16" height="16"></a> **Kali Linux** | _all_ |
| <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | _1922 / LMDE 6_ | | <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | _1922 / LMDE 6_ |
| <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin** | _all_ | | <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin** | _all_ |
| <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | _all_ | | <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | _all_ |

View File

@@ -107,7 +107,7 @@ hide:
| --- | :---: | | --- | :---: |
| <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | _813_ | | <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | _813_ |
| <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** :material-information-outline:{ title="支持乌班图家族衍生操作系统,例如 <code>优麒麟</code> <code>Kubuntu</code><br/>由于迭代速度较快并不直接支持所有非 LTS 的版本,具体详见文档" } | _1425_ | | <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** :material-information-outline:{ title="支持乌班图家族衍生操作系统,例如 <code>优麒麟</code> <code>Kubuntu</code><br/>由于迭代速度较快并不直接支持所有非 LTS 的版本,具体详见文档" } | _1425_ |
| <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.svg" width="16" height="16"></a> **Kali Linux** | _all_ | | <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.png" width="16" height="16"></a> **Kali Linux** | _all_ |
| <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | _1922 / LMDE 6_ | | <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | _1922 / LMDE 6_ |
| <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin深度** | _all_ | | <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin深度** | _all_ |
| <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | _all_ | | <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | _all_ |

View File

@@ -107,7 +107,7 @@ hide:
| --- | :---: | | --- | :---: |
| <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | _813_ | | <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | _813_ |
| <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** :material-information-outline:{ title="支援烏班圖家族衍生作業系統,例如 <code>優麒麟</code> <code>Kubuntu</code><br/>由於迭代速度較快並不直接支援所有非 LTS 的版本,因此具體詳見文件" } | _1425_ | | <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** :material-information-outline:{ title="支援烏班圖家族衍生作業系統,例如 <code>優麒麟</code> <code>Kubuntu</code><br/>由於迭代速度較快並不直接支援所有非 LTS 的版本,因此具體詳見文件" } | _1425_ |
| <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.svg" width="16" height="16"></a> **Kali Linux** | _all_ | | <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.png" width="16" height="16"></a> **Kali Linux** | _all_ |
| <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | _1922 / LMDE 6_ | | <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | _1922 / LMDE 6_ |
| <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin** | _all_ | | <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin** | _all_ |
| <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | _all_ | | <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | _all_ |

View File

@@ -255,4 +255,8 @@ search:
!!! tip "This page displays only the default repository addresses provided by the script. If you can't find the one you want, don't worry—the script supports custom addresses via command options. See [Advanced Usage](../use/index.md#command-options-advanced-usage) for details." !!! tip "This page displays only the default repository addresses provided by the script. If you can't find the one you want, don't worry—the script supports custom addresses via command options. See [Advanced Usage](../use/index.md#command-options-advanced-usage) for details."
> The flag icons on this page are for quick geographic identification only and do not represent any political stance of the author. Please do not over-interpret. Statement made for clarification. ---
!!! warning "Because the information on this page may be controversial, it is recommended that you do not include this page's content in your sharing on certain social media platforms to avoid unnecessary trouble."
The flag icons on this page are for quick geographic identification only and do not represent any political stance of the author. Please do not over-interpret. Statement made for clarification.

View File

@@ -257,4 +257,8 @@ search:
!!! tip "该页面展示的均为脚本默认提供可供选择的软件源地址,如果没有找到你想使用的也没有关系,脚本支持命令选项可自定义使用,详见[高级用法](../use/index.md#命令选项高级用法)" !!! tip "该页面展示的均为脚本默认提供可供选择的软件源地址,如果没有找到你想使用的也没有关系,脚本支持命令选项可自定义使用,详见[高级用法](../use/index.md#命令选项高级用法)"
> 本页面涉及的旗帜图标仅用于快速区分地理位置,不代表作者任何的政治立场,请不要过度解读,特此声明。 ---
!!! warning "由于该页面的信息可能会引起争议,为了避免不必要的麻烦,建议不要在部分社交媒体的分享中包含此页面内容"
本页面涉及的旗帜图标仅用于快速区分地理位置,不代表作者任何的政治立场,请不要过度解读,特此声明。

View File

@@ -257,4 +257,8 @@ search:
!!! tip "該頁面顯示的皆為腳本預設提供可供選擇的軟體源位址,如果沒有找到你想使用的也沒有關係,腳本支援命令選項可自定義使用,詳見[進階用法](../use/index.md#命令選項進階用法)" !!! tip "該頁面顯示的皆為腳本預設提供可供選擇的軟體源位址,如果沒有找到你想使用的也沒有關係,腳本支援命令選項可自定義使用,詳見[進階用法](../use/index.md#命令選項進階用法)"
> 本頁面涉及的旗幟圖示僅用於快速區分地理位置,不代表作者任何的政治立場,請不要過度解讀,特此聲明。 ---
!!! warning "由於該頁面的資訊可能會引起爭議,為了避免不必要的麻煩,建議不要在部分社交媒體的分享中包含此頁面內容"
本頁面涉及的旗幟圖示僅用於快速區分地理位置,不代表作者任何的政治立場,請不要過度解讀,特此聲明。

View File

@@ -110,7 +110,7 @@ hide:
--- ---
Compatible with a number of derivative operating systems not supported by the official installation script. :material-information-outline:{ title="In addition to the systems displayed on the official website, it also supports special systems such as <code>Huawei Cloud EulerOS</code>&nbsp;&nbsp;<code>TencentOS Server</code>&nbsp;&nbsp;<code>Alibaba Cloud Linux</code>" } Compatible with a number of derivative operating systems not supported by the official installation script. :material-information-outline:{ title="In addition to the operating systems shown on the official website homepage, it also supports special systems such as those shown below. </br><ul><li>Kylin Server</li><li>Huawei Cloud EulerOS</li><li>TencentOS Server</li><li>Alibaba Cloud Linux</li></ul>" }
- :material-weight-lifter:{ .lg .middle } __Powerful and unparalleled__ - :material-weight-lifter:{ .lg .middle } __Powerful and unparalleled__
@@ -282,6 +282,7 @@ Command options(name/meaning/value):
--only-registry \ --only-registry \
--source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io" --source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io"
``` ```
> The option value can specify multiple addresses, which must be separated by commas.
=== "Manual Replacement" === "Manual Replacement"

View File

@@ -110,7 +110,7 @@ hide:
--- ---
兼容大量不受官方安装脚本支持的衍生操作系统 :material-information-outline:{ title="除官网首页展示的系统外还支持 <code>Huawei Cloud EulerOS</code>&nbsp;&nbsp;<code>TencentOS Server</code>&nbsp;&nbsp;<code>Alibaba Cloud Linux</code> 等特制系统" } 兼容大量不受官方安装脚本支持的衍生操作系统 :material-information-outline:{ title="除官网首页展示的系统外还支持下方等特制系统</br><ul><li>Kylin Server</li><li>Huawei Cloud EulerOS</li><li>TencentOS Server</li><li>Alibaba Cloud Linux</li></ul>" }
- :material-weight-lifter:{ .lg .middle } __功能强大、无与伦比__ - :material-weight-lifter:{ .lg .middle } __功能强大、无与伦比__
@@ -282,6 +282,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --help
--only-registry \ --only-registry \
--source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io" --source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io"
``` ```
> 选项值可以指定多个地址,需使用英文逗号进行分割
=== "手动替换" === "手动替换"

View File

@@ -110,7 +110,7 @@ hide:
--- ---
相容於大量不受官方安裝腳本支援的衍生作業系統 :material-information-outline:{ title="除官網首頁展示的系統外支援 <code>Huawei Cloud EulerOS</code>&nbsp;&nbsp;<code>TencentOS Server</code>&nbsp;&nbsp;<code>Alibaba Cloud Linux</code> 等特製系統" } 相容於大量不受官方安裝腳本支援的衍生作業系統 :material-information-outline:{ title="除官網首頁展示的系統外支援下方等特製系統</br><ul><li>Kylin Server</li><li>Huawei Cloud EulerOS</li><li>TencentOS Server</li><li>Alibaba Cloud Linux</li></ul>" }
- :material-weight-lifter:{ .lg .middle } __功能強大、無與倫比__ - :material-weight-lifter:{ .lg .middle } __功能強大、無與倫比__
@@ -282,6 +282,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/docker.sh) --zh-hant --help
--only-registry \ --only-registry \
--source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io" --source-registry "docker.1ms.run,docker.1panel.live,docker.m.daocloud.io"
``` ```
> 選項值可以指定多個位址,需使用英文逗號分割
=== "手動替換" === "手動替換"

View File

@@ -16,6 +16,10 @@
<img src="/assets/images/sponsor/1ms-light.svg#only-light" alt="毫秒镜像" style="width: 56% !important" /> <img src="/assets/images/sponsor/1ms-light.svg#only-light" alt="毫秒镜像" style="width: 56% !important" />
<img src="/assets/images/sponsor/1ms-dark.svg#only-dark" alt="毫秒镜像" style="width: 56% !important" /> <img src="/assets/images/sponsor/1ms-dark.svg#only-dark" alt="毫秒镜像" style="width: 56% !important" />
</a> </a>
<a class="sponsor-item sponsor-item-flex" target="_blank" rel="noopener noreferrer" href="https://www.dkdun.cn/aff/VAWGETUL" title="专注独立IP高频VPSR9/i9系列定制">
<!-- 27 11 1 -->
<img src="/assets/images/sponsor/linfengyun.png" alt="林枫云" />
</a>
<a class="sponsor-item sponsor-item-flex" target="_blank" rel="noopener noreferrer" href="https://www.bsncdn.org" title="香港日本高防CDN免实名/免备案,轻松阻断 DDOS / CC 攻击"> <a class="sponsor-item sponsor-item-flex" target="_blank" rel="noopener noreferrer" href="https://www.bsncdn.org" title="香港日本高防CDN免实名/免备案,轻松阻断 DDOS / CC 攻击">
<!-- 26 08 17 --> <!-- 26 08 17 -->
<img src="/assets/images/sponsor/businiaocdn.png" alt="不死鸟CDN" /> <img src="/assets/images/sponsor/businiaocdn.png" alt="不死鸟CDN" />
@@ -43,11 +47,6 @@
<!-- 25 12 23 --> <!-- 25 12 23 -->
<img src="/assets/images/sponsor/sutuoyun.svg" alt="速拓云" style="width: 58% !important" /> <img src="/assets/images/sponsor/sutuoyun.svg" alt="速拓云" style="width: 58% !important" />
</a> </a>
<a class="sponsor-item sponsor-item-flex" target="_blank" rel="noopener noreferrer" href="https://www.dkdun.cn/aff/VAWGETUL" title="专注独立IP高频VPSR9/i9系列定制">
<!-- 25 10 13 -->
<img src="/assets/images/sponsor/linfengyun-light.png#only-light" alt="林枫云" />
<img src="/assets/images/sponsor/linfengyun-dark.png#only-dark" alt="林枫云" />
</a>
<a class="sponsor-item sponsor-item-flex" target="_blank" rel="noopener noreferrer" href="https://arcadia.cool" title="一站式代码运维平台"> <a class="sponsor-item sponsor-item-flex" target="_blank" rel="noopener noreferrer" href="https://arcadia.cool" title="一站式代码运维平台">
<img src="/assets/images/sponsor/arcadia-light.png#only-light" alt="Arcadia" style="width: 57% !important" /> <img src="/assets/images/sponsor/arcadia-light.png#only-light" alt="Arcadia" style="width: 57% !important" />
<img src="/assets/images/sponsor/arcadia-dark.png#only-dark" alt="Arcadia" style="width: 57% !important" /> <img src="/assets/images/sponsor/arcadia-dark.png#only-dark" alt="Arcadia" style="width: 57% !important" />

View File

@@ -18,15 +18,19 @@
<img src="/assets/images/sponsor/1panel.png" alt="1Panel" style="filter: grayscale(1) invert(0.6)" /> <img src="/assets/images/sponsor/1panel.png" alt="1Panel" style="filter: grayscale(1) invert(0.6)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.duotuyun.com" title="智能化防护,每一次连接皆在安全之下"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.duotuyun.com" title="智能化防护,每一次连接皆在安全之下">
<img src="/assets/images/sponsor/duotuyun-light.svg#only-light" alt="多途云" style="filter: grayscale(1) invert(0.6)" /> <img src="/assets/images/sponsor/duotuyun-light.svg#only-light" alt="多途云" style="filter: grayscale(1) invert(0.5)" />
<img src="/assets/images/sponsor/duotuyun-dark.svg#only-dark" alt="多途云" style="filter: grayscale(1) invert(0.4)" /> <img src="/assets/images/sponsor/duotuyun-dark.svg#only-dark" alt="多途云" style="filter: grayscale(1) invert(0.5)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://1ms.run?utm_source=linuxmirrors" title="专为中国开发者提供镜像极速下载服务,告别 Docker 镜像拉取慢!</br>支持 Docker Hub、gcr.io、registry.k8s.io 等主流镜像仓库。"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://1ms.run?utm_source=linuxmirrors" title="专为中国开发者提供镜像极速下载服务,告别 Docker 镜像拉取慢!</br>支持 Docker Hub、gcr.io、registry.k8s.io 等主流镜像仓库。">
<img src="/assets/images/sponsor/1ms-light.svg#only-light" alt="毫秒镜像" style="filter: grayscale(1) invert(0.5)" /> <img src="/assets/images/sponsor/1ms-light.svg#only-light" alt="毫秒镜像" style="filter: grayscale(1) invert(0.5)" />
<img src="/assets/images/sponsor/1ms-dark.svg#only-dark" alt="毫秒镜像" style="filter: grayscale(1) invert(0.4)" /> <img src="/assets/images/sponsor/1ms-dark.svg#only-dark" alt="毫秒镜像" style="filter: grayscale(1) invert(0.4)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.dkdun.cn/aff/VAWGETUL" title="专注独立IP高频VPSR9/i9系列定制">
<img src="/assets/images/sponsor/linfengyun.png#only-light" alt="林枫云" style="filter: grayscale(1) invert(0.7)" />
<img src="/assets/images/sponsor/linfengyun.png#only-dark" alt="林枫云" style="filter: grayscale(1) invert(0.5)" />
</a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.bsncdn.org" title="香港日本高防CDN免实名/免备案,轻松阻断 DDOS / CC 攻击"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.bsncdn.org" title="香港日本高防CDN免实名/免备案,轻松阻断 DDOS / CC 攻击">
<img src="/assets/images/sponsor/businiaocdn.png#only-light" alt="不死鸟CDN" style="filter: grayscale(1) brightness(1.1)" /> <img src="/assets/images/sponsor/businiaocdn.png#only-light" alt="不死鸟CDN" style="filter: grayscale(1) brightness(1)" />
<img src="/assets/images/sponsor/businiaocdn.png#only-dark" alt="不死鸟CDN" style="filter: grayscale(1) brightness(1.4)" /> <img src="/assets/images/sponsor/businiaocdn.png#only-dark" alt="不死鸟CDN" style="filter: grayscale(1) brightness(1.4)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.qingyeyun.com" title="香港1T高防自助防火墙无视CC大带宽回国优化线路"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.qingyeyun.com" title="香港1T高防自助防火墙无视CC大带宽回国优化线路">
@@ -42,16 +46,13 @@
<img src="/assets/images/sponsor/laikayun-dark.png#only-dark" alt="莱卡云" style="filter: grayscale(1) invert(0.3)" /> <img src="/assets/images/sponsor/laikayun-dark.png#only-dark" alt="莱卡云" style="filter: grayscale(1) invert(0.3)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://yunyoo.cc/aff/KPTJHNWM" title="全球高性价比云服务器低至15.99元起"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://yunyoo.cc/aff/KPTJHNWM" title="全球高性价比云服务器低至15.99元起">
<img src="/assets/images/sponsor/yunyoo.png" alt="云悠YUNYOO" /> <img src="/assets/images/sponsor/yunyoo.png#only-light" alt="云悠YUNYOO" style="filter: grayscale(1) brightness(1)" />
<img src="/assets/images/sponsor/yunyoo.png#only-dark" alt="云悠YUNYOO" style="filter: grayscale(1) brightness(1.1)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.sutuoyun.com" title="国内高防云28元/月香港云100M优化线路9元/月"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.sutuoyun.com" title="国内高防云28元/月香港云100M优化线路9元/月">
<img src="/assets/images/sponsor/sutuoyun.svg#only-light" alt="速拓云" /> <img src="/assets/images/sponsor/sutuoyun.svg#only-light" alt="速拓云" />
<img src="/assets/images/sponsor/sutuoyun.svg#only-dark" alt="速拓云" style="filter: grayscale(1) invert(0.6)" /> <img src="/assets/images/sponsor/sutuoyun.svg#only-dark" alt="速拓云" style="filter: grayscale(1) invert(0.6)" />
</a> </a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://www.dkdun.cn/aff/VAWGETUL" title="专注独立IP高频VPSR9/i9系列定制">
<img src="/assets/images/sponsor/linfengyun-light.png#only-light" alt="林枫云" style="filter: grayscale(1) invert(0.5)" />
<img src="/assets/images/sponsor/linfengyun-dark.png#only-dark" alt="林枫云" style="filter: grayscale(1) invert(0.4)" />
</a>
<a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://arcadia.cool" title="一站式代码运维平台"> <a class="sponsor-item sponsor-item-toc" target="_blank" rel="noopener noreferrer" href="https://arcadia.cool" title="一站式代码运维平台">
<img src="/assets/images/sponsor/arcadia-light.png#only-light" alt="Arcadia" style="padding: 0 2px; filter: grayscale(1) invert(0.5)" /> <img src="/assets/images/sponsor/arcadia-light.png#only-light" alt="Arcadia" style="padding: 0 2px; filter: grayscale(1) invert(0.5)" />
<img src="/assets/images/sponsor/arcadia-dark.png#only-dark" alt="Arcadia" style="padding: 0 2px; filter: grayscale(1) invert(0.4)" /> <img src="/assets/images/sponsor/arcadia-dark.png#only-dark" alt="Arcadia" style="padding: 0 2px; filter: grayscale(1) invert(0.4)" />

View File

@@ -444,7 +444,7 @@ hide:
- From Developer's Perspective - From Developer's Perspective
This project aims to develop a universal repository switching script from the perspective of an operations and maintenance tool, rather than a tool that specifically addresses software repository requirements. The script's default behavior should be suitable for the majority of users. As an operations and maintenance tool, it should have a clear functional positioning. As a script, its pros and cons should be carefully considered from multiple perspectives, including scalability, practicality, and portability. The choice of software repository should be fully vested in the user. This project aims to develop a universal repository switching script from the perspective of an operations and maintenance tool, rather than a tool that specifically addresses software repository requirements. The script's default behavior should be suitable for the majority of users. As an operations and maintenance tool, it should have a clear functional positioning. As a script, its pros and cons should be carefully considered from multiple perspectives, including scalability,and practicality. The choice of software repository should be fully vested in the user.
--- ---
@@ -545,7 +545,7 @@ Below are some advanced usage examples
| --- | :---: | | --- | :---: |
| <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | `debian` `debian-archive` | | <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | `debian` `debian-archive` |
| <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** | `ubuntu` `ubuntu-ports` | | <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** | `ubuntu` `ubuntu-ports` |
| <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.svg" width="16" height="16"></a> **Kali Linux** | `kali` | | <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.png" width="16" height="16"></a> **Kali Linux** | `kali` |
| <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | `linuxmint` `ubuntu` `ubuntu-ports` `debian` | | <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | `linuxmint` `ubuntu` `ubuntu-ports` `debian` |
| <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin深度** | `deepin` | | <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin深度** | `deepin` |
| <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | `ubuntu` `ubuntu-ports` | | <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | `ubuntu` `ubuntu-ports` |

View File

@@ -446,7 +446,7 @@ hide:
- 开发者角度 - 开发者角度
本项目站在运维工具的角度致力于开发一个通用的换源脚本,而不是一个解决软件源需求的具体化工具,要使脚本的默认行为适用于大多数用户群体。作为运维工具要有明确的功能定位,作为脚本要从扩展性、实用性、可移植性等多个方面去衡量利弊,软件源的选择权应该完全交给用户。 本项目站在运维工具的角度致力于开发一个通用的换源脚本,而不是一个解决软件源需求的具体化工具,要使脚本的默认行为适用于大多数用户群体。作为运维工具要有明确的功能定位,作为脚本要从扩展性、实用性等多个方面去衡量利弊,软件源的选择权应该完全交给用户。
--- ---
@@ -547,7 +547,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help
| --- | :---: | | --- | :---: |
| <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | `debian` `debian-archive` | | <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | `debian` `debian-archive` |
| <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** | `ubuntu` `ubuntu-ports` | | <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** | `ubuntu` `ubuntu-ports` |
| <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.svg" width="16" height="16"></a> **Kali Linux** | `kali` | | <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.png" width="16" height="16"></a> **Kali Linux** | `kali` |
| <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | `linuxmint` `ubuntu` `ubuntu-ports` `debian` | | <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | `linuxmint` `ubuntu` `ubuntu-ports` `debian` |
| <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin深度** | `deepin` | | <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin深度** | `deepin` |
| <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | `ubuntu` `ubuntu-ports` | | <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | `ubuntu` `ubuntu-ports` |

View File

@@ -446,7 +446,7 @@ hide:
- 開發者角度 - 開發者角度
本專案站在維運工具的角度致力於開發一個通用的換源腳本,而不是一個解決軟體源需求的具體化工具,要使腳本的預設行為適用於大多數使用者群體。作為維運工具要有明確的功能定位,作為腳本要從擴展性、實用性、可移植性等多個方面去衡量利弊,軟體源的選擇權應該完全交給使用者。 本專案站在維運工具的角度致力於開發一個通用的換源腳本,而不是一個解決軟體源需求的具體化工具,要使腳本的預設行為適用於大多數使用者群體。作為維運工具要有明確的功能定位,作為腳本要從擴展性、實用性等多個方面去衡量利弊,軟體源的選擇權應該完全交給使用者。
--- ---
@@ -547,7 +547,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --zh-hant --help
| --- | :---: | | --- | :---: |
| <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | `debian` `debian-archive` | | <a href="https://www.debian.org" title="https://www.debian.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> **Debian** | `debian` `debian-archive` |
| <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** | `ubuntu` `ubuntu-ports` | | <a href="https://ubuntu.com" title="https://ubuntu.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/ubuntu.svg" width="16" height="16" style="vertical-align: -0.15em"></a> **Ubuntu** | `ubuntu` `ubuntu-ports` |
| <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.svg" width="16" height="16"></a> **Kali Linux** | `kali` | | <a href="https://www.kali.org" title="https://www.kali.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/kali-linux.png" width="16" height="16"></a> **Kali Linux** | `kali` |
| <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | `linuxmint` `ubuntu` `ubuntu-ports` `debian` | | <a href="https://linuxmint.com" title="https://linuxmint.com" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/linux-mint.ico" width="16" height="16" style="vertical-align: -0.2em"></a> **Linux Mint** | `linuxmint` `ubuntu` `ubuntu-ports` `debian` |
| <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin** | `deepin` | | <a href="https://www.deepin.org" title="https://www.deepin.org" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/deepin.png" width="16" height="16" style="vertical-align: -0.2em"></a> **Deepin** | `deepin` |
| <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | `ubuntu` `ubuntu-ports` | | <a href="https://zorin.com/os" title="https://zorin.com/os" target="_blank" rel="noopener noreferrer"><img src="/assets/images/icon/zorin-os.png" width="16" height="16" style="vertical-align: -0.15em"></a> **Zorin OS** | `ubuntu` `ubuntu-ports` |