mirror of
				https://gitee.com/SuperManito/LinuxMirrors
				synced 2025-11-04 16:30:26 +08:00 
			
		
		
		
	新增支持部分云计算厂商开源镜像站内网地址
This commit is contained in:
		
							
								
								
									
										119
									
								
								ChangeMirrors.sh
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								ChangeMirrors.sh
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
## Author: SuperManito
 | 
					## Author: SuperManito
 | 
				
			||||||
## Modified: 2022-02-25
 | 
					## Modified: 2022-03-17
 | 
				
			||||||
## License: GPL-2.0
 | 
					## License: GPL-2.0
 | 
				
			||||||
## Github: https://github.com/SuperManito/LinuxMirrors
 | 
					## Github: https://github.com/SuperManito/LinuxMirrors
 | 
				
			||||||
## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
					## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
				
			||||||
@@ -91,7 +91,7 @@ function EnvJudgment() {
 | 
				
			|||||||
            if [ $? -eq 0 ]; then
 | 
					            if [ $? -eq 0 ]; then
 | 
				
			||||||
                clear
 | 
					                clear
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                echo -e "\n${ERROR} lsb-release 软件包安装失败"
 | 
					                echo -e "\n$ERROR lsb-release 软件包安装失败"
 | 
				
			||||||
                echo -e "\n本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统一般系统自带,请自行安装后重新执行脚本!\n"
 | 
					                echo -e "\n本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统一般系统自带,请自行安装后重新执行脚本!\n"
 | 
				
			||||||
                exit
 | 
					                exit
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
@@ -156,7 +156,7 @@ function EnvJudgment() {
 | 
				
			|||||||
function PermissionJudgment() {
 | 
					function PermissionJudgment() {
 | 
				
			||||||
    ## 权限判定:
 | 
					    ## 权限判定:
 | 
				
			||||||
    if [ $UID -ne 0 ]; then
 | 
					    if [ $UID -ne 0 ]; then
 | 
				
			||||||
        echo -e "\n${ERROR} Permission no enough, please use user ROOT! \n"
 | 
					        echo -e "\n$ERROR Permission no enough, please use user ROOT! \n"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -165,7 +165,7 @@ function PermissionJudgment() {
 | 
				
			|||||||
function CloseFirewall() {
 | 
					function CloseFirewall() {
 | 
				
			||||||
    systemctl status firewalld | grep running -q
 | 
					    systemctl status firewalld | grep running -q
 | 
				
			||||||
    if [ $? -eq 0 ]; then
 | 
					    if [ $? -eq 0 ]; then
 | 
				
			||||||
        CHOICE_C=$(echo -e "\n${BOLD}└ 是否关闭防火墙和 SELINUX? [Y/n] ${PLAIN}")
 | 
					        CHOICE_C=$(echo -e "\n${BOLD}└─ 是否关闭防火墙和 SELINUX? [Y/n] ${PLAIN}")
 | 
				
			||||||
        read -p "${CHOICE_C}" INPUT
 | 
					        read -p "${CHOICE_C}" INPUT
 | 
				
			||||||
        [ -z ${INPUT} ] && INPUT=Y
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
        case $INPUT in
 | 
					        case $INPUT in
 | 
				
			||||||
@@ -175,7 +175,7 @@ function CloseFirewall() {
 | 
				
			|||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        [Nn] | [Nn][Oo]) ;;
 | 
					        [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
            echo -e "\n${WARN} 输入错误,默认不关闭!"
 | 
					            echo -e "\n$WARN 输入错误,默认不关闭!"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
@@ -203,7 +203,7 @@ function BackupMirrors() {
 | 
				
			|||||||
        ## /etc/apt/sources.list
 | 
					        ## /etc/apt/sources.list
 | 
				
			||||||
        if [ -s $DebianSourceList ]; then
 | 
					        if [ -s $DebianSourceList ]; then
 | 
				
			||||||
            if [ -s $DebianSourceListBackup ]; then
 | 
					            if [ -s $DebianSourceListBackup ]; then
 | 
				
			||||||
                CHOICE_BACKUP1=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 list 源文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
					                CHOICE_BACKUP1=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 list 源文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
				
			||||||
                read -p "${CHOICE_BACKUP1}" INPUT
 | 
					                read -p "${CHOICE_BACKUP1}" INPUT
 | 
				
			||||||
                [ -z ${INPUT} ] && INPUT=Y
 | 
					                [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
                case $INPUT in
 | 
					                case $INPUT in
 | 
				
			||||||
@@ -212,12 +212,12 @@ function BackupMirrors() {
 | 
				
			|||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                [Nn] | [Nn][Oo]) ;;
 | 
					                [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
                *)
 | 
					                *)
 | 
				
			||||||
                    echo -e "\n${WARN} 输入错误,默认不覆盖!"
 | 
					                    echo -e "\n$WARN 输入错误,默认不覆盖!"
 | 
				
			||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                esac
 | 
					                esac
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                cp -rf $DebianSourceList $DebianSourceListBackup >/dev/null 2>&1
 | 
					                cp -rf $DebianSourceList $DebianSourceListBackup >/dev/null 2>&1
 | 
				
			||||||
                echo -e "\n${COMPLETE} 已备份原有 list 源文件至 $DebianSourceListBackup"
 | 
					                echo -e "\n$COMPLETE 已备份原有 list 源文件至 $DebianSourceListBackup"
 | 
				
			||||||
                sleep 1s
 | 
					                sleep 1s
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
@@ -228,7 +228,7 @@ function BackupMirrors() {
 | 
				
			|||||||
        ## /etc/apt/sources.list.d
 | 
					        ## /etc/apt/sources.list.d
 | 
				
			||||||
        if [ -d $DebianExtendListDir ] && [ ${VERIFICATION_FILES} -eq 0 ]; then
 | 
					        if [ -d $DebianExtendListDir ] && [ ${VERIFICATION_FILES} -eq 0 ]; then
 | 
				
			||||||
            if [ -d $DebianExtendListDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then
 | 
					            if [ -d $DebianExtendListDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then
 | 
				
			||||||
                CHOICE_BACKUP2=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 list 第三方源文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
					                CHOICE_BACKUP2=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 list 第三方源文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
				
			||||||
                read -p "${CHOICE_BACKUP2}" INPUT
 | 
					                read -p "${CHOICE_BACKUP2}" INPUT
 | 
				
			||||||
                [ -z ${INPUT} ] && INPUT=Y
 | 
					                [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
                case $INPUT in
 | 
					                case $INPUT in
 | 
				
			||||||
@@ -237,13 +237,13 @@ function BackupMirrors() {
 | 
				
			|||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                [Nn] | [Nn][Oo]) ;;
 | 
					                [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
                *)
 | 
					                *)
 | 
				
			||||||
                    echo -e "\n${WARN} 输入错误,默认不覆盖!"
 | 
					                    echo -e "\n$WARN 输入错误,默认不覆盖!"
 | 
				
			||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                esac
 | 
					                esac
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                [ -d $DebianExtendListDirBackup ] || mkdir -p $DebianExtendListDirBackup
 | 
					                [ -d $DebianExtendListDirBackup ] || mkdir -p $DebianExtendListDirBackup
 | 
				
			||||||
                cp -rf $DebianExtendListDir/* $DebianExtendListDirBackup >/dev/null 2>&1
 | 
					                cp -rf $DebianExtendListDir/* $DebianExtendListDirBackup >/dev/null 2>&1
 | 
				
			||||||
                echo -e "${COMPLETE} 已备份原有 list 第三方源文件至 $DebianExtendListDirBackup 目录"
 | 
					                echo -e "$COMPLETE 已备份原有 list 第三方源文件至 $DebianExtendListDirBackup 目录"
 | 
				
			||||||
                sleep 1s
 | 
					                sleep 1s
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
@@ -251,7 +251,7 @@ function BackupMirrors() {
 | 
				
			|||||||
        ## /etc/yum.repos.d
 | 
					        ## /etc/yum.repos.d
 | 
				
			||||||
        if [ ${VERIFICATION_FILES} -eq 0 ]; then
 | 
					        if [ ${VERIFICATION_FILES} -eq 0 ]; then
 | 
				
			||||||
            if [ -d $RedHatReposDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then
 | 
					            if [ -d $RedHatReposDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then
 | 
				
			||||||
                CHOICE_BACKUP3=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 repo 源文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
					                CHOICE_BACKUP3=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 repo 源文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
				
			||||||
                read -p "${CHOICE_BACKUP3}" INPUT
 | 
					                read -p "${CHOICE_BACKUP3}" INPUT
 | 
				
			||||||
                [ -z ${INPUT} ] && INPUT=Y
 | 
					                [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
                case $INPUT in
 | 
					                case $INPUT in
 | 
				
			||||||
@@ -260,13 +260,13 @@ function BackupMirrors() {
 | 
				
			|||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                [Nn] | [Nn][Oo]) ;;
 | 
					                [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
                *)
 | 
					                *)
 | 
				
			||||||
                    echo -e "\n${WARN} 输入错误,默认不覆盖!"
 | 
					                    echo -e "\n$WARN 输入错误,默认不覆盖!"
 | 
				
			||||||
                    ;;
 | 
					                    ;;
 | 
				
			||||||
                esac
 | 
					                esac
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                [ -d $RedHatReposDirBackup ] || mkdir -p $RedHatReposDirBackup
 | 
					                [ -d $RedHatReposDirBackup ] || mkdir -p $RedHatReposDirBackup
 | 
				
			||||||
                cp -rf $RedHatReposDir/* $RedHatReposDirBackup >/dev/null 2>&1
 | 
					                cp -rf $RedHatReposDir/* $RedHatReposDirBackup >/dev/null 2>&1
 | 
				
			||||||
                echo -e "\n${COMPLETE} 已备份原有 repo 源文件至 $RedHatReposDirBackup 目录"
 | 
					                echo -e "\n$COMPLETE 已备份原有 repo 源文件至 $RedHatReposDirBackup 目录"
 | 
				
			||||||
                sleep 1s
 | 
					                sleep 1s
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
@@ -308,9 +308,9 @@ function ChangeMirrors() {
 | 
				
			|||||||
    esac
 | 
					    esac
 | 
				
			||||||
    VERIFICATION_SOURCESYNC=$?
 | 
					    VERIFICATION_SOURCESYNC=$?
 | 
				
			||||||
    if [ ${VERIFICATION_SOURCESYNC} -eq 0 ]; then
 | 
					    if [ ${VERIFICATION_SOURCESYNC} -eq 0 ]; then
 | 
				
			||||||
        echo -e "\n${SUCCESS} 软件源更换完毕"
 | 
					        echo -e "\n$COMPLETE 软件源更换完毕"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        echo -e "\n${ERROR} 软件源${SYNC_TXT}失败\n"
 | 
					        echo -e "\n$ERROR 软件源${SYNC_TXT}失败\n"
 | 
				
			||||||
        echo -e "请再次执行脚本并更换软件源后进行尝试,如果仍然${SYNC_TXT}失败那么可能由以下原因导致"
 | 
					        echo -e "请再次执行脚本并更换软件源后进行尝试,如果仍然${SYNC_TXT}失败那么可能由以下原因导致"
 | 
				
			||||||
        echo -e "1. 网络问题:例如网络异常、网络间歇式中断、由地区影响的网络因素等"
 | 
					        echo -e "1. 网络问题:例如网络异常、网络间歇式中断、由地区影响的网络因素等"
 | 
				
			||||||
        echo -e "2. 软件源问题:所选镜像站正在维护,或者出现罕见的少数文件同步出错导致软件源${SYNC_TXT}命令执行后返回错误状态"
 | 
					        echo -e "2. 软件源问题:所选镜像站正在维护,或者出现罕见的少数文件同步出错导致软件源${SYNC_TXT}命令执行后返回错误状态"
 | 
				
			||||||
@@ -321,7 +321,7 @@ function ChangeMirrors() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 更新软件包
 | 
					## 更新软件包
 | 
				
			||||||
function UpgradeSoftware() {
 | 
					function UpgradeSoftware() {
 | 
				
			||||||
    CHOICE_B=$(echo -e "\n${BOLD}└ 是否更新软件包? [Y/n] ${PLAIN}")
 | 
					    CHOICE_B=$(echo -e "\n${BOLD}└─ 是否更新软件包? [Y/n] ${PLAIN}")
 | 
				
			||||||
    read -p "${CHOICE_B}" INPUT
 | 
					    read -p "${CHOICE_B}" INPUT
 | 
				
			||||||
    [ -z ${INPUT} ] && INPUT=Y
 | 
					    [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
    case $INPUT in
 | 
					    case $INPUT in
 | 
				
			||||||
@@ -335,7 +335,7 @@ function UpgradeSoftware() {
 | 
				
			|||||||
            yum update -y
 | 
					            yum update -y
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
        CHOICE_C=$(echo -e "\n${BOLD}└ 是否清理已下载的软件包缓存? [Y/n] ${PLAIN}")
 | 
					        CHOICE_C=$(echo -e "\n${BOLD}└─ 是否清理已下载的软件包缓存? [Y/n] ${PLAIN}")
 | 
				
			||||||
        read -p "${CHOICE_C}" INPUT
 | 
					        read -p "${CHOICE_C}" INPUT
 | 
				
			||||||
        [ -z ${INPUT} ] && INPUT=Y
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
        case $INPUT in
 | 
					        case $INPUT in
 | 
				
			||||||
@@ -348,17 +348,17 @@ function UpgradeSoftware() {
 | 
				
			|||||||
                yum clean packages -y >/dev/null 2>&1
 | 
					                yum clean packages -y >/dev/null 2>&1
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            echo -e "\n${COMPLETE} 清理完毕"
 | 
					            echo -e "\n$COMPLETE 清理完毕"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        [Nn] | [Nn][Oo]) ;;
 | 
					        [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
            echo -e "\n${WARN} 输入错误,默认不清理!"
 | 
					            echo -e "\n$WARN 输入错误,默认不清理!"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    [Nn] | [Nn][Oo]) ;;
 | 
					    [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,默认不更新!"
 | 
					        echo -e "\n$WARN 输入错误,默认不更新!"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -491,6 +491,55 @@ function EPELMirrors() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 选择国内源
 | 
					## 选择国内源
 | 
				
			||||||
function ChooseMirrors() {
 | 
					function ChooseMirrors() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 云计算厂商的软件源
 | 
				
			||||||
 | 
					    ## 分外网(公网)地址和内网地址,内网地址仅面向云计算厂商云服务器用户使用
 | 
				
			||||||
 | 
					    ## 内网地址不支持使用 HTTPS 协议
 | 
				
			||||||
 | 
					    function Cloud_Computing_Vendors_Mirrors() {
 | 
				
			||||||
 | 
					        ## 公网地址
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					        1)
 | 
				
			||||||
 | 
					            Extranet="mirrors.aliyun.com"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        2)
 | 
				
			||||||
 | 
					            Extranet="mirrors.cloud.tencent.com"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        3)
 | 
				
			||||||
 | 
					            Extranet="repo.huaweicloud.com"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					        ## 内网地址
 | 
				
			||||||
 | 
					        case $1 in
 | 
				
			||||||
 | 
					        1)
 | 
				
			||||||
 | 
					            Intranet="mirrors.cloud.aliyuncs.com"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        2)
 | 
				
			||||||
 | 
					            Intranet="mirrors.tencentyun.com"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        3)
 | 
				
			||||||
 | 
					            Intranet="mirrors.myhuaweicloud.com"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        CHOICE_A_TMP=$(echo -e "\n  ${BOLD}└─ 是否使用公网地址? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					        read -p "${CHOICE_A_TMP}" INPUT
 | 
				
			||||||
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
 | 
					        case $INPUT in
 | 
				
			||||||
 | 
					        [Yy] | [Yy][Ee][Ss])
 | 
				
			||||||
 | 
					            SOURCE=${Extranet}
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        [Nn] | [Nn][Oo])
 | 
				
			||||||
 | 
					            SOURCE=${Intranet}
 | 
				
			||||||
 | 
					            echo -e "\n  $WARN 已切换至内网地址,仅支持云计算厂商云服务器用户使用!"
 | 
				
			||||||
 | 
					            NOT_SUPPORT_HTTPS="True"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            SOURCE=${Extranet}
 | 
				
			||||||
 | 
					            echo -e "\n$WARN 输入错误,默认使用公网地址!"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    clear
 | 
					    clear
 | 
				
			||||||
    echo -e '+---------------------------------------------------+'
 | 
					    echo -e '+---------------------------------------------------+'
 | 
				
			||||||
    echo -e '|                                                   |'
 | 
					    echo -e '|                                                   |'
 | 
				
			||||||
@@ -528,17 +577,11 @@ function ChooseMirrors() {
 | 
				
			|||||||
    echo -e "        系统时间  ${BLUE}$(date "+%Y-%m-%d %H:%M:%S")${PLAIN}"
 | 
					    echo -e "        系统时间  ${BLUE}$(date "+%Y-%m-%d %H:%M:%S")${PLAIN}"
 | 
				
			||||||
    echo -e ''
 | 
					    echo -e ''
 | 
				
			||||||
    echo -e '#####################################################'
 | 
					    echo -e '#####################################################'
 | 
				
			||||||
    CHOICE_A=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的软件源 [ 1-13 ]:${PLAIN}")
 | 
					    CHOICE_A=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的软件源 [ 1-13 ]:${PLAIN}")
 | 
				
			||||||
    read -p "${CHOICE_A}" INPUT
 | 
					    read -p "${CHOICE_A}" INPUT
 | 
				
			||||||
    case $INPUT in
 | 
					    case $INPUT in
 | 
				
			||||||
    1)
 | 
					    1 | 2 | 3)
 | 
				
			||||||
        SOURCE="mirrors.aliyun.com"
 | 
					        Cloud_Computing_Vendors_Mirrors $INPUT
 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    2)
 | 
					 | 
				
			||||||
        SOURCE="mirrors.cloud.tencent.com"
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    3)
 | 
					 | 
				
			||||||
        SOURCE="repo.huaweicloud.com"
 | 
					 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    4)
 | 
					    4)
 | 
				
			||||||
        SOURCE="mirrors.163.com"
 | 
					        SOURCE="mirrors.163.com"
 | 
				
			||||||
@@ -572,7 +615,7 @@ function ChooseMirrors() {
 | 
				
			|||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        SOURCE="mirrors.aliyun.com"
 | 
					        SOURCE="mirrors.aliyun.com"
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,将默认使用 ${BLUE}阿里云${PLAIN} 作为国内源!"
 | 
					        echo -e "\n$WARN 输入错误,将默认使用 ${BLUE}阿里云${PLAIN} 作为国内源!"
 | 
				
			||||||
        sleep 2s
 | 
					        sleep 2s
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
@@ -590,9 +633,9 @@ function ChooseMirrors() {
 | 
				
			|||||||
        VERIFICATION_EPELBACKUPFILES=$?
 | 
					        VERIFICATION_EPELBACKUPFILES=$?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [ ${VERIFICATION_EPEL} -eq 0 ]; then
 | 
					        if [ ${VERIFICATION_EPEL} -eq 0 ]; then
 | 
				
			||||||
            CHOICE_D=$(echo -e "\n${BOLD}└ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源? [Y/n] ${PLAIN}")
 | 
					            CHOICE_D=$(echo -e "\n  ${BOLD}└─ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源? [Y/n] ${PLAIN}")
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            CHOICE_D=$(echo -e "\n${BOLD}└ 是否安装 EPEL 扩展源? [Y/n] ${PLAIN}")
 | 
					            CHOICE_D=$(echo -e "\n  ${BOLD}└─ 是否安装 EPEL 扩展源? [Y/n] ${PLAIN}")
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        read -p "${CHOICE_D}" INPUT
 | 
					        read -p "${CHOICE_D}" INPUT
 | 
				
			||||||
        [ -z ${INPUT} ] && INPUT=Y
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
@@ -604,14 +647,17 @@ function ChooseMirrors() {
 | 
				
			|||||||
            EPEL_INSTALL="False"
 | 
					            EPEL_INSTALL="False"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
            echo -e "\n${WARN} 输入错误,默认不更换!"
 | 
					            echo -e "\n  $WARN 输入错误,默认不更换!"
 | 
				
			||||||
            EPEL_INSTALL="False"
 | 
					            EPEL_INSTALL="False"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ## 选择同步软件源所使用的 WEB 协议( HTTP:80 端口,HTTPS:443 端口)
 | 
					    ## 选择同步软件源所使用的 WEB 协议( HTTP:80 端口,HTTPS:443 端口)
 | 
				
			||||||
    CHOICE_E=$(echo -e "\n${BOLD}└ 软件源是否使用 HTTP 协议? [Y/n] ${PLAIN}")
 | 
					    if [[ ${NOT_SUPPORT_HTTPS} == "True" ]]; then
 | 
				
			||||||
 | 
					        WEB_PROTOCOL="http"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        CHOICE_E=$(echo -e "\n${BOLD}└─ 软件源是否使用 HTTP 协议? [Y/n] ${PLAIN}")
 | 
				
			||||||
        read -p "${CHOICE_E}" INPUT
 | 
					        read -p "${CHOICE_E}" INPUT
 | 
				
			||||||
        [ -z ${INPUT} ] && INPUT=Y
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
        case $INPUT in
 | 
					        case $INPUT in
 | 
				
			||||||
@@ -622,10 +668,11 @@ function ChooseMirrors() {
 | 
				
			|||||||
            WEB_PROTOCOL="https"
 | 
					            WEB_PROTOCOL="https"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,默认使用 HTTPS 协议!"
 | 
					            echo -e "\n$WARN 输入错误,默认使用 HTTPS 协议!"
 | 
				
			||||||
            WEB_PROTOCOL="https"
 | 
					            WEB_PROTOCOL="https"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ## 关闭 防火墙 和 SELINUX
 | 
					    ## 关闭 防火墙 和 SELINUX
 | 
				
			||||||
    [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ] && CloseFirewall
 | 
					    [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ] && CloseFirewall
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
## Author: SuperManito
 | 
					## Author: SuperManito
 | 
				
			||||||
## Modified: 2022-02-22
 | 
					## Modified: 2022-03-17
 | 
				
			||||||
## License: GPL-2.0
 | 
					## License: GPL-2.0
 | 
				
			||||||
## Github: https://github.com/SuperManito/LinuxMirrors
 | 
					## Github: https://github.com/SuperManito/LinuxMirrors
 | 
				
			||||||
## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
					## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
				
			||||||
@@ -159,7 +159,7 @@ function EnvJudgment() {
 | 
				
			|||||||
## 基础环境判断
 | 
					## 基础环境判断
 | 
				
			||||||
function PermissionJudgment() {
 | 
					function PermissionJudgment() {
 | 
				
			||||||
    if [ $UID -ne 0 ]; then
 | 
					    if [ $UID -ne 0 ]; then
 | 
				
			||||||
        echo -e "\n${ERROR} Permission no enough, please use user ROOT! \n"
 | 
					        echo -e "\n$ERROR Permission no enough, please use user ROOT! \n"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -202,10 +202,10 @@ function InstallationEnvironment() {
 | 
				
			|||||||
    esac
 | 
					    esac
 | 
				
			||||||
    VERIFICATION_SOURCESYNC=$?
 | 
					    VERIFICATION_SOURCESYNC=$?
 | 
				
			||||||
    if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then
 | 
					    if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then
 | 
				
			||||||
        echo -e "\n${ERROR} 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!\n"
 | 
					        echo -e "\n$ERROR 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!\n"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    echo -e "\n${SUCCESS} 软件源${SYNC_TXT}结束\n"
 | 
					    echo -e "\n$COMPLETE 软件源${SYNC_TXT}结束\n"
 | 
				
			||||||
    case ${SYSTEM_FACTIONS} in
 | 
					    case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
    Debian)
 | 
					    Debian)
 | 
				
			||||||
        apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
 | 
					        apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
 | 
				
			||||||
@@ -299,7 +299,7 @@ function DockerEngine() {
 | 
				
			|||||||
            cat $DockerVersionFile
 | 
					            cat $DockerVersionFile
 | 
				
			||||||
            echo -e '\n注:以上可供选择的安装版本由官方源提供,若系统过新可能无法安装较旧的版本'
 | 
					            echo -e '\n注:以上可供选择的安装版本由官方源提供,若系统过新可能无法安装较旧的版本'
 | 
				
			||||||
            while true; do
 | 
					            while true; do
 | 
				
			||||||
                CHOICE_F=$(echo -e "\n${BOLD}└ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n")
 | 
					                CHOICE_F=$(echo -e "\n${BOLD}└─ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n")
 | 
				
			||||||
                read -p "${CHOICE_F}" DOCKER_VERSION
 | 
					                read -p "${CHOICE_F}" DOCKER_VERSION
 | 
				
			||||||
                echo ''
 | 
					                echo ''
 | 
				
			||||||
                cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1
 | 
					                cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1
 | 
				
			||||||
@@ -309,10 +309,10 @@ function DockerEngine() {
 | 
				
			|||||||
                        rm -rf $DockerVersionFile
 | 
					                        rm -rf $DockerVersionFile
 | 
				
			||||||
                        break
 | 
					                        break
 | 
				
			||||||
                    else
 | 
					                    else
 | 
				
			||||||
                        echo -e "${ERROR} 请输入正确的版本号!"
 | 
					                        echo -e "$ERROR 请输入正确的版本号!"
 | 
				
			||||||
                    fi
 | 
					                    fi
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    echo -e "${ERROR} 输入错误请重新输入!"
 | 
					                    echo -e "$ERROR 输入错误请重新输入!"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            done
 | 
					            done
 | 
				
			||||||
            case ${SYSTEM_FACTIONS} in
 | 
					            case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
@@ -348,7 +348,7 @@ function DockerEngine() {
 | 
				
			|||||||
        if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then
 | 
					        if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then
 | 
				
			||||||
            if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
 | 
					            if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
 | 
				
			||||||
                if [ -e $DockerConfigBackup ]; then
 | 
					                if [ -e $DockerConfigBackup ]; then
 | 
				
			||||||
                    CHOICE_BACKUP=$(echo -e "\n${BOLD}└ 检测到已备份的 Docker 配置文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
					                    CHOICE_BACKUP=$(echo -e "\n${BOLD}└─ 检测到已备份的 Docker 配置文件,是否覆盖备份? [Y/n] ${PLAIN}")
 | 
				
			||||||
                    read -p "${CHOICE_BACKUP}" INPUT
 | 
					                    read -p "${CHOICE_BACKUP}" INPUT
 | 
				
			||||||
                    [ -z ${INPUT} ] && INPUT=Y
 | 
					                    [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
                    case $INPUT in
 | 
					                    case $INPUT in
 | 
				
			||||||
@@ -357,12 +357,12 @@ function DockerEngine() {
 | 
				
			|||||||
                        ;;
 | 
					                        ;;
 | 
				
			||||||
                    [Nn] | [Nn][Oo]) ;;
 | 
					                    [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
                    *)
 | 
					                    *)
 | 
				
			||||||
                        echo -e "\n${WARN} 输入错误,默认不覆盖!"
 | 
					                        echo -e "\n$WARN 输入错误,默认不覆盖!"
 | 
				
			||||||
                        ;;
 | 
					                        ;;
 | 
				
			||||||
                    esac
 | 
					                    esac
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                    cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1
 | 
					                    cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1
 | 
				
			||||||
                    echo -e "\n${COMPLETE} 已备份原有 Docker 配置文件至 $DockerConfigBackup\n"
 | 
					                    echo -e "\n$COMPLETE 已备份原有 Docker 配置文件至 $DockerConfigBackup\n"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
                sleep 2s
 | 
					                sleep 2s
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
@@ -390,7 +390,7 @@ function DockerEngine() {
 | 
				
			|||||||
        DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1)
 | 
					        DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1)
 | 
				
			||||||
        if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then
 | 
					        if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then
 | 
				
			||||||
            if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
					            if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
                echo -e "\n${SUCCESS} 检测到已安装最新版本的 Docker Engine,跳过安装"
 | 
					                echo -e "\n$COMPLETE 检测到已安装最新版本的 Docker Engine,跳过安装"
 | 
				
			||||||
                ConfigureMirror
 | 
					                ConfigureMirror
 | 
				
			||||||
                systemctl status docker | grep running -q
 | 
					                systemctl status docker | grep running -q
 | 
				
			||||||
                if [ $? -eq 0 ]; then
 | 
					                if [ $? -eq 0 ]; then
 | 
				
			||||||
@@ -403,13 +403,13 @@ function DockerEngine() {
 | 
				
			|||||||
                AuthorSignature
 | 
					                AuthorSignature
 | 
				
			||||||
                exit
 | 
					                exit
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
 | 
					                CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
            if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
					            if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
                CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本? [Y/n] ${PLAIN}")
 | 
					                CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本? [Y/n] ${PLAIN}")
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
                CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
 | 
					                CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        read -p "${CHOICE_E}" INPUT
 | 
					        read -p "${CHOICE_E}" INPUT
 | 
				
			||||||
@@ -418,12 +418,12 @@ function DockerEngine() {
 | 
				
			|||||||
        [Yy] | [Yy][Ee][Ss])
 | 
					        [Yy] | [Yy][Ee][Ss])
 | 
				
			||||||
            echo -en "\n${WORKING} 正在卸载之前的版本..."
 | 
					            echo -en "\n${WORKING} 正在卸载之前的版本..."
 | 
				
			||||||
            RemoveOldVersion
 | 
					            RemoveOldVersion
 | 
				
			||||||
            echo -e "\n\n${SUCCESS} 卸载完毕\n"
 | 
					            echo -e "\n\n$COMPLETE 卸载完毕\n"
 | 
				
			||||||
            Install
 | 
					            Install
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        [Nn] | [Nn][Oo]) ;;
 | 
					        [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
            echo -e "\n${WARN} 输入错误,默认不覆盖安装!\n"
 | 
					            echo -e "\n$WARN 输入错误,默认不覆盖安装!\n"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
        rm -rf $DockerVersionFile
 | 
					        rm -rf $DockerVersionFile
 | 
				
			||||||
@@ -461,7 +461,7 @@ function DockerCompose() {
 | 
				
			|||||||
            else
 | 
					            else
 | 
				
			||||||
                pip3 install docker-compose
 | 
					                pip3 install docker-compose
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
            [ $? -ne 0 ] && echo -e "\n${ERROR} Docker Compose 安装失败\n\n检测到当前处理器架构为 ${ARCH} ,无法绝对保证安装成功,自行查看 pip 报错原因"
 | 
					            [ $? -ne 0 ] && echo -e "\n$ERROR Docker Compose 安装失败\n\n检测到当前处理器架构为 ${ARCH} ,无法绝对保证安装成功,自行查看 pip 报错原因"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    echo -e ''
 | 
					    echo -e ''
 | 
				
			||||||
@@ -474,9 +474,9 @@ function ShowVersion() {
 | 
				
			|||||||
    VERIFICATION_DOCKER=$?
 | 
					    VERIFICATION_DOCKER=$?
 | 
				
			||||||
    [[ ${DOCKER_COMPOSE} == "True" ]] && docker-compose -v
 | 
					    [[ ${DOCKER_COMPOSE} == "True" ]] && docker-compose -v
 | 
				
			||||||
    if [ ${VERIFICATION_DOCKER} -eq 0 ]; then
 | 
					    if [ ${VERIFICATION_DOCKER} -eq 0 ]; then
 | 
				
			||||||
        echo -e "\n${SUCCESS} 安装完成"
 | 
					        echo -e "\n$COMPLETE 安装完成"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        echo -e "\n${ERROR} 安装失败"
 | 
					        echo -e "\n$ERROR 安装失败"
 | 
				
			||||||
        case ${SYSTEM_FACTIONS} in
 | 
					        case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
        Debian)
 | 
					        Debian)
 | 
				
			||||||
            echo -e "\n检查源文件: cat $DockerSourceList"
 | 
					            echo -e "\n检查源文件: cat $DockerSourceList"
 | 
				
			||||||
@@ -499,7 +499,7 @@ function ShowVersion() {
 | 
				
			|||||||
        sleep 2
 | 
					        sleep 2
 | 
				
			||||||
        systemctl status docker | grep running -q
 | 
					        systemctl status docker | grep running -q
 | 
				
			||||||
        if [ $? -ne 0 ]; then
 | 
					        if [ $? -ne 0 ]; then
 | 
				
			||||||
            echo -e "\n${ERROR} 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致"
 | 
					            echo -e "\n$ERROR 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致"
 | 
				
			||||||
            echo -e "\n请执行 systemctl start docker 或 service docker start 命令尝试启动"
 | 
					            echo -e "\n请执行 systemctl start docker 或 service docker start 命令尝试启动"
 | 
				
			||||||
            echo -e "\n官方安装文档:https://docs.docker.com/engine/install"
 | 
					            echo -e "\n官方安装文档:https://docs.docker.com/engine/install"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
@@ -556,7 +556,7 @@ function ChooseMirrors() {
 | 
				
			|||||||
    echo -e "        系统时间  $(date "+%Y-%m-%d %H:%M:%S")"
 | 
					    echo -e "        系统时间  $(date "+%Y-%m-%d %H:%M:%S")"
 | 
				
			||||||
    echo -e ''
 | 
					    echo -e ''
 | 
				
			||||||
    echo -e '#####################################################'
 | 
					    echo -e '#####################################################'
 | 
				
			||||||
    CHOICE_A=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]:${PLAIN}")
 | 
					    CHOICE_A=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]:${PLAIN}")
 | 
				
			||||||
    read -p "${CHOICE_A}" INPUT
 | 
					    read -p "${CHOICE_A}" INPUT
 | 
				
			||||||
    case $INPUT in
 | 
					    case $INPUT in
 | 
				
			||||||
    1)
 | 
					    1)
 | 
				
			||||||
@@ -585,12 +585,12 @@ function ChooseMirrors() {
 | 
				
			|||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        SOURCE="mirrors.aliyun.com/docker-ce"
 | 
					        SOURCE="mirrors.aliyun.com/docker-ce"
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,默认使用阿里云!"
 | 
					        echo -e "\n$WARN 输入错误,默认使用阿里云!"
 | 
				
			||||||
        sleep 1s
 | 
					        sleep 1s
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    ## 是否手动选择安装版本
 | 
					    ## 是否手动选择安装版本
 | 
				
			||||||
    CHOICE_C=$(echo -e "\n${BOLD}  └ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}")
 | 
					    CHOICE_C=$(echo -e "\n  ${BOLD}└─ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}")
 | 
				
			||||||
    read -p "${CHOICE_C}" INPUT
 | 
					    read -p "${CHOICE_C}" INPUT
 | 
				
			||||||
    [ -z ${INPUT} ] && INPUT=Y
 | 
					    [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
    case $INPUT in
 | 
					    case $INPUT in
 | 
				
			||||||
@@ -600,15 +600,15 @@ function ChooseMirrors() {
 | 
				
			|||||||
    [Nn] | [Nn][Oo])
 | 
					    [Nn] | [Nn][Oo])
 | 
				
			||||||
        DOCKER_VERSION_INSTALL_LATEST="False"
 | 
					        DOCKER_VERSION_INSTALL_LATEST="False"
 | 
				
			||||||
        if [ ${SOURCE} != "download.docker.com" ]; then
 | 
					        if [ ${SOURCE} != "download.docker.com" ]; then
 | 
				
			||||||
            echo -e "\n${WARN} Docker CE 源已替换成官方源!"
 | 
					            echo -e "\n$WARN Docker CE 源已替换成官方源!"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        DOCKER_VERSION_INSTALL_LATEST="True"
 | 
					        DOCKER_VERSION_INSTALL_LATEST="True"
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,默认安装最新版本!"
 | 
					        echo -e "\n$WARN 输入错误,默认安装最新版本!"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    CHOICE_B=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]:${PLAIN}")
 | 
					    CHOICE_B=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]:${PLAIN}")
 | 
				
			||||||
    read -p "${CHOICE_B}" INPUT
 | 
					    read -p "${CHOICE_B}" INPUT
 | 
				
			||||||
    case $INPUT in
 | 
					    case $INPUT in
 | 
				
			||||||
    1)
 | 
					    1)
 | 
				
			||||||
@@ -662,21 +662,21 @@ function ChooseMirrors() {
 | 
				
			|||||||
    *)
 | 
					    *)
 | 
				
			||||||
        REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com"
 | 
					        REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com"
 | 
				
			||||||
        REGISTRY_SOURCE_OFFICIAL="False"
 | 
					        REGISTRY_SOURCE_OFFICIAL="False"
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,默认使用 ${BLUE}阿里云(杭州)${PLAIN}!"
 | 
					        echo -e "\n$WARN 输入错误,默认使用 ${BLUE}阿里云(杭州)${PLAIN}!"
 | 
				
			||||||
        sleep 1s
 | 
					        sleep 1s
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    if [ -x $DockerCompose ]; then
 | 
					    if [ -x $DockerCompose ]; then
 | 
				
			||||||
        CHOICE_D=$(echo -e "\n${BOLD}└ 检测到已安装 Docker Compose ,是否覆盖安装? [Y/n] ${PLAIN}")
 | 
					        CHOICE_D=$(echo -e "\n${BOLD}└─ 检测到已安装 Docker Compose ,是否覆盖安装? [Y/n] ${PLAIN}")
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        CHOICE_D=$(echo -e "\n${BOLD}└ 是否安装 Docker Compose? [Y/n] ${PLAIN}")
 | 
					        CHOICE_D=$(echo -e "\n${BOLD}└─ 是否安装 Docker Compose? [Y/n] ${PLAIN}")
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    read -p "${CHOICE_D}" INPUT
 | 
					    read -p "${CHOICE_D}" INPUT
 | 
				
			||||||
    [ -z ${INPUT} ] && INPUT=Y
 | 
					    [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
    case $INPUT in
 | 
					    case $INPUT in
 | 
				
			||||||
    [Yy] | [Yy][Ee][Ss])
 | 
					    [Yy] | [Yy][Ee][Ss])
 | 
				
			||||||
        DOCKER_COMPOSE="True"
 | 
					        DOCKER_COMPOSE="True"
 | 
				
			||||||
        CHOICE_D1=$(echo -e "\n${BOLD}  └ 是否使用国内代理进行下载? [Y/n] ${PLAIN}")
 | 
					        CHOICE_D1=$(echo -e "\n  ${BOLD}└─ 是否使用国内代理进行下载? [Y/n] ${PLAIN}")
 | 
				
			||||||
        read -p "${CHOICE_D1}" INPUT
 | 
					        read -p "${CHOICE_D1}" INPUT
 | 
				
			||||||
        [ -z ${INPUT} ] && INPUT=Y
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
        case $INPUT in
 | 
					        case $INPUT in
 | 
				
			||||||
@@ -688,7 +688,7 @@ function ChooseMirrors() {
 | 
				
			|||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
            DOCKER_COMPOSE_DOWNLOAD_PROXY="False"
 | 
					            DOCKER_COMPOSE_DOWNLOAD_PROXY="False"
 | 
				
			||||||
            echo -e "\n${WARN} 输入错误,默认不使用!\n"
 | 
					            echo -e "\n$WARN 输入错误,默认不使用!\n"
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        esac
 | 
					        esac
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
@@ -697,7 +697,7 @@ function ChooseMirrors() {
 | 
				
			|||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        DOCKER_COMPOSE="False"
 | 
					        DOCKER_COMPOSE="False"
 | 
				
			||||||
        echo -e "\n${WARN} 输入错误,默认不安装!\n"
 | 
					        echo -e "\n$WARN 输入错误,默认不安装!\n"
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    echo -e ''
 | 
					    echo -e ''
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							@@ -103,26 +103,27 @@
 | 
				
			|||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    > `Docker CE`:Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\
 | 
					    > `Docker CE`:Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\
 | 
				
			||||||
    > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,简称镜像加速器。
 | 
					    > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> _注意:脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本和下载源,还可手动选择镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用。_
 | 
					> _注意:脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本和下载源,还可手动选择镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用。_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
***
 | 
					***
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 常见问题与帮助
 | 
					### 常见问题与帮助
 | 
				
			||||||
- 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包
 | 
					
 | 
				
			||||||
 | 
					  - 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    sudo yum install -y curl || sudo apt install -y curl
 | 
					    sudo yum install -y curl || sudo apt-get install -y curl
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包
 | 
					  - 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    sudo yum install -y wget || sudo apt install -y wget
 | 
					    sudo yum install -y wget || sudo apt-get install -y wget
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行。
 | 
					  - 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行
 | 
				
			||||||
 | 
					
 | 
				
			||||||
***
 | 
					***
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,12 +84,13 @@ bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/Chang
 | 
				
			|||||||
- 执行脚本过程中会自动备份原有源无需手动备份,期间会在终端输出多个主观选择交互内容,可按回车键快速确认
 | 
					- 执行脚本过程中会自动备份原有源无需手动备份,期间会在终端输出多个主观选择交互内容,可按回车键快速确认
 | 
				
			||||||
- 脚本支持在原有源配置错误或者不存在的情况下使用,并且可以重复使用;脚本变更的软件源默认使用 `HTTP 协议`
 | 
					- 脚本支持在原有源配置错误或者不存在的情况下使用,并且可以重复使用;脚本变更的软件源默认使用 `HTTP 协议`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> [!ATTENTION|label:未启用的源]
 | 
					> [!WARNING|label:未启用的源]
 | 
				
			||||||
> **Debian** 系 Linux 默认禁用了**源码仓库**和**预发布软件源**,若需启用请将 `list` 源文件中相关内容的所在行**取消注释**\
 | 
					> **Debian** 系 Linux 默认禁用了**源码仓库**和**预发布软件源**,若需启用请将 `list` 源文件中相关内容的所在行**取消注释**\
 | 
				
			||||||
> **RedHat** 系 Linux 配置了所有可以配置的仓库,但有一些仓库**默认没有启用**,若需启用请将 `repo` 源文件中的 `enabled=0` 修改成 `enabled=1`
 | 
					> **RedHat** 系 Linux 配置了所有可以配置的仓库,但有一些仓库**默认没有启用**,若需启用请将 `repo` 源文件中的 `enabled=0` 修改成 `enabled=1`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 其它脚本
 | 
					## 其它脚本
 | 
				
			||||||
- #### :fa-brands fa-docker:`Docker` 一键安装脚本 <!-- {docsify-ignore} -->
 | 
					
 | 
				
			||||||
 | 
					- ### :fa-brands fa-docker: Docker 一键安装脚本 <!-- {docsify-ignore} -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)
 | 
					    bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)
 | 
				
			||||||
@@ -97,24 +98,25 @@ bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/Chang
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    > [!NOTE|label:定义]
 | 
					    > [!NOTE|label:定义]
 | 
				
			||||||
    > `Docker CE`:Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\
 | 
					    > `Docker CE`:Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\
 | 
				
			||||||
    > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,简称镜像加速器。
 | 
					    > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    > 脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本、下载源、镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用
 | 
					    > 脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本、下载源、镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 常见问题
 | 
					## 常见问题
 | 
				
			||||||
- #### 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包 <!-- {docsify-ignore} -->
 | 
					
 | 
				
			||||||
 | 
					  - 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    sudo yum install -y curl || sudo apt install -y curl
 | 
					    sudo yum install -y curl || sudo apt-get install -y curl
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- #### 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包 <!-- {docsify-ignore} -->
 | 
					  - 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ```bash
 | 
					    ```bash
 | 
				
			||||||
    sudo yum install -y wget || sudo apt install -y wget
 | 
					    sudo yum install -y wget || sudo apt-get install -y wget
 | 
				
			||||||
    ```
 | 
					    ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- #### 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行。 <!-- {docsify-ignore} -->
 | 
					  - 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行
 | 
				
			||||||
 | 
					
 | 
				
			||||||
***
 | 
					***
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,10 @@
 | 
				
			|||||||
# 
 | 
					# 
 | 
				
			||||||
<a href="https://github.com/SuperManito/LinuxMirrors"><img src="./img/icon/github-1.svg" width="34" height="42"></a>
 | 
					<a href="https://github.com/SuperManito/LinuxMirrors"><img src="./img/icon/github-1.svg" width="34" height="42"></a>
 | 
				
			||||||
 <a href="https://github.com/SuperManito/LinuxMirrors"><img src="./img/icon/github-2.svg" width="70" height="52"></a>
 | 
					 | 
				
			||||||
   <a href="https://gitee.com/SuperManito/LinuxMirrors"><img src="./img/icon/gitee.svg" width="100" height="50"/></a>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 脚本一键更换 Linux 软件源
 | 
					### 脚本一键更换 Linux 软件源
 | 
				
			||||||
### 让换源更简单
 | 
					### 让换源更简单
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Github](https://github.com/SuperManito/LinuxMirrors)[Gitee](https://gitee.com/SuperManito/LinuxMirrors)\
 | 
					 <a href="https://github.com/SuperManito/LinuxMirrors"><img src="./img/icon/github-2.svg" width="70" height="52"></a>
 | 
				
			||||||
 | 
					   <a href="https://gitee.com/SuperManito/LinuxMirrors"><img src="./img/icon/gitee.svg" width="100" height="50"/></a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[开始使用](#适配系统)
 | 
					[开始使用](#适配系统)
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -93,7 +93,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      // 页脚内容
 | 
					      // 页脚内容
 | 
				
			||||||
      footer: {
 | 
					      footer: {
 | 
				
			||||||
        copy: '<span>Copyright <i class="fa-regular fa-copyright"></i> </span> 2022,</span>',
 | 
					        copy: '<span>Copyright 2021 ~ 2022 <i class="fa-regular fa-copyright"></i>',
 | 
				
			||||||
        auth: ' <a href="javascript:window.open(\'https://github.com/SuperManito\')">SuperManito</a> . Released under the <a href="javascript:window.open(\'https://github.com/SuperManito/LinuxMirrors/blob/main/LICENSE\')">GPL-2.0</a>',
 | 
					        auth: ' <a href="javascript:window.open(\'https://github.com/SuperManito\')">SuperManito</a> . Released under the <a href="javascript:window.open(\'https://github.com/SuperManito/LinuxMirrors/blob/main/LICENSE\')">GPL-2.0</a>',
 | 
				
			||||||
        pre: '',
 | 
					        pre: '',
 | 
				
			||||||
        style: 'text-align: center;',
 | 
					        style: 'text-align: center;',
 | 
				
			||||||
@@ -124,6 +124,7 @@
 | 
				
			|||||||
          blockQuoteColor: '#858585',
 | 
					          blockQuoteColor: '#858585',
 | 
				
			||||||
          highlightColor: '#d22778',
 | 
					          highlightColor: '#d22778',
 | 
				
			||||||
          highlightBackgroundColor: '#efefef',
 | 
					          highlightBackgroundColor: '#efefef',
 | 
				
			||||||
 | 
					          buttonBackgroundColor: '#f3f3f3ce',
 | 
				
			||||||
          sidebarSublink: '#7c7c7c',
 | 
					          sidebarSublink: '#7c7c7c',
 | 
				
			||||||
          codeTypeColor: '#091a28',
 | 
					          codeTypeColor: '#091a28',
 | 
				
			||||||
          herfColor: '#2973b7',
 | 
					          herfColor: '#2973b7',
 | 
				
			||||||
@@ -142,6 +143,7 @@
 | 
				
			|||||||
          blockQuoteColor: '#858585',
 | 
					          blockQuoteColor: '#858585',
 | 
				
			||||||
          highlightColor: '#a6bb06',
 | 
					          highlightColor: '#a6bb06',
 | 
				
			||||||
          highlightBackgroundColor: '#122d44',
 | 
					          highlightBackgroundColor: '#122d44',
 | 
				
			||||||
 | 
					          buttonBackgroundColor: '#a8a8a825',
 | 
				
			||||||
          sidebarSublink: '#b4b4b4',
 | 
					          sidebarSublink: '#b4b4b4',
 | 
				
			||||||
          codeTypeColor: '#ffffff',
 | 
					          codeTypeColor: '#ffffff',
 | 
				
			||||||
          herfColor: '#16995e',
 | 
					          herfColor: '#16995e',
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								docs/js/docsify-copy-code.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								docs/js/docsify-copy-code.min.js
									
									
									
									
										vendored
									
									
								
							@@ -5,5 +5,5 @@
 | 
				
			|||||||
 * (c) 2017-2020 JP Erasmus <jperasmus11@gmail.com>
 | 
					 * (c) 2017-2020 JP Erasmus <jperasmus11@gmail.com>
 | 
				
			||||||
 * MIT license
 | 
					 * MIT license
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
!function(){function s(o){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:1.2em;right:.5em;overflow:visible;padding:.3em .4em;border:0;border-radius:6px;outline:0;font-size:1.2em;background:#a8a8a825;color:var(--themeColor);opacity:0}.docsify-copy-code-button span{border-radius:7px;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;right:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error{right:60%;opacity:1;-webkit-transform:translate(-115%,-50%);color:red;background-color:#a8a8a825;transform:translate(-115%,-50%)}.docsify-copy-code-button.success .success{right:-25%;opacity:1;-webkit-transform:translate(-115%,-50%);color:#00a300;background-color:transparent;transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,r){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:'<i class="fa-regular fa-copy"></i>',errorText:'<i class="fa-solid fa-xmark"></i>',successText:'<i class="fa-solid fa-circle-check"></i>'};r.config.copyCode&&Object.keys(c).forEach(function(t){var n=r.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===s(n)&&Object.keys(n).some(function(o){var e=-1<location.href.indexOf(o);return c[t]=e?n[o]:c[t],e})});var e=['<button class="docsify-copy-code-button">','<span class="label">'.concat(c.buttonText,"</span>"),'<span class="error">'.concat(c.errorText,"</span>"),'<span class="success">'.concat(c.successText,"</span>"),"</button>"].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1000))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1000)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}();
 | 
					!function(){function s(o){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:1.5em;right:.5em;overflow:visible;padding:.3em .4em;border:0;border-radius:6px;outline:0;font-size:1em;background:#a8a8a825;color:var(--themeColor);opacity:0;box-sizing:border-box;border:1px solid transparent}.docsify-copy-code-button:hover{border-color:var(--themeColor)}.docsify-copy-code-button:active{border-color:transparent}.docsify-copy-code-button span{border-radius:7px;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;right:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error{right:60%;opacity:1;-webkit-transform:translate(-115%,-50%);color:red;background-color:#a8a8a825;transform:translate(-115%,-50%)}.docsify-copy-code-button.success .success{right:-25%;opacity:1;-webkit-transform:translate(-115%,-50%);color:#00a300;background-color:transparent;transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,r){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:'<i class="fa-regular fa-copy"></i>',errorText:'<i class="fa-solid fa-xmark"></i>',successText:'<i class="fa-solid fa-circle-check"></i>'};r.config.copyCode&&Object.keys(c).forEach(function(t){var n=r.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===s(n)&&Object.keys(n).some(function(o){var e=-1<location.href.indexOf(o);return c[t]=e?n[o]:c[t],e})});var e=['<button class="docsify-copy-code-button">','<span class="label">'.concat(c.buttonText,"</span>"),'<span class="error">'.concat(c.errorText,"</span>"),'<span class="success">'.concat(c.successText,"</span>"),"</button>"].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1000))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1000)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}();
 | 
				
			||||||
//# sourceMappingURL=docsify-copy-code.min.js.map
 | 
					//# sourceMappingURL=docsify-copy-code.min.js.map
 | 
				
			||||||
		Reference in New Issue
	
	Block a user