mirror of
				https://gitee.com/SuperManito/LinuxMirrors
				synced 2025-11-04 16:30:26 +08:00 
			
		
		
		
	优化软件源停服场景下使用官方源的逻辑
This commit is contained in:
		@@ -285,6 +285,7 @@ function handle_command_options() {
 | 
			
		||||
  --protocol                   指定 WEB 协议                                                     http 或 https
 | 
			
		||||
  --use-intranet-source        是否优先使用内网软件源地址                                        true 或 false
 | 
			
		||||
  --use-official-source        是否使用目标操作系统的官方软件源                                  true 或 false
 | 
			
		||||
  --use-official-source-epel   是否使用 EPEL 附加软件包的官方软件源                              true 或 false
 | 
			
		||||
  --install-epel               是否安装 EPEL 附加软件包                                          true 或 false
 | 
			
		||||
  --backup                     是否备份原有软件源                                                true 或 false
 | 
			
		||||
  --upgrade-software           是否更新软件包                                                    true 或 false
 | 
			
		||||
@@ -462,6 +463,22 @@ function handle_command_options() {
 | 
			
		||||
                output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false !"
 | 
			
		||||
            fi
 | 
			
		||||
            ;;
 | 
			
		||||
        ## EPEL 使用 官方源
 | 
			
		||||
        --use-official-source-epel)
 | 
			
		||||
            if [ "$2" ]; then
 | 
			
		||||
                case "$2" in
 | 
			
		||||
                [Tt]rue | [Ff]alse)
 | 
			
		||||
                    USE_OFFICIAL_SOURCE_EPEL="${2,,}"
 | 
			
		||||
                    shift
 | 
			
		||||
                    ;;
 | 
			
		||||
                *)
 | 
			
		||||
                    output_error "命令选项 ${BLUE}$2${PLAIN} 无效,请在该选项后指定 true 或 false !"
 | 
			
		||||
                    ;;
 | 
			
		||||
                esac
 | 
			
		||||
            else
 | 
			
		||||
                output_error "命令选项 ${BLUE}$1${PLAIN} 无效,请在该选项后指定 true 或 false !"
 | 
			
		||||
            fi
 | 
			
		||||
            ;;
 | 
			
		||||
        ## 使用内网地址
 | 
			
		||||
        --intranet | --use-intranet-source)
 | 
			
		||||
            if [ "$2" ]; then
 | 
			
		||||
@@ -2112,29 +2129,17 @@ function change_mirrors_RedHat() {
 | 
			
		||||
    esac
 | 
			
		||||
    ## 使用官方源
 | 
			
		||||
    if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
 | 
			
		||||
        ## CentOS 停服专用
 | 
			
		||||
        cd $Dir_YumRepos
 | 
			
		||||
        if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_CENTOS}" ]]; then
 | 
			
		||||
            sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" CentOS-*
 | 
			
		||||
            sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-*
 | 
			
		||||
            case "${SYSTEM_VERSION_ID_MAJOR}" in
 | 
			
		||||
            8)
 | 
			
		||||
                sed -i "s|mirror.centos.org/\$contentdir|vault.centos.org|g" CentOS-*
 | 
			
		||||
                sed -i "s/\$releasever/8.5.2111/g" CentOS-*
 | 
			
		||||
                sed -i "s|vault.centos.org/\$contentdir|vault.centos.org|g" CentOS-Linux-Sources.repo
 | 
			
		||||
                ;;
 | 
			
		||||
            7)
 | 
			
		||||
                sed -i "s|mirror.centos.org/centos|vault.centos.org|g" CentOS-*
 | 
			
		||||
                sed -i "s/\$releasever/7.9.2009/g" CentOS-*
 | 
			
		||||
                sed -i "s|vault.centos.org/centos|vault.centos.org|g" CentOS-Sources.repo
 | 
			
		||||
                ;;
 | 
			
		||||
            esac
 | 
			
		||||
            sed -i "s|mirror.centos.org|vault.centos.org|g" CentOS-*
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
            SOURCE="vault.centos.org"
 | 
			
		||||
            SOURCE_BRANCH="centos"
 | 
			
		||||
        elif [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_CENTOS_STREAM}" && "${SYSTEM_VERSION_ID_MAJOR}" == 8 ]]; then
 | 
			
		||||
            SOURCE="vault.centos.org"
 | 
			
		||||
            SOURCE_BRANCH="centos"
 | 
			
		||||
        else
 | 
			
		||||
            change_mirrors_or_install_EPEL # EPEL 附加软件包
 | 
			
		||||
            return
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    ## 修改源
 | 
			
		||||
    cd $Dir_YumRepos
 | 
			
		||||
