#!/bin/bash ## Author: SuperManito ## Modified: 2023-04-18 ## License: GPL-2.0 ## Github: https://github.com/SuperManito/LinuxMirrors ## Gitee: https://gitee.com/SuperManito/LinuxMirrors ## 定义系统判定变量 ARCH=$(uname -m) DebianRelease_CMD="lsb_release" SYSTEM_DEBIAN="Debian" SYSTEM_UBUNTU="Ubuntu" SYSTEM_KALI="Kali" SYSTEM_REDHAT="RedHat" SYSTEM_RHEL="RedHat" SYSTEM_CENTOS="CentOS" SYSTEM_CENTOS_STREAM="CentOS Stream" SYSTEM_FEDORA="Fedora" ## 定义目录和文件 File_LinuxRelease=/etc/os-release File_RedHatRelease=/etc/redhat-release File_DebianVersion=/etc/debian_version File_DebianSourceList=/etc/apt/sources.list File_DebianSourceListBackup=/etc/apt/sources.list.bak Dir_DebianExtendSource=/etc/apt/sources.list.d Dir_DebianExtendSourceBackup=/etc/apt/sources.list.d.bak Dir_RedHatRepos=/etc/yum.repos.d Dir_RedHatReposBackup=/etc/yum.repos.d.bak SelinuxConfig=/etc/selinux/config RED='\033[31m' GREEN='\033[32m' YELLOW='\033[33m' BLUE='\033[34m' PLAIN='\033[0m' BOLD='\033[1m' SUCCESS='[\033[32mOK\033[0m]' COMPLETE='[\033[32mDONE\033[0m]' WARN='[\033[33mWARN\033[0m]' ERROR='[\033[31mERROR\033[0m]' WORKING='[\033[34m*\033[0m]' function AuthorSignature() { echo -e "\n${GREEN} ------------ 脚本执行结束 ------------ ${PLAIN}\n" echo -e " \033[1;34m官方网站\033[0m https://supermanito.github.io/LinuxMirrors\n" } ## 组合函数 function Combin_Function() { PermissionJudgment EnvJudgment ChooseMirrors BackupMirrors RemoveOldMirrorsFiles ChangeMirrors UpgradeSoftware AuthorSignature } ## 系统判定变量 function EnvJudgment() { ## 判定当前系统基于 Debian or RedHat if [ -s $File_RedHatRelease ]; then SYSTEM_FACTIONS=${SYSTEM_REDHAT} elif [ -s $File_DebianVersion ]; then SYSTEM_FACTIONS=${SYSTEM_DEBIAN} else echo -e "\n$ERROR 无法判断当前运行环境,请先确认本脚本是否已经适配当前操作系统\n" exit fi ## 定义系统名称 SYSTEM_NAME="$(cat $File_LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")" ## 定义系统版本号 SYSTEM_VERSION_NUMBER="$(cat $File_LinuxRelease | grep -E "VERSION_ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")" ## 判定系统名称、版本、版本号 case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") if [ ! -x /usr/bin/lsb_release ]; then apt-get install -y lsb-release if [ $? -eq 0 ]; then clear else echo -e "\n$ERROR lsb-release 软件包安装失败" echo -e "\n本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统,因为正常情况下系统会自带该软件包,请自行安装后重新执行脚本!\n" exit fi fi SYSTEM_JUDGMENT="$(${DebianRelease_CMD} -is)" SYSTEM_VERSION="$(${DebianRelease_CMD} -cs)" ;; "${SYSTEM_REDHAT}") SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | sed 's/ //g' | cut -c1-6)" if [[ "${SYSTEM_JUDGMENT}" = ${SYSTEM_CENTOS} || "${SYSTEM_JUDGMENT}" = ${SYSTEM_RHEL} ]]; then SYSTEM_VERSION_NUMBER="${SYSTEM_VERSION_NUMBER}" # 判断是否为 CentOS Stream cat $File_RedHatRelease | grep -q "Stream" [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}" else SYSTEM_VERSION_NUMBER="" fi ;; esac ## 判定系统处理器架构 case ${ARCH} in x86_64) SYSTEM_ARCH="x86_64" ;; aarch64) SYSTEM_ARCH="ARM64" ;; armv7l) SYSTEM_ARCH="ARMv7" ;; armv6l) SYSTEM_ARCH="ARMv6" ;; i686) SYSTEM_ARCH="x86_32" ;; *) SYSTEM_ARCH=${ARCH} ;; esac ## 定义软件源分支名称 if [ "${SYSTEM_JUDGMENT}" = ${SYSTEM_UBUNTU} ]; then if [ ${ARCH} = "x86_64" ] || [ ${ARCH} = "*i?86*" ]; then SOURCE_BRANCH="${SYSTEM_JUDGMENT,,}" else SOURCE_BRANCH=ubuntu-ports fi else SOURCE_BRANCH="${SYSTEM_JUDGMENT,,}" fi ## 定义软件源同步/更新文字 case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") SYNC_TXT="更新" ;; "${SYSTEM_REDHAT}") SYNC_TXT="同步" ;; esac } ## 环境判定 function PermissionJudgment() { ## 权限判定 if [ $UID -ne 0 ]; then echo -e "\n$ERROR 权限不足,请使用 Root 用户\n" exit fi } ## 关闭防火墙和SELinux function CloseFirewall() { if [[ $(systemctl is-active firewalld) == "active" ]]; then CHOICE_C=$(echo -e "\n${BOLD}└─ 是否关闭防火墙和 SELinux ? [Y/n] ${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) systemctl disable --now firewalld >/dev/null 2>&1 [ -s $SelinuxConfig ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" $SelinuxConfig && setenforce 0 >/dev/null 2>&1 ;; [Nn] | [Nn][Oo]) ;; *) echo -e "\n$WARN 输入错误,默认不关闭!" ;; esac fi } ## 备份原有源 function BackupMirrors() { case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") ## 判断 /etc/apt/sources.list.d 目录下是否存在文件 [ -d $Dir_DebianExtendSource ] && ls $Dir_DebianExtendSource | grep *.list -q VERIFICATION_FILES=$? ## 判断 /etc/apt/sources.list.d.bak 目录下是否存在文件 [ -d $Dir_DebianExtendSourceBackup ] && ls $Dir_DebianExtendSourceBackup | grep *.list -q VERIFICATION_BACKUPFILES=$? ;; "${SYSTEM_REDHAT}") ## 判断 /etc/yum.repos.d 目录下是否存在文件 [ -d $Dir_RedHatRepos ] && ls $Dir_RedHatRepos | grep repo -q VERIFICATION_FILES=$? ## 判断 /etc/yum.repos.d.bak 目录下是否存在文件 [ -d $Dir_RedHatReposBackup ] && ls $Dir_RedHatReposBackup | grep repo -q VERIFICATION_BACKUPFILES=$? ;; esac case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") ## /etc/apt/sources.list if [ -s $File_DebianSourceList ]; then if [ -s $File_DebianSourceListBackup ]; then CHOICE_BACKUP1=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 list 源文件,是否跳过覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP1}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) ;; [Nn] | [Nn][Oo]) echo '' cp -rvf $File_DebianSourceList $File_DebianSourceListBackup 2>&1 ;; *) echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else echo '' cp -rvf $File_DebianSourceList $File_DebianSourceListBackup 2>&1 echo -e "\n$COMPLETE 已备份原有 list 源文件至 $File_DebianSourceListBackup" sleep 1s fi else [ ! -f $File_DebianSourceList ] && touch $File_DebianSourceList echo -e '' fi ## /etc/apt/sources.list.d if [ -d $Dir_DebianExtendSource ] && [ ${VERIFICATION_FILES} -eq 0 ]; then if [ -d $Dir_DebianExtendSourceBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then CHOICE_BACKUP2=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 list 第三方源文件,是否跳过覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP2}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) ;; [Nn] | [Nn][Oo]) echo '' cp -rvf $Dir_DebianExtendSource/* $Dir_DebianExtendSourceBackup 2>&1 ;; *) echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else [ ! -d $Dir_DebianExtendSourceBackup ] && mkdir -p $Dir_DebianExtendSourceBackup echo '' cp -rvf $Dir_DebianExtendSource/* $Dir_DebianExtendSourceBackup 2>&1 echo -e "$COMPLETE 已备份原有 list 第三方源文件至 $Dir_DebianExtendSourceBackup 目录" sleep 1s fi fi ;; "${SYSTEM_REDHAT}") ## /etc/yum.repos.d if [ ${VERIFICATION_FILES} -eq 0 ]; then if [ -d $Dir_RedHatReposBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then CHOICE_BACKUP3=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 repo 源文件,是否跳过覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP3}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) ;; [Nn] | [Nn][Oo]) echo '' cp -rvf $Dir_RedHatRepos/* $Dir_RedHatReposBackup 2>&1 ;; *) echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else [ ! -d $Dir_RedHatReposBackup ] && mkdir -p $Dir_RedHatReposBackup echo '' cp -vrf $Dir_RedHatRepos/* $Dir_RedHatReposBackup 2>&1 echo -e "\n$COMPLETE 已备份原有 repo 源文件至 $Dir_RedHatReposBackup 目录" sleep 1s fi else [ -d $Dir_RedHatRepos ] || mkdir -p $Dir_RedHatRepos fi ;; esac } ## 删除原有源 function RemoveOldMirrorsFiles() { case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") [ -f $File_DebianSourceList ] && sed -i '1,$d' $File_DebianSourceList ;; "${SYSTEM_REDHAT}") if [ -d $Dir_RedHatRepos ]; then # Fedora Linux 特殊,只删除以 fedora 开头的文件 if [ "${SYSTEM_JUDGMENT}" = $SYSTEM_FEDORA ]; then rm -rf $Dir_RedHatRepos/fedora* else if [ -f $Dir_RedHatRepos/epel.repo ]; then ls $Dir_RedHatRepos/ | egrep -v epel | xargs rm -rf else rm -rf $Dir_RedHatRepos/* fi fi fi ;; esac } ## 换源 function ChangeMirrors() { case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") DebianMirrors ;; "${SYSTEM_REDHAT}") RedHatMirrors ;; esac echo -e "\n${WORKING} 开始${SYNC_TXT}软件源...\n" case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") apt-get update ;; "${SYSTEM_REDHAT}") yum makecache ;; esac VERIFICATION_SOURCESYNC=$? if [ ${VERIFICATION_SOURCESYNC} -eq 0 ]; then echo -e "\n$COMPLETE 软件源更换完毕" else echo -e "\n$ERROR 软件源${SYNC_TXT}失败\n" echo -e "请再次执行脚本并更换相同软件源后进行尝试,若仍然${SYNC_TXT}失败那么可能由以下原因导致" echo -e "1. 网络问题:例如连接异常、网络间歇式中断、由地区影响的网络因素等" echo -e "2. 软件源问题:所选镜像站正在维护,或者出现罕见的少数文件同步出错导致软件源${SYNC_TXT}命令执行后返回错误状态" echo '' exit fi } ## 更新软件包 function UpgradeSoftware() { CHOICE_B=$(echo -e "\n${BOLD}└─ 是否跳过更新软件包? [Y/n] ${PLAIN}") read -p "${CHOICE_B}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) ;; [Nn] | [Nn][Oo]) echo -e '' case ${SYSTEM_FACTIONS} in "${SYSTEM_DEBIAN}") apt-get upgrade -y ;; "${SYSTEM_REDHAT}") yum update -y ;; esac CHOICE_C=$(echo -e "\n${BOLD}└─ 是否清理已下载的软件包缓存? [Y/n] ${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) if [ ${SYSTEM_FACTIONS} = ${SYSTEM_DEBIAN} ]; then apt-get autoremove -y >/dev/null 2>&1 apt-get clean >/dev/null 2>&1 elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then yum autoremove -y >/dev/null 2>&1 yum clean packages -y >/dev/null 2>&1 fi echo -e "\n$COMPLETE 清理完毕" ;; [Nn] | [Nn][Oo]) ;; *) echo -e "\n$WARN 输入错误,默认不清理!" ;; esac ;; *) echo -e "\n$WARN 输入错误,默认不更新!" ;; esac } ## 更换基于 Debian 系 Linux 发行版的国内源 function DebianMirrors() { ## 修改国内源 case "${SYSTEM_JUDGMENT}" in Ubuntu) echo "## 默认禁用源码镜像以提高速度,如需启用请自行取消注释 deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main restricted universe multiverse # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main restricted universe multiverse deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-security main restricted universe multiverse # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-security main restricted universe multiverse deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main restricted universe multiverse # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main restricted universe multiverse deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main restricted universe multiverse # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main restricted universe multiverse ## 预发布软件源(不建议启用) # deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-proposed main restricted universe multiverse # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-proposed main restricted universe multiverse" >>$File_DebianSourceList ;; "${SYSTEM_DEBIAN}") echo "## 默认禁用源码镜像以提高速度,如需启用请自行取消注释 deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main contrib non-free # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main contrib non-free deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main contrib non-free # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main contrib non-free deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main contrib non-free # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main contrib non-free ## 预发布软件源(不建议启用) # deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}-security ${SYSTEM_VERSION}/updates main contrib non-free # deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}-security ${SYSTEM_VERSION}/updates main contrib non-free" >>$File_DebianSourceList ;; Kali) echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main non-free contrib deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main non-free contrib" >>$File_DebianSourceList ;; esac } ## 更换基于 RedHat 系 Linux 发行版的国内源 function RedHatMirrors() { ## 生成基于 RedHat 发行版和及其衍生发行版的官方 repo 源文件 case "${SYSTEM_JUDGMENT}" in "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}") GenRepoFiles_CentOS ;; "${SYSTEM_CENTOS_STREAM}") GenRepoFiles_CentOSStream ;; "${SYSTEM_FEDORA}") GenRepoFiles_Fedora ;; esac ## 修改源 cd $Dir_RedHatRepos case "${SYSTEM_JUDGMENT}" in RedHat | CentOS) sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-* ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011 # 原 centos 镜像中的 CentOS 8 相关内容已被官方移动,从 2022-02 开始切换至 centos-vault 源 if [ ${SYSTEM_VERSION_NUMBER} -eq "8" ]; then 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-* fi # 更换 WEB 协议(HTTP/HTTPS) sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" CentOS-* # 更换软件源 sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-* # Red Hat Enterprise Linux 修改版本号 if [ "${SYSTEM_JUDGMENT}" = ${SYSTEM_RHEL} ]; then case ${SYSTEM_VERSION_NUMBER} in 8) sed -i "s/\$releasever/8.5.2111/g" CentOS-* ;; 7) sed -i "s/\$releasever/7/g" CentOS-* ;; esac fi ## 安装/更换基于 RHEL/CentOS 的 EPEL 扩展国内源 [ ${EPEL_INSTALL} = "True" ] && EPELMirrors ;; "CentOS Stream") case ${SYSTEM_VERSION_NUMBER} in # CentOS Stream 9 使用的是 centos-stream 镜像,而 CentOS Stream 8 使用的是 centos 镜像 9) sed -i 's|^metalink=|#metalink=|g' \ centos.repo \ centos-addons.repo # 更换 WEB 协议(HTTP/HTTPS) sed -i "s|^#baseurl=https|baseurl=${WEB_PROTOCOL}|g" \ centos.repo \ centos-addons.repo # 更换软件源 sed -i "s|mirror.stream.centos.org|${SOURCE}/centos-stream|g" \ centos.repo \ centos-addons.repo ;; 8) sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-Stream-* sed -i 's|vault.centos.org/$contentdir|mirror.centos.org/centos-vault|g' CentOS-Stream-Sources.repo # 单独处理 CentOS-Stream-Sources.repo # 更换 WEB 协议(HTTP/HTTPS) sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" CentOS-Stream-* # 更换软件源 sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-Stream-* ;; esac ## 安装/更换基于 RHEL/CentOS 的 EPEL 扩展国内源 [ ${EPEL_INSTALL} = "True" ] && EPELMirrors ;; Fedora) sed -i 's|^metalink=|#metalink=|g' \ fedora.repo \ fedora-updates.repo \ fedora-modular.repo \ fedora-updates-modular.repo \ fedora-updates-testing.repo \ fedora-updates-testing-modular.repo # 更换 WEB 协议(HTTP/HTTPS) sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" \ fedora.repo \ fedora-updates.repo \ fedora-modular.repo \ fedora-updates-modular.repo \ fedora-updates-testing.repo \ fedora-updates-testing-modular.repo # 更换软件源 sed -i "s|download.example/pub/fedora/linux|${SOURCE}/fedora|g" \ fedora.repo \ fedora-updates.repo \ fedora-modular.repo \ fedora-updates-modular.repo \ fedora-updates-testing.repo \ fedora-updates-testing-modular.repo ;; esac ## 清理 yum 缓存 yum clean all >/dev/null 2>&1 } ## 安装/更换基于 RHEL/CentOS 的 EPEL (Extra Packages for Enterprise Linux) 扩展国内源 function EPELMirrors() { ## 安装 EPEL 软件包 if [ ${VERIFICATION_EPEL} -ne 0 ]; then echo -e "\n${WORKING} 安装 epel-release 软件包...\n" yum install -y https://mirrors.cloud.tencent.com/epel/epel-release-latest-${SYSTEM_VERSION_NUMBER}.noarch.rpm fi ## 删除原有 EPEL 扩展 repo 源文件 [ ${VERIFICATION_EPELFILES} -eq 0 ] && rm -rf $Dir_RedHatRepos/epel* [ ${VERIFICATION_EPELBACKUPFILES} -eq 0 ] && rm -rf $Dir_RedHatReposBackup/epel* ## 生成官方 EPEL 扩展 repo 源文件 EPELReposCreate sed -i 's|^metalink=|#metalink=|g' $Dir_RedHatRepos/epel* # 更换 WEB 协议(HTTP/HTTPS) case ${SYSTEM_VERSION_NUMBER} in 9 | 8) sed -i "s|^#baseurl=https|baseurl=${WEB_PROTOCOL}|g" $Dir_RedHatRepos/epel* ;; 7) sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" $Dir_RedHatRepos/epel* ;; esac # 修改源 case ${SYSTEM_VERSION_NUMBER} in 9) sed -i "s|download.example/pub|${SOURCE}|g" $Dir_RedHatRepos/epel* ;; 8 | 7) sed -i "s|download.fedoraproject.org/pub|${SOURCE}|g" $Dir_RedHatRepos/epel* ;; esac rm -rf $Dir_RedHatRepos/epel*rpmnew } ## 选择国内源 function ChooseMirrors() { ## 云计算厂商的软件源 # 分外网(公网)地址和内网地址,内网地址仅面向云计算厂商云服务器用户使用 # 内网地址不支持使用 HTTPS 协议 function Cloud_Computing_Vendors_Mirrors() { local Extranet Intranet ## 公网地址 case $1 in 1) Extranet="mirrors.aliyun.com" ;; 2) Extranet="mirrors.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 echo -e '+-----------------------------------------------+' echo -e '| |' echo -e '| ========================================= |' echo -e '| |' echo -e '| 欢迎使用 Linux 一键更换国内软件源脚本 |' echo -e '| |' echo -e '| ========================================= |' echo -e '| |' echo -e '+-----------------------------------------------+' echo -e '' echo -e ' ❖ 阿里云 1)' echo -e ' ❖ 腾讯云 2)' echo -e ' ❖ 华为云 3)' echo -e ' ❖ 网易 4)' echo -e ' ❖ 搜狐 5)' echo -e ' ❖ 清华大学 6)' echo -e ' ❖ 浙江大学 7)' echo -e ' ❖ 南京大学 8)' echo -e ' ❖ 重庆大学 9)' echo -e ' ❖ 兰州大学 10)' echo -e ' ❖ 上海交通大学 11)' echo -e ' ❖ 哈尔滨工业大学 12)' echo -e ' ❖ 中国科学技术大学 13)' echo -e '' echo -e " 运行环境 ${BLUE}${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER} ${SYSTEM_ARCH}${PLAIN}" echo -e " 系统时间 ${BLUE}$(date "+%Y-%m-%d %H:%M:%S")${PLAIN}" CHOICE_A=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的软件源 [ 1-13 ]:${PLAIN}") read -p "${CHOICE_A}" INPUT case $INPUT in 1 | 2 | 3) Cloud_Computing_Vendors_Mirrors $INPUT ;; 4) SOURCE="mirrors.163.com" ;; 5) SOURCE="mirrors.sohu.com" ;; 6) SOURCE="mirrors.tuna.tsinghua.edu.cn" ;; 7) SOURCE="mirrors.zju.edu.cn" ;; 8) SOURCE="mirrors.nju.edu.cn" ;; 9) SOURCE="mirrors.cqu.edu.cn" ;; 10) SOURCE="mirror.lzu.edu.cn" ;; 11) SOURCE="mirror.sjtu.edu.cn" ;; 12) SOURCE="mirrors.hit.edu.cn" ;; 13) SOURCE="mirrors.ustc.edu.cn" ;; *) SOURCE="mirrors.aliyun.com" echo -e "\n$WARN 输入错误,将默认使用 ${BLUE}阿里云${PLAIN} 作为国内源!" sleep 2s ;; esac ## 更换基于 RHEL/CentOS 的 EPEL (Extra Packages for Enterprise Linux) 扩展国内源 if [[ "${SYSTEM_JUDGMENT}" = ${SYSTEM_CENTOS} || "${SYSTEM_JUDGMENT}" = ${SYSTEM_RHEL} || "${SYSTEM_JUDGMENT}" = ${SYSTEM_CENTOS_STREAM} ]]; then ## 判断是否已安装 EPEL 软件包 rpm -qa | grep epel-release -q VERIFICATION_EPEL=$? ## 判断 /etc/yum.repos.d 目录下是否存在 epel 扩展 repo 源文件 [ -d $Dir_RedHatRepos ] && ls $Dir_RedHatRepos | grep epel -q VERIFICATION_EPELFILES=$? ## 判断 /etc/yum.repos.d.bak 目录下是否存在 epel 扩展 repo 源文件 [ -d $Dir_RedHatReposBackup ] && ls $Dir_RedHatReposBackup | grep epel -q VERIFICATION_EPELBACKUPFILES=$? if [ ${VERIFICATION_EPEL} -eq 0 ]; then CHOICE_D=$(echo -e "\n ${BOLD}└─ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源? [Y/n] ${PLAIN}") else CHOICE_D=$(echo -e "\n ${BOLD}└─ 是否安装 EPEL 扩展源? [Y/n] ${PLAIN}") fi read -p "${CHOICE_D}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) EPEL_INSTALL="True" ;; [Nn] | [Nn][Oo]) EPEL_INSTALL="False" ;; *) echo -e "\n $WARN 输入错误,默认不更换!" EPEL_INSTALL="False" ;; esac fi ## 选择同步软件源所使用的 WEB 协议( HTTP:80 端口,HTTPS:443 端口) 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 [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) WEB_PROTOCOL="http" ;; [Nn] | [Nn][Oo]) WEB_PROTOCOL="https" ;; *) echo -e "\n$WARN 输入错误,默认使用 HTTPS 协议!" WEB_PROTOCOL="https" ;; esac fi ## 关闭防火墙和SELinux [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ] && CloseFirewall } ## 生成 CentOS 官方 repo 源文件 function GenRepoFiles_CentOS() { case ${SYSTEM_VERSION_NUMBER} in 8) cat >$Dir_RedHatRepos/CentOS-Linux-AppStream.repo <<\EOF # CentOS-Linux-AppStream.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [appstream] name=CentOS Linux $releasever - AppStream mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-BaseOS.repo <<\EOF # CentOS-Linux-BaseOS.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [baseos] name=CentOS Linux $releasever - BaseOS mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-ContinuousRelease.repo <<\EOF # CentOS-Linux-ContinuousRelease.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. # # The Continuous Release (CR) repository contains packages for the next minor # release of CentOS Linux. This repository only has content in the time period # between an upstream release and the official CentOS Linux release. These # packages have not been fully tested yet and should be considered beta # quality. They are made available for people willing to test and provide # feedback for the next release. [cr] name=CentOS Linux $releasever - ContinuousRelease mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cr&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/cr/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-Debuginfo.repo <<\EOF # CentOS-Linux-Debuginfo.repo # # All debug packages are merged into a single repo, split by basearch, and are # not signed. [debuginfo] name=CentOS Linux $releasever - Debuginfo baseurl=http://debuginfo.centos.org/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-Devel.repo <<\EOF # CentOS-Linux-Devel.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [devel] name=CentOS Linux $releasever - Devel WARNING! FOR BUILDROOT USE ONLY! mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=Devel&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/Devel/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-Extras.repo <<\EOF # CentOS-Linux-Extras.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [extras] name=CentOS Linux $releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-FastTrack.repo <<\EOF # CentOS-Linux-FastTrack.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [fasttrack] name=CentOS Linux $releasever - FastTrack mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/fasttrack/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-HighAvailability.repo <<\EOF # CentOS-Linux-HighAvailability.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [ha] name=CentOS Linux $releasever - HighAvailability mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=HighAvailability&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/HighAvailability/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-Media.repo <<\EOF # CentOS-Linux-Media.repo # # You can use this repo to install items directly off the installation media. # Verify your mount point matches one of the below file:// paths. [media-baseos] name=CentOS Linux $releasever - Media - BaseOS baseurl=file:///media/CentOS/BaseOS file:///media/cdrom/BaseOS file:///media/cdrecorder/BaseOS gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [media-appstream] name=CentOS Linux $releasever - Media - AppStream baseurl=file:///media/CentOS/AppStream file:///media/cdrom/AppStream file:///media/cdrecorder/AppStream gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-Plus.repo <<\EOF # CentOS-Linux-Plus.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [plus] name=CentOS Linux $releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/centosplus/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-PowerTools.repo <<\EOF # CentOS-Linux-PowerTools.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [powertools] name=CentOS Linux $releasever - PowerTools mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=PowerTools&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$releasever/PowerTools/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Linux-Sources.repo <<\EOF # CentOS-Linux-Sources.repo [baseos-source] name=CentOS Linux $releasever - BaseOS - Source baseurl=http://vault.centos.org/$contentdir/$releasever/BaseOS/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [appstream-source] name=CentOS Linux $releasever - AppStream - Source baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [extras-source] name=CentOS Linux $releasever - Extras - Source baseurl=http://vault.centos.org/$contentdir/$releasever/extras/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [plus-source] name=CentOS Linux $releasever - Plus - Source baseurl=http://vault.centos.org/$contentdir/$releasever/centosplus/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF ;; 7) cat >$Dir_RedHatRepos/CentOS-Base.repo <<\EOF # CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOF cat >$Dir_RedHatRepos/CentOS-CR.repo <<\EOF # CentOS-CR.repo # # The Continuous Release ( CR ) repository contains rpms that are due in the next # release for a specific CentOS Version ( eg. next release in CentOS-7 ); these rpms # are far less tested, with no integration checking or update path testing having # taken place. They are still built from the upstream sources, but might not map # to an exact upstream distro release. # # These packages are made available soon after they are built, for people willing # to test their environments, provide feedback on content for the next release, and # for people looking for early-access to next release content. # # The CR repo is shipped in a disabled state by default; its important that users # understand the implications of turning this on. # # NOTE: We do not use a mirrorlist for the CR repos, to ensure content is available # to everyone as soon as possible, and not need to wait for the external # mirror network to seed first. However, many local mirrors will carry CR repos # and if desired you can use one of these local mirrors by editing the baseurl # line in the repo config below. # [cr] name=CentOS-$releasever - cr baseurl=http://mirror.centos.org/centos/$releasever/cr/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=0 EOF cat >$Dir_RedHatRepos/CentOS-Debuginfo.repo <<\EOF # CentOS-Debug.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # All debug packages from all the various CentOS-7 releases # are merged into a single repo, split by BaseArch # # Note: packages in the debuginfo repo are currently not signed # [base-debuginfo] name=CentOS-7 - Debuginfo baseurl=http://debuginfo.centos.org/7/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7 enabled=0 # EOF cat >$Dir_RedHatRepos/CentOS-fasttrack.repo <<\EOF [fasttrack] name=CentOS-7 - fasttrack mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOF cat >$Dir_RedHatRepos/CentOS-Media.repo <<\EOF # CentOS-Media.repo # # This repo can be used with mounted DVD media, verify the mount point for # CentOS-7. You can use this repo and yum to install items directly off the # DVD ISO that we release. # # To use this repo, put in your DVD and use it with the other repos too: # yum --enablerepo=c7-media [command] # # or for ONLY the media repo, do this: # # yum --disablerepo=\* --enablerepo=c7-media [command] [c7-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOF cat >$Dir_RedHatRepos/CentOS-Sources.repo <<\EOF # CentOS-Sources.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base-source] name=CentOS-$releasever - Base Sources baseurl=http://vault.centos.org/centos/$releasever/os/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates [updates-source] name=CentOS-$releasever - Updates Sources baseurl=http://vault.centos.org/centos/$releasever/updates/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras-source] name=CentOS-$releasever - Extras Sources baseurl=http://vault.centos.org/centos/$releasever/extras/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus-source] name=CentOS-$releasever - Plus Sources baseurl=http://vault.centos.org/centos/$releasever/centosplus/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 EOF ;; esac } ## 生成 CentOS Stream 官方 repo 源文件 function GenRepoFiles_CentOSStream() { case ${SYSTEM_VERSION_NUMBER} in 9) cat >$Dir_RedHatRepos/centos.repo <<\EOF [baseos] name=CentOS Stream $releasever - BaseOS #baseurl=https://mirror.stream.centos.org/$releasever-stream/BaseOS/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=1 [baseos-debug] name=CentOS Stream $releasever - BaseOS - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [baseos-source] name=CentOS Stream $releasever - BaseOS - Source metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [appstream] name=CentOS Stream $releasever - AppStream #baseurl=https://mirror.stream.centos.org/$releasever-stream/AppStream/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=1 [appstream-debug] name=CentOS Stream $releasever - AppStream - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [appstream-source] name=CentOS Stream $releasever - AppStream - Source metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [crb] name=CentOS Stream $releasever - CRB #baseurl=https://mirror.stream.centos.org/$releasever-stream/CRB/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-crb-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=0 [crb-debug] name=CentOS Stream $releasever - CRB - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-crb-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [crb-source] name=CentOS Stream $releasever - CRB - Source metalink=https://mirrors.centos.org/metalink?repo=centos-crb-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 EOF cat >$Dir_RedHatRepos/centos-addons.repo <<\EOF [highavailability] name=CentOS Stream $releasever - HighAvailability #baseurl=https://mirror.stream.centos.org/$releasever-stream/HighAvailability/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=0 [highavailability-debug] name=CentOS Stream $releasever - HighAvailability - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [highavailability-source] name=CentOS Stream $releasever - HighAvailability - Source metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [nfv] name=CentOS Stream $releasever - NFV #baseurl=https://mirror.stream.centos.org/$releasever-stream/NFV/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=0 [nfv-debug] name=CentOS Stream $releasever - NFV - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [nfv-source] name=CentOS Stream $releasever - NFV - Source metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [rt] name=CentOS Stream $releasever - RT #baseurl=https://mirror.stream.centos.org/$releasever-stream/RT/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-rt-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=0 [rt-debug] name=CentOS Stream $releasever - RT - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-rt-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [rt-source] name=CentOS Stream $releasever - RT - Source metalink=https://mirrors.centos.org/metalink?repo=centos-rt-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [resilientstorage] name=CentOS Stream $releasever - ResilientStorage #baseurl=https://mirror.stream.centos.org/$releasever-stream/ResilientStorage/$basearch/os/ metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=0 [resilientstorage-debug] name=CentOS Stream $releasever - ResilientStorage - Debug metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-debug-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [resilientstorage-source] name=CentOS Stream $releasever - ResilientStorage - Source metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 [extras-common] name=CentOS Stream $releasever - Extras packages #baseurl=https://mirror.stream.centos.org/SIGs/$releasever-stream/extras/$basearch/extras-common/ metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-$stream&arch=$basearch&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512 gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h countme=1 enabled=1 [extras-common-source] name=CentOS Stream $releasever - Extras packages - Source metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-source-$stream&arch=source&protocol=https,http gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512 gpgcheck=1 repo_gpgcheck=0 metadata_expire=6h enabled=0 EOF ;; 8) cat >$Dir_RedHatRepos/CentOS-Stream-AppStream.repo <<\EOF # CentOS-Stream-AppStream.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [appstream] name=CentOS Stream $releasever - AppStream mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=AppStream&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/AppStream/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-BaseOS.repo <<\EOF # CentOS-Stream-BaseOS.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [baseos] name=CentOS Stream $releasever - BaseOS mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=BaseOS&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-Debuginfo.repo <<\EOF # CentOS-Stream-Debuginfo.repo # # All debug packages are merged into a single repo, split by basearch, and are # not signed. [debuginfo] name=CentOS Stream $releasever - Debuginfo baseurl=http://debuginfo.centos.org/$stream/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-Extras-common.repo <<\EOF # CentOS-Stream-Extras-common.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [extras-common] name=CentOS Stream $releasever - Extras common packages mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=extras-extras-common #baseurl=http://mirror.centos.org/$contentdir/$stream/extras/$basearch/extras-common/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras EOF cat >$Dir_RedHatRepos/CentOS-Stream-Extras.repo <<\EOF # CentOS-Stream-Extras.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [extras] name=CentOS Stream $releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/extras/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-HighAvailability.repo <<\EOF # CentOS-Stream-HighAvailability.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [ha] name=CentOS Stream $releasever - HighAvailability mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=HighAvailability&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/HighAvailability/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-Media.repo <<\EOF # CentOS-Stream-Media.repo # # You can use this repo to install items directly off the installation media. # Verify your mount point matches one of the below file:// paths. [media-baseos] name=CentOS Stream $releasever - Media - BaseOS baseurl=file:///media/CentOS/BaseOS file:///media/cdrom/BaseOS file:///media/cdrecorder/BaseOS gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [media-appstream] name=CentOS Stream $releasever - Media - AppStream baseurl=file:///media/CentOS/AppStream file:///media/cdrom/AppStream file:///media/cdrecorder/AppStream gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-NFV.repo <<\EOF # CentOS-Stream-NFV.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [nfv] name=CentOS Stream $releasever - NFV mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=NFV&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/NFV/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-PowerTools.repo <<\EOF # CentOS-Stream-PowerTools.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [powertools] name=CentOS Stream $releasever - PowerTools mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=PowerTools&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/PowerTools/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-RealTime.repo <<\EOF # CentOS-Stream-RealTime.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [rt] name=CentOS Stream $releasever - RealTime mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=RT&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/RT/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-ResilientStorage.repo <<\EOF # CentOS-Stream-ResilientStorage.repo # # The mirrorlist system uses the connecting IP address of the client and the # update status of each mirror to pick current mirrors that are geographically # close to the client. You should use this for CentOS updates unless you are # manually picking other mirrors. # # If the mirrorlist does not work for you, you can try the commented out # baseurl line instead. [resilientstorage] name=CentOS Stream $releasever - ResilientStorage mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=ResilientStorage&infra=$infra #baseurl=http://mirror.centos.org/$contentdir/$stream/ResilientStorage/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF cat >$Dir_RedHatRepos/CentOS-Stream-Sources.repo <<\EOF # CentOS-Stream-Sources.repo [baseos-source] name=CentOS Stream $releasever - BaseOS - Source baseurl=http://vault.centos.org/$contentdir/$stream/BaseOS/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [appstream-source] name=CentOS Stream $releasever - AppStream - Source baseurl=http://vault.centos.org/$contentdir/$stream/AppStream/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [powertools-source] name=CentOS Stream $releasever - PowerTools - Source baseurl=http://vault.centos.org/$contentdir/$stream/PowerTools/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [extras-source] name=CentOS Stream $releasever - Extras - Source baseurl=http://vault.centos.org/$contentdir/$stream/extras/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [ha-source] name=CentOS Stream $releasever - HighAvailability - Source baseurl=http://vault.centos.org/$contentdir/$stream/HighAvailability/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [rt-source] name=CentOS Stream $releasever - RT - Source baseurl=http://vault.centos.org/$contentdir/$stream/RT/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [resilientstorage-source] name=CentOS Stream $releasever - ResilientStorage - Source baseurl=http://vault.centos.org/$contentdir/$stream/ResilientStorage/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [nfv-source] name=CentOS Stream $releasever - NFV - Source baseurl=http://vault.centos.org/$contentdir/$stream/NFV/Source/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial EOF ;; esac } ## 生成 Fedora 官方 repo 源文件 function GenRepoFiles_Fedora() { cat >$Dir_RedHatRepos/fedora-cisco-openh264.repo <<\EOF [fedora-cisco-openh264] name=Fedora $releasever openh264 (From Cisco) - $basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-cisco-openh264-$releasever&arch=$basearch type=rpm enabled=1 metadata_expire=14d repo_gpgcheck=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=True [fedora-cisco-openh264-debuginfo] name=Fedora $releasever openh264 (From Cisco) - $basearch - Debug metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-cisco-openh264-debug-$releasever&arch=$basearch type=rpm enabled=0 metadata_expire=14d repo_gpgcheck=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=True EOF cat >$Dir_RedHatRepos/fedora.repo <<\EOF [fedora] name=Fedora $releasever - $basearch #baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/ metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch enabled=1 countme=1 metadata_expire=7d repo_gpgcheck=0 type=rpm gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [fedora-debuginfo] name=Fedora $releasever - $basearch - Debug #baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Everything/$basearch/debug/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch enabled=0 metadata_expire=7d repo_gpgcheck=0 type=rpm gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [fedora-source] name=Fedora $releasever - Source #baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Everything/source/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-source-$releasever&arch=$basearch enabled=0 metadata_expire=7d repo_gpgcheck=0 type=rpm gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False EOF cat >$Dir_RedHatRepos/fedora-updates.repo <<\EOF [updates] name=Fedora $releasever - $basearch - Updates #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Everything/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=1 countme=1 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-debuginfo] name=Fedora $releasever - $basearch - Updates - Debug #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Everything/$basearch/debug/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-source] name=Fedora $releasever - Updates Source #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Everything/SRPMS/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-source-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False EOF cat >$Dir_RedHatRepos/fedora-modular.repo <<\EOF [fedora-modular] name=Fedora Modular $releasever - $basearch #baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Modular/$basearch/os/ metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-$releasever&arch=$basearch enabled=1 countme=1 #metadata_expire=7d repo_gpgcheck=0 type=rpm gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [fedora-modular-debuginfo] name=Fedora Modular $releasever - $basearch - Debug #baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Modular/$basearch/debug/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-debug-$releasever&arch=$basearch enabled=0 metadata_expire=7d repo_gpgcheck=0 type=rpm gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [fedora-modular-source] name=Fedora Modular $releasever - Source #baseurl=http://download.example/pub/fedora/linux/releases/$releasever/Modular/source/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-modular-source-$releasever&arch=$basearch enabled=0 metadata_expire=7d repo_gpgcheck=0 type=rpm gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False EOF cat >$Dir_RedHatRepos/fedora-updates-modular.repo <<\EOF [updates-modular] name=Fedora Modular $releasever - $basearch - Updates #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Modular/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-f$releasever&arch=$basearch enabled=1 countme=1 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-modular-debuginfo] name=Fedora Modular $releasever - $basearch - Updates - Debug #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Modular/$basearch/debug/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-debug-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-modular-source] name=Fedora Modular $releasever - Updates Source #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Modular/SRPMS/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-modular-source-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False EOF cat >$Dir_RedHatRepos/fedora-updates-testing.repo <<\EOF [updates-testing] name=Fedora $releasever - $basearch - Test Updates #baseurl=http://download.example/pub/fedora/linux/updates/testing/$releasever/Everything/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f$releasever&arch=$basearch enabled=0 countme=1 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-testing-debuginfo] name=Fedora $releasever - $basearch - Test Updates Debug #baseurl=http://download.example/pub/fedora/linux/updates/testing/$releasever/Everything/$basearch/debug/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-debug-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-testing-source] name=Fedora $releasever - Test Updates Source #baseurl=http://download.example/pub/fedora/linux/updates/testing/$releasever/Everything/SRPMS/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-source-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False EOF cat >$Dir_RedHatRepos/fedora-updates-testing-modular.repo <<\EOF [updates-testing-modular] name=Fedora Modular $releasever - $basearch - Test Updates #baseurl=http://download.example/pub/fedora/linux/updates/testing/$releasever/Modular/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-modular-f$releasever&arch=$basearch enabled=0 countme=1 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-testing-modular-debuginfo] name=Fedora Modular $releasever - $basearch - Test Updates Debug #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Modular/$basearch/debug/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-modular-debug-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates-testing-modular-source] name=Fedora Modular $releasever - Test Updates Source #baseurl=http://download.example/pub/fedora/linux/updates/$releasever/Modular/SRPMS/ metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-testing-modular-source-f$releasever&arch=$basearch enabled=0 repo_gpgcheck=0 type=rpm gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False EOF } ## 生成 EPEL 扩展 repo 官方源文件 function EPELReposCreate() { cd $Dir_RedHatRepos case ${SYSTEM_VERSION_NUMBER} in 9) cat >$Dir_RedHatRepos/epel.repo <<\EOF [epel] name=Extra Packages for Enterprise Linux $releasever - $basearch # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=1 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever [epel-debuginfo] name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/debug/ metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux $releasever - $basearch - Source # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/$releasever/Everything/source/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever gpgcheck=1 EOF cat >$Dir_RedHatRepos/epel-testing.repo <<\EOF [epel-testing] name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/testing/$releasever/Everything/$basearch/ metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever [epel-testing-debuginfo] name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch - Debug # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/testing/$releasever/Everything/$basearch/debug/ metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever gpgcheck=1 [epel-testing-source] name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch - Source # It is much more secure to use the metalink, but if you wish to use a local mirror # place its address here. #baseurl=https://download.example/pub/epel/testing/$releasever/Everything/source/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever gpgcheck=1 EOF ;; 8) cat >$Dir_RedHatRepos/epel.repo <<\EOF [epel] name=Extra Packages for Enterprise Linux $releasever - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/8/Everything/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 [epel-debuginfo] name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug #baseurl=https://download.fedoraproject.org/pub/epel/8/Everything/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux $releasever - $basearch - Source #baseurl=https://download.fedoraproject.org/pub/epel/8/Everything/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 EOF cat >$Dir_RedHatRepos/epel-modular.repo <<\EOF [epel-modular] name=Extra Packages for Enterprise Linux Modular $releasever - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/8/Modular/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-modular-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 [epel-modular-debuginfo] name=Extra Packages for Enterprise Linux Modular $releasever - $basearch - Debug #baseurl=https://download.fedoraproject.org/pub/epel/8/Modular/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-modular-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 [epel-modular-source] name=Extra Packages for Enterprise Linux Modular $releasever - $basearch - Source #baseurl=https://download.fedoraproject.org/pub/epel/8/Modular/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-modular-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 EOF cat >$Dir_RedHatRepos/epel-playground.repo <<\EOF [epel-playground] name=Extra Packages for Enterprise Linux $releasever - Playground - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/playground/$releasever/Everything/$basearch/os metalink=https://mirrors.fedoraproject.org/metalink?repo=playground-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 [epel-playground-debuginfo] name=Extra Packages for Enterprise Linux $releasever - Playground - $basearch - Debug #baseurl=https://download.fedoraproject.org/pub/epel/playground/$releasever/Everything/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=playground-debug-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 [epel-playground-source] name=Extra Packages for Enterprise Linux $releasever - Playground - $basearch - Source #baseurl=https://download.fedoraproject.org/pub/epel/playground/$releasever/Everything/source/tree/ metalink=https://mirrors.fedoraproject.org/metalink?repo=playground-source-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 EOF cat >$Dir_RedHatRepos/epel-testing.repo <<\EOF [epel-testing] name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/testing/$releasever/Everything/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 [epel-testing-debuginfo] name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch - Debug #baseurl=https://download.fedoraproject.org/pub/epel/testing/$releasever/Everything/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 [epel-testing-source] name=Extra Packages for Enterprise Linux $releasever - Testing - $basearch - Source #baseurl=https://download.fedoraproject.org/pub/epel/testing/$releasever/Everything/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 EOF cat >$Dir_RedHatRepos/epel-testing-modular.repo <<\EOF [epel-testing-modular] name=Extra Packages for Enterprise Linux Modular $releasever - Testing - $basearch #baseurl=https://download.fedoraproject.org/pub/epel/testing/$releasever/Modular/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-modular-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 [epel-testing-modular-debuginfo] name=Extra Packages for Enterprise Linux Modular $releasever - Testing - $basearch - Debug #baseurl=https://download.fedoraproject.org/pub/epel/testing/$releasever/Modular/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-modular-debug-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 [epel-testing-modular-source] name=Extra Packages for Enterprise Linux Modular $releasever - Testing - $basearch - Source #baseurl=https://download.fedoraproject.org/pub/epel/testing/$releasever/Modular/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-modular-source-epel$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 gpgcheck=1 EOF ;; 7) cat >$Dir_RedHatRepos/epel.repo <<\EOF [epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source #baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 EOF cat >$Dir_RedHatRepos/epel-testing.repo <<\EOF [epel-testing] name=Extra Packages for Enterprise Linux 7 - Testing - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/testing/7/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-epel7&arch=$basearch failovermethod=priority enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-testing-debuginfo] name=Extra Packages for Enterprise Linux 7 - Testing - $basearch - Debug #baseurl=http://download.fedoraproject.org/pub/epel/testing/7/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-debug-epel7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 [epel-testing-source] name=Extra Packages for Enterprise Linux 7 - Testing - $basearch - Source #baseurl=http://download.fedoraproject.org/pub/epel/testing/7/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=testing-source-epel7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 EOF ;; esac } Combin_Function