diff --git a/ChangeMirrors.sh b/ChangeMirrors.sh index aca4654..9d16d7f 100644 --- a/ChangeMirrors.sh +++ b/ChangeMirrors.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2023-05-05 +## Modified: 2023-05-06 ## License: MIT ## Github: https://github.com/SuperManito/LinuxMirrors ## Website: https://linuxmirrors.cn @@ -121,7 +121,7 @@ SYSTEM_DEBIAN="Debian" SYSTEM_UBUNTU="Ubuntu" SYSTEM_KALI="Kali" SYSTEM_REDHAT="RedHat" -SYSTEM_RHEL="RedHat" +SYSTEM_RHEL="Red Hat Enterprise Linux" SYSTEM_CENTOS="CentOS" SYSTEM_CENTOS_STREAM="CentOS Stream" SYSTEM_ROCKY="Rocky" @@ -229,6 +229,10 @@ function EnvJudgment() { ;; "${SYSTEM_REDHAT}") SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | awk -F ' ' '{printf$1}')" + ## Red Hat Enterprise Linux + cat $File_RedHatRelease | grep -q "${SYSTEM_RHEL}" + [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_RHEL}" + ## CentOS Stream cat $File_RedHatRelease | grep -q "${SYSTEM_CENTOS_STREAM}" [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}" ;; @@ -265,7 +269,20 @@ function EnvJudgment() { esac ## 定义软件源分支名称 if [[ -z "${SOURCE_BRANCH}" ]]; then - case "${SYSTEM_FACTIONS}" in + ## 默认 + SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")" + ## 定制 + case "${SYSTEM_JUDGMENT}" in + "${SYSTEM_RHEL}") + case ${SYSTEM_VERSION_NUMBER:0:1} in + 9) + SOURCE_BRANCH="rocky" + ;; + *) + SOURCE_BRANCH="centos" + ;; + esac + ;; "${SYSTEM_UBUNTU}") if [[ ${DEVICE_ARCH} == "x86_64" ]] || [[ ${DEVICE_ARCH} == *i?86* ]]; then SOURCE_BRANCH="ubuntu" @@ -280,9 +297,6 @@ function EnvJudgment() { SOURCE_BRANCH="archlinuxarm" fi ;; - *) - SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")" - ;; esac fi @@ -758,7 +772,7 @@ function RemoveOriginMirrors() { "${SYSTEM_REDHAT}") if [ -d $Dir_RedHatRepos ]; then # Fedora Linux 特殊,只删除以 fedora 开头的文件 - if [ "${SYSTEM_JUDGMENT}" = $SYSTEM_FEDORA ]; then + if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_FEDORA}" ]]; then rm -rf $Dir_RedHatRepos/fedora* else if [ -f $Dir_RedHatRepos/epel.repo ]; then @@ -836,7 +850,7 @@ function UpdateSoftware() { apt-get upgrade -y ;; "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}") - yum update -y + yum update -y --skip-broken ;; "${SYSTEM_OPENSUSE}") zypper update -y @@ -895,15 +909,17 @@ function UpdateSoftware() { case "${SYSTEM_FACTIONS}" in "${SYSTEM_DEBIAN}" | "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENSUSE}") - if [[ ${UPDATA_SOFTWARE} == "true" ]]; then - Main - if [[ ${CLEAN_CACHE} == "true" ]]; then - CleanCache - elif [[ -z "${CLEAN_CACHE}" ]]; then - CleanCacheInteraction + if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_RHEL}" ]]; then + if [[ ${UPDATA_SOFTWARE} == "true" ]]; then + Main + if [[ ${CLEAN_CACHE} == "true" ]]; then + CleanCache + elif [[ -z "${CLEAN_CACHE}" ]]; then + CleanCacheInteraction + fi + elif [[ -z "${UPDATA_SOFTWARE}" ]]; then + MainInteraction fi - elif [[ -z "${UPDATA_SOFTWARE}" ]]; then - MainInteraction fi ;; esac @@ -1022,7 +1038,17 @@ function RedHatMirrors() { ## 生成基于 RedHat 发行版和及其衍生发行版的官方 repo 源文件 case "${SYSTEM_JUDGMENT}" in - "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}") + "${SYSTEM_RHEL}") + case ${SYSTEM_VERSION_NUMBER:0:1} in + 9) + GenRepoFiles_RockyLinux ${SYSTEM_VERSION_NUMBER:0:1} + ;; + *) + GenRepoFiles_CentOS ${SYSTEM_VERSION_NUMBER:0:1} + ;; + esac + ;; + "${SYSTEM_CENTOS}") GenRepoFiles_CentOS ${SYSTEM_VERSION_NUMBER:0:1} ;; "${SYSTEM_CENTOS_STREAM}") @@ -1039,7 +1065,70 @@ function RedHatMirrors() { ## 修改源 cd $Dir_RedHatRepos case "${SYSTEM_JUDGMENT}" in - "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}") + "${SYSTEM_RHEL}") + case ${SYSTEM_VERSION_NUMBER:0:1} in + 9) + sed -i 's|^mirrorlist=|#mirrorlist=|g' \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + ## 禁用签名 + sed -i "s|^gpgcheck=1|gpgcheck=0|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + sed -i "s|^gpgkey=|#gpgkey=|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + # wget "${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/RPM-GPG-KEY-rockyofficial" -P /etc/pki/rpm-gpg + # wget "${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/RPM-GPG-KEY-Rocky-9" -P /etc/pki/rpm-gpg + + # 更换软件源 + sed -i "s|dl.rockylinux.org/\$contentdir|${SOURCE}/${SOURCE_BRANCH}|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + ;; + *) + sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-* + + # Red Hat Enterprise Linux 修改版本号 + case ${SYSTEM_VERSION_NUMBER:0:1} in + 8) + ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011 + # 原 centos 镜像中的 CentOS 8 相关内容已被官方移动,从 2022-02 开始切换至 centos-vault 源 + sed -i 's|mirror.centos.org/$contentdir|mirror.centos.org/centos-vault|g' CentOS-* + sed -i 's|vault.centos.org/$contentdir|mirror.centos.org/centos-vault|g' CentOS-Sources.repo # 单独处理 CentOS-Sources.repo + sed -i "s/\$releasever/8.5.2111/g" CentOS-* + ;; + 7) + sed -i "s/\$releasever/7/g" CentOS-* + ;; + esac + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" CentOS-* + # 更换软件源 + sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-* + ;; + esac + + # EPEL 附加软件包(安装/换源) + [ ${INSTALL_EPEL} = "True" ] && EPELMirrors + ;; + "${SYSTEM_CENTOS}") sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-* ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011 @@ -1055,18 +1144,6 @@ function RedHatMirrors() { # 更换软件源 sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-* - # Red Hat Enterprise Linux 修改版本号 - if [ "${SYSTEM_JUDGMENT}" = ${SYSTEM_RHEL} ]; then - case ${SYSTEM_VERSION_NUMBER:0:1} in - 8) - sed -i "s/\$releasever/8.5.2111/g" CentOS-* - ;; - 7) - sed -i "s/\$releasever/7/g" CentOS-* - ;; - esac - fi - # EPEL 附加软件包(安装/换源) [ ${INSTALL_EPEL} = "True" ] && EPELMirrors ;; diff --git a/README.md b/README.md index 4310f7f..3a58043 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@  Red Hat Enterprise Linux - 7.0 ~ 8.5 + 7.0 ~ 9  CentOS diff --git a/docs/index.md b/docs/index.md index 04c1f6e..5350def 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,7 +31,7 @@ GNU/Linux 一键更换系统软件源脚本 · 让换源更简单  Red Hat Enterprise Linux - 7.0 ~ 8.5 + 7.0 ~ 9  CentOS diff --git a/docs/main.sh b/docs/main.sh index aca4654..9d16d7f 100644 --- a/docs/main.sh +++ b/docs/main.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2023-05-05 +## Modified: 2023-05-06 ## License: MIT ## Github: https://github.com/SuperManito/LinuxMirrors ## Website: https://linuxmirrors.cn @@ -121,7 +121,7 @@ SYSTEM_DEBIAN="Debian" SYSTEM_UBUNTU="Ubuntu" SYSTEM_KALI="Kali" SYSTEM_REDHAT="RedHat" -SYSTEM_RHEL="RedHat" +SYSTEM_RHEL="Red Hat Enterprise Linux" SYSTEM_CENTOS="CentOS" SYSTEM_CENTOS_STREAM="CentOS Stream" SYSTEM_ROCKY="Rocky" @@ -229,6 +229,10 @@ function EnvJudgment() { ;; "${SYSTEM_REDHAT}") SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | awk -F ' ' '{printf$1}')" + ## Red Hat Enterprise Linux + cat $File_RedHatRelease | grep -q "${SYSTEM_RHEL}" + [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_RHEL}" + ## CentOS Stream cat $File_RedHatRelease | grep -q "${SYSTEM_CENTOS_STREAM}" [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}" ;; @@ -265,7 +269,20 @@ function EnvJudgment() { esac ## 定义软件源分支名称 if [[ -z "${SOURCE_BRANCH}" ]]; then - case "${SYSTEM_FACTIONS}" in + ## 默认 + SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")" + ## 定制 + case "${SYSTEM_JUDGMENT}" in + "${SYSTEM_RHEL}") + case ${SYSTEM_VERSION_NUMBER:0:1} in + 9) + SOURCE_BRANCH="rocky" + ;; + *) + SOURCE_BRANCH="centos" + ;; + esac + ;; "${SYSTEM_UBUNTU}") if [[ ${DEVICE_ARCH} == "x86_64" ]] || [[ ${DEVICE_ARCH} == *i?86* ]]; then SOURCE_BRANCH="ubuntu" @@ -280,9 +297,6 @@ function EnvJudgment() { SOURCE_BRANCH="archlinuxarm" fi ;; - *) - SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")" - ;; esac fi @@ -758,7 +772,7 @@ function RemoveOriginMirrors() { "${SYSTEM_REDHAT}") if [ -d $Dir_RedHatRepos ]; then # Fedora Linux 特殊,只删除以 fedora 开头的文件 - if [ "${SYSTEM_JUDGMENT}" = $SYSTEM_FEDORA ]; then + if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_FEDORA}" ]]; then rm -rf $Dir_RedHatRepos/fedora* else if [ -f $Dir_RedHatRepos/epel.repo ]; then @@ -836,7 +850,7 @@ function UpdateSoftware() { apt-get upgrade -y ;; "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}") - yum update -y + yum update -y --skip-broken ;; "${SYSTEM_OPENSUSE}") zypper update -y @@ -895,15 +909,17 @@ function UpdateSoftware() { case "${SYSTEM_FACTIONS}" in "${SYSTEM_DEBIAN}" | "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}" | "${SYSTEM_OPENSUSE}") - if [[ ${UPDATA_SOFTWARE} == "true" ]]; then - Main - if [[ ${CLEAN_CACHE} == "true" ]]; then - CleanCache - elif [[ -z "${CLEAN_CACHE}" ]]; then - CleanCacheInteraction + if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_RHEL}" ]]; then + if [[ ${UPDATA_SOFTWARE} == "true" ]]; then + Main + if [[ ${CLEAN_CACHE} == "true" ]]; then + CleanCache + elif [[ -z "${CLEAN_CACHE}" ]]; then + CleanCacheInteraction + fi + elif [[ -z "${UPDATA_SOFTWARE}" ]]; then + MainInteraction fi - elif [[ -z "${UPDATA_SOFTWARE}" ]]; then - MainInteraction fi ;; esac @@ -1022,7 +1038,17 @@ function RedHatMirrors() { ## 生成基于 RedHat 发行版和及其衍生发行版的官方 repo 源文件 case "${SYSTEM_JUDGMENT}" in - "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}") + "${SYSTEM_RHEL}") + case ${SYSTEM_VERSION_NUMBER:0:1} in + 9) + GenRepoFiles_RockyLinux ${SYSTEM_VERSION_NUMBER:0:1} + ;; + *) + GenRepoFiles_CentOS ${SYSTEM_VERSION_NUMBER:0:1} + ;; + esac + ;; + "${SYSTEM_CENTOS}") GenRepoFiles_CentOS ${SYSTEM_VERSION_NUMBER:0:1} ;; "${SYSTEM_CENTOS_STREAM}") @@ -1039,7 +1065,70 @@ function RedHatMirrors() { ## 修改源 cd $Dir_RedHatRepos case "${SYSTEM_JUDGMENT}" in - "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}") + "${SYSTEM_RHEL}") + case ${SYSTEM_VERSION_NUMBER:0:1} in + 9) + sed -i 's|^mirrorlist=|#mirrorlist=|g' \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + ## 禁用签名 + sed -i "s|^gpgcheck=1|gpgcheck=0|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + sed -i "s|^gpgkey=|#gpgkey=|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + # wget "${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/RPM-GPG-KEY-rockyofficial" -P /etc/pki/rpm-gpg + # wget "${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/RPM-GPG-KEY-Rocky-9" -P /etc/pki/rpm-gpg + + # 更换软件源 + sed -i "s|dl.rockylinux.org/\$contentdir|${SOURCE}/${SOURCE_BRANCH}|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + ;; + *) + sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-* + + # Red Hat Enterprise Linux 修改版本号 + case ${SYSTEM_VERSION_NUMBER:0:1} in + 8) + ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011 + # 原 centos 镜像中的 CentOS 8 相关内容已被官方移动,从 2022-02 开始切换至 centos-vault 源 + sed -i 's|mirror.centos.org/$contentdir|mirror.centos.org/centos-vault|g' CentOS-* + sed -i 's|vault.centos.org/$contentdir|mirror.centos.org/centos-vault|g' CentOS-Sources.repo # 单独处理 CentOS-Sources.repo + sed -i "s/\$releasever/8.5.2111/g" CentOS-* + ;; + 7) + sed -i "s/\$releasever/7/g" CentOS-* + ;; + esac + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" CentOS-* + # 更换软件源 + sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-* + ;; + esac + + # EPEL 附加软件包(安装/换源) + [ ${INSTALL_EPEL} = "True" ] && EPELMirrors + ;; + "${SYSTEM_CENTOS}") sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-* ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011 @@ -1055,18 +1144,6 @@ function RedHatMirrors() { # 更换软件源 sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-* - # Red Hat Enterprise Linux 修改版本号 - if [ "${SYSTEM_JUDGMENT}" = ${SYSTEM_RHEL} ]; then - case ${SYSTEM_VERSION_NUMBER:0:1} in - 8) - sed -i "s/\$releasever/8.5.2111/g" CentOS-* - ;; - 7) - sed -i "s/\$releasever/7/g" CentOS-* - ;; - esac - fi - # EPEL 附加软件包(安装/换源) [ ${INSTALL_EPEL} = "True" ] && EPELMirrors ;; diff --git a/docs/use/command-options.md b/docs/use/command-options.md index 7d160b7..e50e5af 100644 --- a/docs/use/command-options.md +++ b/docs/use/command-options.md @@ -44,7 +44,7 @@ bash ChangeMirrors.sh --source mirrors.ustc.edu.cn  Red Hat Enterprise Linux - centos + centos/rocky  CentOS