@@ -2300,6 +2305,16 @@ function change_mirrors_RedHat() {
 | 
			
		||||
        ;;
 | 
			
		||||
    esac
 | 
			
		||||
 | 
			
		||||
    ## 重置使用官方源时定义的变量
 | 
			
		||||
    if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
 | 
			
		||||
        if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_CENTOS}" ]]; then
 | 
			
		||||
            SOURCE=""
 | 
			
		||||
            SOURCE_BRANCH=""
 | 
			
		||||
        elif [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_CENTOS_STREAM}" && "${SYSTEM_VERSION_ID_MAJOR}" == 8 ]]; then
 | 
			
		||||
            SOURCE=""
 | 
			
		||||
            SOURCE_BRANCH=""
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
    change_mirrors_or_install_EPEL # EPEL 附加软件包
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -2608,8 +2623,16 @@ function change_mirrors_or_install_EPEL() {
 | 
			
		||||
    if [[ "${epel_version}" == 9 ]] && [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_CENTOS_STREAM}" || "${SYSTEM_JUDGMENT}" == "${SYSTEM_RHEL}" ]]; then
 | 
			
		||||
        gen_repo_files_EPEL_NEXT "${SYSTEM_VERSION_ID_MAJOR}"
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
 | 
			
		||||
        return
 | 
			
		||||
    ## 使用官方源
 | 
			
		||||
    if [[ "${USE_OFFICIAL_SOURCE}" == "true" || "${USE_OFFICIAL_SOURCE_EPEL}" == "true" ]]; then
 | 
			
		||||
        case "${epel_version}" in
 | 
			
		||||
        7)
 | 
			
		||||
            SOURCE_EPEL="dl.fedoraproject.org/pub/archive"
 | 
			
		||||
            ;;
 | 
			
		||||
        *)
 | 
			
		||||
            SOURCE_EPEL="dl.fedoraproject.org/pub"
 | 
			
		||||
            ;;
 | 
			
		||||
        esac
 | 
			
		||||
    fi
 | 
			
		||||
    ## 修改源
 | 
			
		||||
    sed -e "s|^#baseurl=http\(s\)\?|baseurl=${WEB_PROTOCOL}|g" \
 | 
			
		||||
 
 | 
			
		||||
@@ -411,6 +411,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help
 | 
			
		||||
  --protocol                    指定 WEB 协议                                                    http 或 https
 | 
			
		||||
  --use-intranet-source         是否优先使用内网软件源地址                                        true 或 false
 | 
			
		||||
  --use-official-source         是否使用目标操作系统的官方软件源                                   true 或 false
 | 
			
		||||
  --use-official-source-epel    是否使用 EPEL 附加软件包的官方软件源                               true 或 false
 | 
			
		||||
  --install-epel                是否安装 EPEL 附加软件包                                          true 或 false
 | 
			
		||||
  --backup                      是否备份原有软件源                                                true 或 false
 | 
			
		||||
  --upgrade-software            是否更新软件包                                                    true 或 false
 | 
			
		||||
@@ -442,6 +443,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help
 | 
			
		||||
| `--protocol` | 指定 WEB 协议 | `http` 或 `https` |
 | 
			
		||||
| `--use-intranet-source` | 是否优先使用内网软件源地址 | `true` 或 `false` |
 | 
			
		||||
| `--use-official-source` | 是否使用目标操作系统的官方软件源 | `true` 或 `false` |
 | 
			
		||||
| `--use-official-source-epel` | 是否使用 EPEL 附加软件包的官方软件源 | `true` 或 `false` |
 | 
			
		||||
| `--install-epel` | 是否安装 EPEL 附加软件包 | `true` 或 `false` |
 | 
			
		||||
| `--backup` | 是否备份原有软件源 | `true` 或 `false` |
 | 
			
		||||
| `--upgrade-software` | 是否更新软件包 | `true` 或 `false` |
 | 
			
		||||
@@ -523,6 +525,8 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help
 | 
			
		||||
    bash <(curl -sSL https://linuxmirrors.cn/main.sh) --only-epel
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
    对于已经 EOF 的 EPEL 7 注意需要使用 [`archive`](https://dl.fedoraproject.org/pub/archive/epel) 仓库,境外以及海外网络环境建议通过命令选项 `--use-official-source-epel true` 使用官方源
 | 
			
		||||
 | 
			
		||||
- ### 恢复使用官方源
 | 
			
		||||
 | 
			
		||||
    当你不小心删除了官方源的备份时可以使用此命令来恢复,使用此命令选项后将跳过选择软件源步骤
 | 
			
		||||
@@ -534,7 +538,29 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help
 | 
			
		||||
 | 
			
		||||
- ### 特定系统的使用示例
 | 
			
		||||
 | 
			
		||||
    - #### 自定义 GNU/Linux Debian 操作系统 Security 源
 | 
			
		||||
    - #### 关于 CentOS 停服问题
 | 
			
		||||
 | 
			
		||||
        脚本对于已经 EOF 的 CentOS 7/8、CentOS Stream 8 进行了适配
 | 
			
		||||
 | 
			
		||||
        <div class="grid cards" markdown>
 | 
			
		||||
 | 
			
		||||
        -   __国内网络环境__
 | 
			
		||||
 | 
			
		||||
            ---
 | 
			
		||||
 | 
			
		||||
            直接正常使用即可,因为国内大部分镜像站都同步了 [`CentOS Vault`](https://vault.centos.org/) 仓库
 | 
			
		||||
 | 
			
		||||
        -   __境外以及海外网络环境__
 | 
			
		||||
 | 
			
		||||
            ---
 | 
			
		||||
 | 
			
		||||
            建议使用 `腾讯云` 或 `阿里云` 镜像站,或者通过 `--use-official-source true` 命令选项使用官方源
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        另外关于 EPEL 7 也进入了 EOF,脚本同样对其进行了适配
 | 
			
		||||
 | 
			
		||||
    - #### 指定 GNU/Linux Debian 操作系统的 Security 源
 | 
			
		||||
 | 
			
		||||
        如果你想尽可能提高服务器的安全性则建议使用官方源,因为镜像同步存在延迟
 | 
			
		||||
 | 
			
		||||
@@ -638,6 +664,7 @@ $ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --help
 | 
			
		||||
| `DEBIAN_CODENAME` | 指定 Debian 系 / openKylin 操作系统的版本代号 | `代号名称` |
 | 
			
		||||
| `USE_OFFICIAL_SOURCE` | 是否使用目标操作系统的官方软件源 | `true` 或 `false` |
 | 
			
		||||
| `USE_INTRANET_SOURCE` | 是否优先使用内网软件源地址 | `true` 或 `false` |
 | 
			
		||||
| `USE_INTRANET_SOURCE_EPEL` | 是否使用 EPEL 附加软件包的官方软件源 | `true` 或 `false` |
 | 
			
		||||
| `WEB_PROTOCOL` | 指定 WEB 协议 | `http` 或 `https` |
 | 
			
		||||
| `INSTALL_EPEL` | 是否安装 EPEL 附加软件包 | `true` 或 `false` |
 | 
			
		||||
| `ONLY_EPEL` | 仅更换 EPEL 软件源模式 | `true` 或 `false` |
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user