From e90481c48f634a776ca38f1a106334ed01b9a453 Mon Sep 17 00:00:00 2001 From: SuperManito <68613938+SuperManito@users.noreply.github.com> Date: Fri, 5 May 2023 22:33:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/script-gh.md | 6 - docs/script.md | 6 - docs/script.sh | 3930 +++++++++++++++++++++++++++++++++++++++++++++ docs/use/index.md | 4 +- 4 files changed, 3932 insertions(+), 14 deletions(-) delete mode 100644 docs/script-gh.md delete mode 100644 docs/script.md create mode 100644 docs/script.sh diff --git a/docs/script-gh.md b/docs/script-gh.md deleted file mode 100644 index b3bed2b..0000000 --- a/docs/script-gh.md +++ /dev/null @@ -1,6 +0,0 @@ - -301 Moved -

301 Moved

-The document has moved -here. - diff --git a/docs/script.md b/docs/script.md deleted file mode 100644 index c3a9848..0000000 --- a/docs/script.md +++ /dev/null @@ -1,6 +0,0 @@ - -301 Moved -

301 Moved

-The document has moved -here. - diff --git a/docs/script.sh b/docs/script.sh new file mode 100644 index 0000000..aca4654 --- /dev/null +++ b/docs/script.sh @@ -0,0 +1,3930 @@ +#!/bin/bash +## Author: SuperManito +## Modified: 2023-05-05 +## License: MIT +## Github: https://github.com/SuperManito/LinuxMirrors +## Website: https://linuxmirrors.cn + +## 软件源列表 +# 国内格式:"软件源名称@软件源地址" +mirror_list_default=( + "阿里云@mirrors.aliyun.com" + "腾讯云@mirrors.tencent.com" + "华为云@repo.huaweicloud.com" + "网易@mirrors.163.com" + "搜狐@mirrors.sohu.com" + "清华大学@mirrors.tuna.tsinghua.edu.cn" + "北京大学@mirrors.pku.edu.cn" + "浙江大学@mirrors.zju.edu.cn" + "南京大学@mirrors.nju.edu.cn" + "重庆大学@mirrors.cqu.edu.cn" + "兰州大学@mirror.lzu.edu.cn" + "上海交通大学@mirror.sjtu.edu.cn" + "哈尔滨工业大学@mirrors.hit.edu.cn" + "中国科学技术大学@mirrors.ustc.edu.cn" + "中国科学院软件研究所@mirror.iscas.ac.cn" +) +# 海外格式:"洲 · 软件源名称 · 国家/地区@软件源地址",修改前请先前往官网阅读添加规范 +mirror_list_abroad=( + "亚洲 · 科盈电信 · 香港@mirror.hkt.cc" + "亚洲 · xTom · 香港@mirrors.xtom.hk" + "亚洲 · 01Link · 香港@mirror.01link.hk" + "亚洲 · 新加坡国立大学(NUS) · 新加坡@download.nus.edu.sg/mirror" + "亚洲 · SG.GS · 新加坡@mirror.sg.gs" + "亚洲 · Neo Soon Keat · 新加坡@mirror.soonkeat.sg" + "亚洲 · 自由软件实验室(NCHC) · 台湾@free.nchc.org.tw" + "亚洲 · OSS Planet · 台湾@mirror.ossplanet.net" + "亚洲 · 国立阳明交通大学 · 台湾@linux.cs.nctu.edu.tw" + "亚洲 · 淡江大学 · 台湾@ftp.tku.edu.tw" + "亚洲 · AniGil Linux Archive · 韩国@mirror.anigil.com" + "亚洲 · 工业网络安全中心(ICSCoE) · 日本@ftp.udx.icscoe.jp/Linux" + "亚洲 · Internet Initiative Japan(IIJ) · 日本@ftp.iij.ad.jp/pub/linux" + "亚洲 · 北陆先端科学技术大学院大学(JAIST) · 日本@ftp.jaist.ac.jp/pub/Linux" + "亚洲 · 山形大学 · 日本@linux2.yz.yamagata-u.ac.jp/pub/Linux" + "亚洲 · xTom · 日本@mirrors.xtom.jp" + "亚洲 · GB Network Solutions · 马来西亚@mirrors.gbnetwork.com" + "亚洲 · 孔敬大学 · 泰国@mirror.kku.ac.th" + "亚洲 · RISE · 菲律宾@mirror.rise.ph" + "欧洲 · Vorboss Ltd · 英国@mirror.vorboss.net" + "欧洲 · QuickHost · 英国@mirror.quickhost.uk" + "欧洲 · dogado · 德国@mirror.dogado.de" + "欧洲 · xTom · 德国@mirrors.xtom.de" + "欧洲 · 亚琛工业大学(RWTH Aachen) · 德国@ftp.halifax.rwth-aachen.de" + "欧洲 · 德累斯顿大学(AG DSN) · 德国@ftp.agdsn.de" + "欧洲 · CCIN2P3 · 法国@mirror.in2p3.fr/pub/linux" + "欧洲 · Ircam · 法国@mirrors.ircam.fr/pub" + "欧洲 · Crans · 法国@eclats.crans.org" + "欧洲 · CRIHAN · 法国@ftp.crihan.fr" + "欧洲 · xTom · 荷兰@mirrors.xtom.nl" + "欧洲 · DataPacket · 荷兰@mirror.datapacket.com" + "欧洲 · Linux Kernel · 荷兰@eu.edge.kernel.org" + "欧洲 · xTom · 爱沙尼亚@mirrors.xtom.ee" + "欧洲 · netsite · 丹麦@mirror.netsite.dk" + "欧洲 · Dotsrc · 丹麦@mirrors.dotsrc.org" + "欧洲 · Academic Computer Club · 瑞典@mirror.accum.se" + "欧洲 · Lysator · 瑞典@ftp.lysator.liu.se" + "欧洲 · Yandex · 俄罗斯@mirror.yandex.ru" + "欧洲 · ia64 · 俄罗斯@mirror.linux-ia64.org" + "欧洲 · Truenetwork · 俄罗斯@mirror.truenetwork.ru" + "欧洲 · Belgian Research Network · 比利时@ftp.belnet.be/mirror" + "欧洲 · 克里特大学计算机中心 · 希腊@ftp.cc.uoc.gr/mirrors/linux" + "欧洲 · 马萨里克大学信息学院 · 捷克@ftp.fi.muni.cz/pub/linux" + "欧洲 · 捷克理工大学学生会俱乐部(Silicon Hill) · 捷克@ftp.sh.cvut.cz" + "欧洲 · Vodafone · 捷克@mirror.karneval.cz/pub/linux" + "欧洲 · CZ.NIC · 捷克@mirrors.nic.cz" + "欧洲 · 苏黎世联邦理工学院 · 瑞士@mirror.ethz.ch" + "北美 · Linux Kernel · 美国@mirrors.kernel.org" + "北美 · 麻省理工学院(MIT) · 美国@mirrors.mit.edu" + "北美 · 普林斯顿大学数学系 · 美国@mirror.math.princeton.edu/pub" + "北美 · 俄勒冈州立大学开源实验室 · 美国@ftp-chi.osuosl.org/pub" + "北美 · Fremont Cabal Internet Exchange(FCIX) · 美国@mirror.fcix.net" + "北美 · xTom · 美国@mirrors.xtom.com" + "北美 · Steadfast · 美国@mirror.steadfast.net" + "北美 · 不列颠哥伦比亚大学 · 加拿大@mirror.it.ubc.ca" + "北美 · GoCodeIT · 加拿大@mirror.xenyth.net" + "北美 · Switch · 加拿大@mirrors.switch.ca" + "南美 · PoP-SC · 巴西@mirror.pop-sc.rnp.br/mirror" + "南美 · 蓬塔格罗萨州立大学 · 巴西@mirror.uepg.br" + "南美 · UFSCar · 巴西@mirror.ufscar.br" + "南美 · Sysarmy Community · 阿根廷@mirrors.eze.sysarmy.com" + "大洋 · Fremont Cabal Internet Exchange(FCIX) · 澳大利亚@gsl-syd.mm.fcix.net" + "大洋 · AARNet · 澳大利亚@mirror.aarnet.edu.au/pub" + "大洋 · DataMossa · 澳大利亚@mirror.datamossa.io" + "大洋 · Amaze · 澳大利亚@mirror.amaze.com.au" + "大洋 · xTom · 澳大利亚@mirrors.xtom.au" + "大洋 · Over the Wire · 澳大利亚@mirror.overthewire.com.au" + "大洋 · Free Software Mirror Group · 新西兰@mirror.fsmg.org.nz" + "非洲 · Liquid Telecom · 肯尼亚@mirror.liquidtelecom.com" + "非洲 · Dimension Data · 南非@mirror.dimensiondata.com" +) + +## 配置需要区分公网地址和内网地址的软件源(不分地域) +# 配置方法:需要同时在两个数组变量中分别定义软件源地址,并且保证排列顺序一致 +# 工作原理:当检测到用户所选择的软件源地址在 “软件源公网地址列表” 中时就会询问是否切换为内网地址,然后从 “软件源内网地址列表” 相同的位置提取内网地址 +# 软件源公网地址列表 +mirror_list_extranet=( + "mirrors.aliyun.com" + "mirrors.tencent.com" + "repo.huaweicloud.com" +) +# 软件源内网地址列表 +mirror_list_intranet=( + "mirrors.cloud.aliyuncs.com" + "mirrors.tencentyun.com" + "mirrors.myhuaweicloud.com" +) + +############################################################################## + +## 定义系统判定变量 +SYSTEM_DEBIAN="Debian" +SYSTEM_UBUNTU="Ubuntu" +SYSTEM_KALI="Kali" +SYSTEM_REDHAT="RedHat" +SYSTEM_RHEL="RedHat" +SYSTEM_CENTOS="CentOS" +SYSTEM_CENTOS_STREAM="CentOS Stream" +SYSTEM_ROCKY="Rocky" +SYSTEM_FEDORA="Fedora" +SYSTEM_OPENEULER="openEuler" +SYSTEM_OPENSUSE="openSUSE" +SYSTEM_ARCH="Arch" + +## 定义目录和文件 +File_LinuxRelease=/etc/os-release +File_RedHatRelease=/etc/redhat-release +File_openEulerRelease=/etc/openEuler-release +File_ArchRelease=/etc/arch-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 +File_ArchMirrorList=/etc/pacman.d/mirrorlist +File_ArchMirrorListBackup=/etc/pacman.d/mirrorlist.bak +Dir_RedHatRepos=/etc/yum.repos.d +Dir_RedHatReposBackup=/etc/yum.repos.d.bak +Dir_openEulerRepos=/etc/yum.repos.d +Dir_openEulerReposBackup=/etc/yum.repos.d.bak +Dir_openSUSERepos=/etc/zypp/repos.d +Dir_openSUSEReposBackup=/etc/zypp/repos.d.bak + +## 定义颜色变量 +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]' + +## 其它 +WEBSITE="https://linuxmirrors.cn" + +function StartTitle() { + [ -z "${SOURCE}" ] && clear + echo -e ' +-----------------------------------+' + echo -e " | \033[0;1;35;95m⡇\033[0m \033[0;1;33;93m⠄\033[0m \033[0;1;32;92m⣀⡀\033[0m \033[0;1;36;96m⡀\033[0;1;34;94m⢀\033[0m \033[0;1;35;95m⡀⢀\033[0m \033[0;1;31;91m⡷\033[0;1;33;93m⢾\033[0m \033[0;1;32;92m⠄\033[0m \033[0;1;36;96m⡀⣀\033[0m \033[0;1;34;94m⡀\033[0;1;35;95m⣀\033[0m \033[0;1;31;91m⢀⡀\033[0m \033[0;1;33;93m⡀\033[0;1;32;92m⣀\033[0m \033[0;1;36;96m⢀⣀\033[0m |" + echo -e " | \033[0;1;31;91m⠧\033[0;1;33;93m⠤\033[0m \033[0;1;32;92m⠇\033[0m \033[0;1;36;96m⠇⠸\033[0m \033[0;1;34;94m⠣\033[0;1;35;95m⠼\033[0m \033[0;1;31;91m⠜⠣\033[0m \033[0;1;33;93m⠇\033[0;1;32;92m⠸\033[0m \033[0;1;36;96m⠇\033[0m \033[0;1;34;94m⠏\033[0m \033[0;1;35;95m⠏\033[0m \033[0;1;33;93m⠣⠜\033[0m \033[0;1;32;92m⠏\033[0m \033[0;1;34;94m⠭⠕\033[0m |" + echo -e ' +-----------------------------------+' + echo -e ' 欢迎使用 GNU/Linux 一键更换软件源脚本' +} + +function AuthorSignature() { + echo -e "[\033[1;34m官网\033[0m] ${WEBSITE}\n" +} + +## 权限判定 +function PermissionJudgment() { + if [ $UID -ne 0 ]; then + echo -e "\n$ERROR 权限不足,请使用 Root 用户运行本脚本\n" + exit 1 + fi +} + +## 系统判定变量 +function EnvJudgment() { + ## 定义系统名称 + SYSTEM_NAME="$(cat $File_LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")" + cat $File_LinuxRelease | grep "PRETTY_NAME=" -q + [ $? -eq 0 ] && SYSTEM_PRETTY_NAME="$(cat $File_LinuxRelease | grep -E "^PRETTY_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")" + ## 定义系统ID + SYSTEM_ID="$(cat $File_LinuxRelease | grep -E "^ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")" + ## 判定当前系统派系(Debian/RedHat/openEuler/openSUSE) + if [ -s $File_RedHatRelease ]; then + SYSTEM_FACTIONS="${SYSTEM_REDHAT}" + elif [ -s $File_DebianVersion ]; then + SYSTEM_FACTIONS="${SYSTEM_DEBIAN}" + elif [ -s $File_openEulerRelease ]; then + SYSTEM_FACTIONS="${SYSTEM_OPENEULER}" + elif [ -f $File_ArchRelease ]; then + SYSTEM_FACTIONS="${SYSTEM_ARCH}" + elif [[ "${SYSTEM_NAME}" == *"openSUSE"* ]]; then + SYSTEM_FACTIONS="${SYSTEM_OPENSUSE}" + else + echo -e "\n$ERROR 无法判断当前运行环境,请先确认本脚本是否已经适配当前操作系统\n" + exit 1 + fi + ## 开始使用 + StartTitle + ## 判定系统名称、版本、版本号 + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_DEBIAN}") + if [ ! -x /usr/bin/lsb_release ]; then + apt-get install -y lsb-release + if [ $? -ne 0 ]; then + echo -e "\n$ERROR lsb-release 软件包安装失败" + echo -e "\n本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统,因为正常情况下系统会自带该软件包,请自行安装后重新执行脚本!\n" + exit 1 + fi + fi + SYSTEM_JUDGMENT="$(lsb_release -is)" + SYSTEM_VERSION_CODENAME="$(lsb_release -cs)" + ;; + "${SYSTEM_REDHAT}") + SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | awk -F ' ' '{printf$1}')" + cat $File_RedHatRelease | grep -q "${SYSTEM_CENTOS_STREAM}" + [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}" + ;; + "${SYSTEM_OPENEULER}") + SYSTEM_JUDGMENT="$(cat $File_openEulerRelease | awk -F ' ' '{printf$1}')" + ;; + "${SYSTEM_OPENSUSE}") + SYSTEM_JUDGMENT="${SYSTEM_OPENSUSE}" + ;; + "${SYSTEM_ARCH}") + SYSTEM_JUDGMENT="${SYSTEM_ARCH}" + ;; + esac + ## 判定系统处理器架构 + case "$(uname -m)" in + x86_64) + DEVICE_ARCH="x86_64" + ;; + aarch64) + DEVICE_ARCH="ARM64" + ;; + armv7l) + DEVICE_ARCH="ARMv7" + ;; + armv6l) + DEVICE_ARCH="ARMv6" + ;; + i686) + DEVICE_ARCH="x86_32" + ;; + *) + DEVICE_ARCH="$(uname -m)" + ;; + esac + ## 定义软件源分支名称 + if [[ -z "${SOURCE_BRANCH}" ]]; then + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_UBUNTU}") + if [[ ${DEVICE_ARCH} == "x86_64" ]] || [[ ${DEVICE_ARCH} == *i?86* ]]; then + SOURCE_BRANCH="ubuntu" + else + SOURCE_BRANCH="ubuntu-ports" + fi + ;; + "${SYSTEM_ARCH}") + if [[ ${DEVICE_ARCH} == "x86_64" ]] || [[ ${DEVICE_ARCH} == *i?86* ]]; then + SOURCE_BRANCH="archlinux" + else + SOURCE_BRANCH="archlinuxarm" + fi + ;; + *) + SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")" + ;; + esac + + fi + ## 定义软件源同步/更新文字 + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_DEBIAN}") + SYNC_TXT="更新" + ;; + *) + SYNC_TXT="同步" + ;; + esac +} + +## 选择软件源 +function ChooseMirrors() { + ## 打印软件源列表 + function PrintMirrorsList() { + local tmp_mirror_name tmp_mirror_url arr_num default_mirror_name_length tmp_mirror_name_length tmp_spaces_nums a i j + ## 计算字符串长度 + function StringLength() { + local text=$1 + echo "${#text}" + } + echo -e '' + + local list_arr=() + local list_arr_sum=$(eval echo \${#$1[@]}) + for ((a = 0; a < $list_arr_sum; a++)); do + list_arr[$a]="$(eval echo \${$1[a]})" + done + if [ -x /usr/bin/printf ]; then + for ((i = 0; i < ${#list_arr[@]}; i++)); do + tmp_mirror_name=$(echo "${list_arr[i]}" | awk -F '@' '{print$1}') # 软件源名称 + # tmp_mirror_url=$(echo "${list_arr[i]}" | awk -F '@' '{print$2}') # 软件源地址 + arr_num=$((i + 1)) + default_mirror_name_length=${2:-"30"} # 默认软件源名称打印长度 + ## 补齐长度差异(中文的引号在等宽字体中占1格而非2格) + [[ $(echo "${tmp_mirror_name}" | grep -c "“") -gt 0 ]] && let default_mirror_name_length+=$(echo "${tmp_mirror_name}" | grep -c "“") + [[ $(echo "${tmp_mirror_name}" | grep -c "”") -gt 0 ]] && let default_mirror_name_length+=$(echo "${tmp_mirror_name}" | grep -c "”") + [[ $(echo "${tmp_mirror_name}" | grep -c "‘") -gt 0 ]] && let default_mirror_name_length+=$(echo "${tmp_mirror_name}" | grep -c "‘") + [[ $(echo "${tmp_mirror_name}" | grep -c "’") -gt 0 ]] && let default_mirror_name_length+=$(echo "${tmp_mirror_name}" | grep -c "’") + # 非一般字符长度 + tmp_mirror_name_length=$(StringLength $(echo "${tmp_mirror_name}" | sed "s| ||g" | sed "s|[0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·]||g;")) + ## 填充空格 + tmp_spaces_nums=$(($(($default_mirror_name_length - ${tmp_mirror_name_length} - $(StringLength "${tmp_mirror_name}"))) / 2)) + for ((j = 1; j <= ${tmp_spaces_nums}; j++)); do + tmp_mirror_name="${tmp_mirror_name} " + done + + printf " ❖ %-$(($default_mirror_name_length + ${tmp_mirror_name_length}))s %4s\n" "${tmp_mirror_name}" "$arr_num)" + done + else + for ((i = 0; i < ${#list_arr[@]}; i++)); do + tmp_mirror_name=$(echo "${list_arr[i]}" | awk -F '@' '{print$1}') # 软件源名称 + tmp_mirror_url=$(echo "${list_arr[i]}" | awk -F '@' '{print$2}') # 软件源地址 + arr_num=$((i + 1)) + + echo -e " ❖ $arr_num. ${tmp_mirror_url} | ${tmp_mirror_name}" + done + fi + } + + ## 选择软件源内网地址 + # 例如部分云计算厂商的镜像站区分外网(公网)地址和内网地址,内网地址仅面向云计算厂商云服务器用户使用 + # 内网地址一般不支持使用 HTTPS 协议,所以默认设置为 HTTP 协议 + function ChooseMirrorIntranetAddress() { + local intranet_source + for ((i = 0; i < ${#mirror_list_extranet[@]}; i++)); do + if [[ "${SOURCE}" == "${mirror_list_extranet[i]}" ]]; then + # echo "${SOURCE}" + intranet_source="${mirror_list_intranet[i]}" + # echo "${intranet_source}" + # exit + ONLY_HTTP="True" + break + else + continue + fi + done + if [[ ${USE_INTRANET_SOURCE} == "true" ]]; then + SOURCE="${intranet_source}" + elif [[ -z "${USE_INTRANET_SOURCE}" ]]; then + local CHOICE=$(echo -e "\n${BOLD}└─ 默认使用软件源的公网地址,是否继续? [Y/n] ${PLAIN}") + read -p "${CHOICE}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) ;; + [Nn] | [Nn][Oo]) + SOURCE="${intranet_source}" + echo -e "\n$WARN 已切换至内网专用地址,仅限在特定环境下使用!" + ;; + *) + echo -e "\n$WARN 输入错误,默认不使用内网地址!" + ;; + esac + fi + } + + function Title() { + local system_name="${SYSTEM_PRETTY_NAME:-"${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER}"}" + local arch="${DEVICE_ARCH}" + local date="$(date "+%Y-%m-%d %H:%M:%S")" + local timezone="$(timedatectl status 2>/dev/null | grep "Time zone" | awk -F ':' '{print$2}' | awk -F ' ' '{print$1}')" + + echo -e '' + echo -e " 运行环境 ${BLUE}${system_name} ${arch}${PLAIN}" + echo -e " 系统时间 ${BLUE}${date} ${timezone}${PLAIN}" + } + + Title + if [[ -z "${SOURCE}" ]]; then + if [[ ${USE_ABROAD_SOURCE} = "true" ]]; then + local mirror_list_name="mirror_list_abroad" + PrintMirrorsList "${mirror_list_name}" 60 + else + local mirror_list_name="mirror_list_default" + PrintMirrorsList "${mirror_list_name}" 31 + fi + + local CHOICE=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的软件源 [ 1-$(eval echo \${#$mirror_list_name[@]}) ]:${PLAIN}") + while true; do + read -p "${CHOICE}" INPUT + case "${INPUT}" in + [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) + local tmp_source="$(eval echo \${${mirror_list_name}[$(($INPUT - 1))]})" + if [[ -z "${tmp_source}" ]]; then + echo -e "\n$WARN 请输入有效的数字序号!" + else + SOURCE="$(eval echo \${${mirror_list_name}[$(($INPUT - 1))]} | awk -F '@' '{print$2}')" + # echo "${SOURCE}" + # exit + break + fi + ;; + *) + echo -e "\n$WARN 请输入数字序号以选择你想使用的软件源!" + ;; + esac + done + fi + + ## 选择软件源内网地址 + if [[ "${mirror_list_extranet[*]}" =~ (^|[^[:alpha:]])"${SOURCE}"([^[:alpha:]]|$) ]]; then + ChooseMirrorIntranetAddress + fi +} + +## 选择同步软件源所使用的 WEB 协议( HTTP:80 端口,HTTPS:443 端口) +function ChooseWebProtocol() { + if [[ -z "${WEB_PROTOCOL}" ]]; then + if [[ ${ONLY_HTTP} == "True" ]]; then + WEB_PROTOCOL="http" + else + local CHOICE=$(echo -e "\n${BOLD}└─ 软件源是否使用 HTTP 协议? [Y/n] ${PLAIN}") + read -p "${CHOICE}" 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 + fi + WEB_PROTOCOL="${WEB_PROTOCOL,,}" +} + +# 适用于 RHEL/CentOS(Stream)/RockyLinux 的 EPEL 附加软件包(安装/换源) +function ChooseInstallEPEL() { + if [[ -z "${INSTALL_EPEL}" ]]; then + case "${SYSTEM_JUDGMENT}" in + "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}" | "${SYSTEM_CENTOS_STREAM}" | "${SYSTEM_ROCKY}") + ## 判断是否已安装 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 + local CHOICE=$(echo -e "\n${BOLD}└─ 检测到系统已安装 EPEL 附加软件包,是否替换/覆盖软件源? [Y/n] ${PLAIN}") + else + local CHOICE=$(echo -e "\n${BOLD}└─ 是否安装 EPEL 附加软件包? [Y/n] ${PLAIN}") + fi + read -p "${CHOICE}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) + INSTALL_EPEL="True" + ;; + [Nn] | [Nn][Oo]) + INSTALL_EPEL="False" + ;; + *) + echo -e "\n$WARN 输入错误,默认不更换!" + INSTALL_EPEL="False" + ;; + esac + ;; + esac + fi +} + +## 关闭防火墙和SELinux +function CloseFirewall() { + function Main() { + local SelinuxConf=/etc/selinux/config + systemctl disable --now firewalld >/dev/null 2>&1 + [ -s $SelinuxConf ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" $SelinuxConfig && setenforce 0 >/dev/null 2>&1 + } + + if [ -x /usr/bin/systemctl ]; then + if [[ $(systemctl is-active firewalld) == "active" ]]; then + if [[ ${CLOSE_FIREWALL} == "true" ]]; then + Main + elif [[ -z "${CLOSE_FIREWALL}" ]]; then + local CHOICE=$(echo -e "\n${BOLD}└─ 是否关闭防火墙和 SELinux ? [Y/n] ${PLAIN}") + read -p "${CHOICE}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) + Main + ;; + [Nn] | [Nn][Oo]) ;; + *) + echo -e "\n$WARN 输入错误,默认不关闭!" + ;; + esac + fi + fi + fi +} + +## 备份原有软件源 +function BackupOriginMirrors() { + if [[ $BACKUP == "true" || -z "${BACKUP}" ]]; then + local VERIFICATION_FILES=1 + local VERIFICATION_BACKUPFILES=1 + + 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=$? + ;; + "${SYSTEM_OPENEULER}") + ## 判断 /etc/yum.repos.d 目录下是否存在文件 + [ -d $Dir_openEulerRepos ] && ls $Dir_openEulerRepos | grep '\.repo$' -q + VERIFICATION_FILES=$? + ## 判断 /etc/yum.repos.d.bak 目录下是否存在文件 + [ -d $Dir_openEulerReposBackup ] && ls $Dir_openEulerReposBackup | grep '\.repo$' -q + VERIFICATION_BACKUPFILES=$? + ;; + "${SYSTEM_OPENSUSE}") + ## 判断 /etc/zypp/repos.d 目录下是否存在文件 + [ -d $Dir_openSUSERepos ] && ls $Dir_openSUSERepos | grep '\.repo$' -q + VERIFICATION_FILES=$? + ## 判断 /etc/zypp/repos.d.bak 目录下是否存在文件 + [ -d $Dir_openSUSEReposBackup ] && ls $Dir_openSUSEReposBackup | 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 + if [[ -z "${IGNORE_BACKUP_TIPS}" ]]; then + local 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 + fi + else + echo '' + cp -rvf $File_DebianSourceList $File_DebianSourceListBackup 2>&1 + echo -e "\n$COMPLETE 已备份原有 list 源文件" + 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 + if [[ -z "${IGNORE_BACKUP_TIPS}" ]]; then + local 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 + fi + else + [ ! -d $Dir_DebianExtendSourceBackup ] && mkdir -p $Dir_DebianExtendSourceBackup + echo '' + cp -rvf $Dir_DebianExtendSource/* $Dir_DebianExtendSourceBackup 2>&1 + echo -e "$COMPLETE 已备份原有 list 扩展源文件" + 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 + if [[ -z "${IGNORE_BACKUP_TIPS}" ]]; then + local 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 + fi + else + [ ! -d $Dir_RedHatReposBackup ] && mkdir -p $Dir_RedHatReposBackup + echo '' + cp -vrf $Dir_RedHatRepos/* $Dir_RedHatReposBackup 2>&1 + echo -e "\n$COMPLETE 已备份原有 repo 源文件" + sleep 1s + fi + else + [ -d $Dir_RedHatRepos ] || mkdir -p $Dir_RedHatRepos + fi + ;; + "${SYSTEM_OPENEULER}") + ## /etc/yum.repos.d + if [ ${VERIFICATION_FILES} -eq 0 ]; then + if [ -d $Dir_openEulerReposBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then + if [[ -z "${IGNORE_BACKUP_TIPS}" ]]; then + local CHOICE_BACKUP4=$(echo -e "\n${BOLD}└─ 检测到系统中存在已备份的 repo 源文件,是否跳过覆盖备份? [Y/n] ${PLAIN}") + read -p "${CHOICE_BACKUP4}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) ;; + [Nn] | [Nn][Oo]) + echo '' + cp -rvf $Dir_openEulerRepos/* $Dir_openEulerReposBackup 2>&1 + ;; + *) + echo -e "\n$WARN 输入错误,默认不覆盖!" + ;; + esac + fi + else + [ ! -d $Dir_openEulerReposBackup ] && mkdir -p $Dir_openEulerReposBackup + echo '' + cp -vrf $Dir_openEulerRepos/* $Dir_openEulerReposBackup 2>&1 + echo -e "\n$COMPLETE 已备份原有 repo 源文件" + sleep 1s + fi + else + [ -d $Dir_openEulerRepos ] || mkdir -p $Dir_openEulerRepos + fi + ;; + "${SYSTEM_OPENSUSE}") + ## /etc/zypp/repos.d + if [ ${VERIFICATION_FILES} -eq 0 ]; then + if [ -d $Dir_openSUSEReposBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then + if [[ -z "${IGNORE_BACKUP_TIPS}" ]]; then + local CHOICE_BACKUP4=$(echo -e "\n${BOLD}└─ 检测到系统中存在已备份的 repo 源文件,是否跳过覆盖备份? [Y/n] ${PLAIN}") + read -p "${CHOICE_BACKUP4}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) ;; + [Nn] | [Nn][Oo]) + echo '' + cp -rvf $Dir_openSUSERepos/* $Dir_openSUSEReposBackup 2>&1 + ;; + *) + echo -e "\n$WARN 输入错误,默认不覆盖!" + ;; + esac + fi + else + [ ! -d $Dir_openSUSEReposBackup ] && mkdir -p $Dir_openSUSEReposBackup + echo '' + cp -vrf $Dir_openSUSERepos/* $Dir_openSUSEReposBackup 2>&1 + echo -e "\n$COMPLETE 已备份原有 repo 源文件" + sleep 1s + fi + else + [ -d $Dir_openSUSERepos ] || mkdir -p $Dir_openSUSERepos + fi + ;; + "${SYSTEM_ARCH}") + ## /etc/pacman.d/mirrorlist + if [ -s $File_ArchMirrorList ]; then + if [ -s $File_ArchMirrorListBackup ]; then + if [[ -z "${IGNORE_BACKUP_TIPS}" ]]; then + local CHOICE_BACKUP5=$(echo -e "\n${BOLD}└─ 检测到系统中存在已备份的软件源文件,是否跳过覆盖备份? [Y/n] ${PLAIN}") + read -p "${CHOICE_BACKUP5}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) ;; + [Nn] | [Nn][Oo]) + echo '' + cp -rvf $File_ArchMirrorList $File_ArchMirrorListBackup 2>&1 + ;; + *) + echo -e "\n$WARN 输入错误,默认不覆盖!" + ;; + esac + fi + else + echo '' + cp -rvf $File_ArchMirrorList $File_ArchMirrorListBackup 2>&1 + echo -e "\n$COMPLETE 已备份原有软件源文件" + sleep 1s + fi + else + [ ! -f $File_ArchMirrorList ] && touch $File_ArchMirrorList + echo -e '' + fi + ;; + esac + fi +} + +## 移除原有软件源 +function RemoveOriginMirrors() { + 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 + ;; + "${SYSTEM_OPENEULER}") + [ -d $Dir_openEulerRepos ] && rm -rf $Dir_openEulerRepos/* + ;; + "${SYSTEM_OPENSUSE}") + [ -d $Dir_openSUSERepos ] && rm -rf $Dir_openSUSERepos/repo-* + ;; + "${SYSTEM_ARCH}") + [ -f $File_ArchMirrorList ] && sed -i '1,$d' $File_ArchMirrorList + ;; + esac +} + +## 换源 +function ChangeMirrors() { + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_DEBIAN}") + DebianMirrors + ;; + "${SYSTEM_REDHAT}") + RedHatMirrors + ;; + "${SYSTEM_OPENEULER}") + openEulerMirrors + ;; + "${SYSTEM_OPENSUSE}") + openSUSEMirrors + ;; + "${SYSTEM_ARCH}") + ArchMirrors + ;; + esac + echo -e "\n${WORKING} 开始${SYNC_TXT}软件源...\n" + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_DEBIAN}") + apt-get update + ;; + "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}") + yum makecache + ;; + "${SYSTEM_OPENSUSE}") + zypper ref + ;; + "${SYSTEM_ARCH}") + pacman -Sy + ;; + esac + if [ $? -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 -e "\n软件源地址:"${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}"\n" + exit 1 + fi +} + +## 更新软件包 +function UpdateSoftware() { + function Main() { + echo -e '' + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_DEBIAN}") + apt-get upgrade -y + ;; + "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}") + yum update -y + ;; + "${SYSTEM_OPENSUSE}") + zypper update -y + ;; + esac + } + function CleanCache() { + case "${SYSTEM_FACTIONS}" in + "${SYSTEM_DEBIAN}") + apt-get autoremove -y >/dev/null 2>&1 + apt-get clean >/dev/null 2>&1 + ;; + "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}") + yum autoremove -y >/dev/null 2>&1 + yum clean packages -y >/dev/null 2>&1 + ;; + "${SYSTEM_OPENSUSE}") + zypper clean >/dev/null 2>&1 + ;; + esac + echo -e "\n$COMPLETE 清理完毕" + } + function MainInteraction() { + local CHOICE=$(echo -e "\n${BOLD}└─ 是否跳过更新软件包? [Y/n] ${PLAIN}") + read -p "${CHOICE}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) ;; + [Nn] | [Nn][Oo]) + Main + if [[ ${CLEAN_CACHE} == "true" ]]; then + CleanCache + elif [[ -z "${CLEAN_CACHE}" ]]; then + CleanCacheInteraction + fi + ;; + *) + echo -e "\n$WARN 输入错误,默认不更新!" + ;; + esac + } + function CleanCacheInteraction() { + local CHOICE=$(echo -e "\n${BOLD}└─ 是否清理已下载的软件包缓存? [Y/n] ${PLAIN}") + read -p "${CHOICE}" INPUT + [[ -z "${INPUT}" ]] && INPUT=Y + case "${INPUT}" in + [Yy] | [Yy][Ee][Ss]) + CleanCache + ;; + [Nn] | [Nn][Oo]) ;; + *) + echo -e "\n$WARN 输入错误,默认不清理!" + ;; + esac + } + + 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 + fi + elif [[ -z "${UPDATA_SOFTWARE}" ]]; then + MainInteraction + fi + ;; + esac +} + +## 运行结束 +function RunEnd() { + echo -e "\n$COMPLETE 脚本执行结束\n" + AuthorSignature +} + +############################################################################## + +## 更换基于 Debian 系 Linux 发行版的软件源 +function DebianMirrors() { + local source_suffix + local TIPS="## 默认禁用源码镜像以提高速度,如需启用请自行取消注释" + local basic_url="${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}" + case "${SYSTEM_JUDGMENT}" in + "${SYSTEM_DEBIAN}") + case "${SYSTEM_VERSION_NUMBER}" in + 12) + source_suffix="main contrib non-free non-free-firmware" + ;; + *) + source_suffix="main contrib non-free" + ;; + esac + echo "${TIPS} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME} ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME} ${source_suffix} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME}-updates ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME}-updates ${source_suffix} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME}-backports ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME}-backports ${source_suffix}" >>$File_DebianSourceList + if [[ ${USE_ABROAD_SOURCE} == "true" ]]; then + echo "# deb ${basic_url}-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} +# # deb-src ${basic_url}-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} + +deb https://security.debian.org/debian-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} +# deb-src https://security.debian.org/debian-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix}" >>$File_DebianSourceList + else + echo "deb ${basic_url}-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} +# deb-src ${basic_url}-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} + +# deb https://security.debian.org/debian-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} +# # deb-src https://security.debian.org/debian-security ${SYSTEM_VERSION_CODENAME}-security ${source_suffix}" >>$File_DebianSourceList + fi + ;; + "${SYSTEM_UBUNTU}") + source_suffix="main restricted universe multiverse" + echo "${TIPS} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME} ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME} ${source_suffix} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME}-updates ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME}-updates ${source_suffix} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME}-backports ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME}-backports ${source_suffix} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} + +# deb http://security.ubuntu.com/ubuntu ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} +# # deb-src http://security.ubuntu.com/ubuntu ${SYSTEM_VERSION_CODENAME}-security ${source_suffix} + +## 预发布软件源(不建议启用) +# deb ${basic_url} ${SYSTEM_VERSION_CODENAME}-proposed ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME}-proposed ${source_suffix}" >>$File_DebianSourceList + ;; + "${SYSTEM_KALI}") + source_suffix="main non-free contrib" + echo "${TIPS} +deb ${basic_url} ${SYSTEM_VERSION_CODENAME} ${source_suffix} +# deb-src ${basic_url} ${SYSTEM_VERSION_CODENAME} ${source_suffix}" >>$File_DebianSourceList + ;; + esac +} + +## 更换基于 RedHat 系 Linux 发行版软件源 +function RedHatMirrors() { + ## 安装/更换 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:0:1}.noarch.rpm + fi + ## 删除原有 repo 源文件 + [ ${VERIFICATION_EPELFILES} -eq 0 ] && rm -rf $Dir_RedHatRepos/epel* + [ ${VERIFICATION_EPELBACKUPFILES} -eq 0 ] && rm -rf $Dir_RedHatReposBackup/epel* + ## 生成 repo 源文件 + GenRepoFiles_EPEL + + sed -i 's|^metalink=|#metalink=|g' $Dir_RedHatRepos/epel* + + # 更换 WEB 协议(HTTP/HTTPS) + case ${SYSTEM_VERSION_NUMBER:0:1} 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:0:1} 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 + } + + ## 生成基于 RedHat 发行版和及其衍生发行版的官方 repo 源文件 + case "${SYSTEM_JUDGMENT}" in + "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS}") + GenRepoFiles_CentOS ${SYSTEM_VERSION_NUMBER:0:1} + ;; + "${SYSTEM_CENTOS_STREAM}") + GenRepoFiles_CentOSStream ${SYSTEM_VERSION_NUMBER:0:1} + ;; + "${SYSTEM_ROCKY}") + GenRepoFiles_RockyLinux ${SYSTEM_VERSION_NUMBER:0:1} + ;; + "${SYSTEM_FEDORA}") + GenRepoFiles_Fedora + ;; + esac + + ## 修改源 + cd $Dir_RedHatRepos + case "${SYSTEM_JUDGMENT}" in + "${SYSTEM_RHEL}" | "${SYSTEM_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:0:1} -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: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 + ;; + "${SYSTEM_CENTOS_STREAM}") + # CentOS Stream 9 使用的是 centos-stream 镜像,而 CentOS Stream 8 使用的是 centos 镜像 + case ${SYSTEM_VERSION_NUMBER:0:1} in + 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}/${SOURCE_BRANCH}|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 + + # EPEL 附加软件包(安装/换源) + [ ${INSTALL_EPEL} = "True" ] && EPELMirrors + ;; + "${SYSTEM_ROCKY}") + 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|dl.rockylinux.org/\$contentdir|${SOURCE}/${SOURCE_BRANCH}|g" \ + rocky.repo \ + rocky-addons.repo \ + rocky-devel.repo \ + rocky-extras.repo + ;; + 8) + sed -i 's|^mirrorlist=|#mirrorlist=|g' Rocky-* + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" Rocky-* + # 更换软件源 + sed -i "s|dl.rockylinux.org/\$contentdir|${SOURCE}/${SOURCE_BRANCH}|g" Rocky-* + ;; + esac + + # EPEL 附加软件包(安装/换源) + [ ${INSTALL_EPEL} = "True" ] && EPELMirrors + ;; + "${SYSTEM_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}/${SOURCE_BRANCH}|g" \ + fedora.repo \ + fedora-updates.repo \ + fedora-modular.repo \ + fedora-updates-modular.repo \ + fedora-updates-testing.repo \ + fedora-updates-testing-modular.repo + ;; + esac +} + +## 更换基于 openEuler 发行版的软件源 +function openEulerMirrors() { + GenRepoFiles_openEuler + cd $Dir_openEulerRepos + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" openEuler.repo + # 更换软件源 + sed -i "s|repo.openeuler.org|${SOURCE}/${SOURCE_BRANCH}|g" openEuler.repo +} + +## 更换基于 openSUSE 发行版的软件源 +function openSUSEMirrors() { + case "${SYSTEM_ID}" in + "opensuse-leap") + GenRepoFiles_openSUSE "leap" "${SYSTEM_VERSION_NUMBER}" + ;; + "opensuse-tumbleweed") + GenRepoFiles_openSUSE "tumbleweed" + ;; + esac + cd $Dir_openSUSERepos + + # 更换 WEB 协议(HTTP/HTTPS) + sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" repo-* + # 更换软件源 + case "${SYSTEM_ID}" in + opensuse-leap) + case "${SYSTEM_VERSION_NUMBER}" in + 15.[0-2]) + sed -i "s|download.opensuse.org|${SOURCE}/${SOURCE_BRANCH}|g" \ + repo-debug-non-oss.repo \ + repo-debug.repo \ + repo-debug-update-non-oss.repo \ + repo-debug-update.repo \ + repo-non-oss.repo \ + repo-oss.repo \ + repo-source-non-oss.repo \ + repo-source.repo \ + repo-update-non-oss.repo \ + repo-update.repo + ;; + *) + sed -i "s|download.opensuse.org|${SOURCE}/${SOURCE_BRANCH}|g" \ + repo-backports-debug-update.repo \ + repo-backports-update.repo \ + repo-debug-non-oss.repo \ + repo-debug.repo \ + repo-debug-update-non-oss.repo \ + repo-debug-update.repo \ + repo-non-oss.repo \ + repo-oss.repo \ + repo-sle-debug-update.repo \ + repo-sle-update.repo \ + repo-source.repo \ + repo-update-non-oss.repo \ + repo-update.repo + ;; + esac + ;; + opensuse-tumbleweed) + sed -i "s|download.opensuse.org|${SOURCE}/${SOURCE_BRANCH}|g" \ + repo-debug.repo \ + repo-non-oss.repo \ + repo-openh264.repo \ + repo-oss.repo \ + repo-source.repo \ + repo-update.repo + ;; + esac +} + +## 更换基于 Arch Linux 发行版的软件源 +function ArchMirrors() { + case "${SOURCE_BRANCH}" in + "archlinuxarm") + echo "Server = ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/\$arch/\$repo" >>$File_ArchMirrorList + ;; + "archlinuxcn") + echo "Server = ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/\$arch" >>$File_ArchMirrorList + ;; + *) + echo "Server = ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/\$repo/os/\$arch" >>$File_ArchMirrorList + ;; + esac +} + +## 生成 CentOS 官方 repo 源文件 +function GenRepoFiles_CentOS() { + case $1 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 $1 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 +} + +## 生成 Rocky Linux 官方 repo 源文件 +function GenRepoFiles_RockyLinux() { + case $1 in + 9) + cat >$Dir_RedHatRepos/rocky.repo <<\EOF +# rocky.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 Rocky 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=Rocky Linux $releasever - BaseOS +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/ +gpgcheck=1 +enabled=1 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[baseos-debug] +name=Rocky Linux $releasever - BaseOS - Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[baseos-source] +name=Rocky Linux $releasever - BaseOS - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=BaseOS-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[appstream] +name=Rocky Linux $releasever - AppStream +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/os/ +gpgcheck=1 +enabled=1 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[appstream-debug] +name=Rocky Linux $releasever - AppStream - Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[appstream-source] +name=Rocky Linux $releasever - AppStream - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=AppStream-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[crb] +name=Rocky Linux $releasever - CRB +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=CRB-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/CRB/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[crb-debug] +name=Rocky Linux $releasever - CRB - Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=CRB-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/CRB/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[crb-source] +name=Rocky Linux $releasever - CRB - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=CRB-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/CRB/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 +EOF + cat >$Dir_RedHatRepos/rocky-addons.repo <<\EOF +# rocky-addons.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 Rocky 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. + +[highavailability] +name=Rocky Linux $releasever - High Availability +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=HighAvailability-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/HighAvailability/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[highavailability-debug] +name=Rocky Linux $releasever - High Availability - Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=HighAvailability-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/HighAvailability/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[highavailability-source] +name=Rocky Linux $releasever - High Availability - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=HighAvailability-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/HighAvailability/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[resilientstorage] +name=Rocky Linux $releasever - Resilient Storage +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=ResilientStorage-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/ResilientStorage/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[resilientstorage-debug] +name=Rocky Linux $releasever - Resilient Storage - Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=ResilientStorage-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/ResilientStorage/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[resilientstorage-source] +name=Rocky Linux $releasever - Resilient Storage - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=ResilientStorage-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/ResilientStorage/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[nfv] +name=Rocky Linux $releasever - NFV +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=NFV-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/NFV/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[nfv-debug] +name=Rocky Linux $releasever - NFV Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=RT-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/NFV/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[nfv-source] +name=Rocky Linux $releasever - NFV Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=RT-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/NFV/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[rt] +name=Rocky Linux $releasever - Realtime +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=RT-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/RT/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[rt-debug] +name=Rocky Linux $releasever - Realtime Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=RT-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/RT/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[rt-source] +name=Rocky Linux $releasever - Realtime Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=RT-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/RT/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[sap] +name=Rocky Linux $releasever - SAP +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=SAP-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/SAP/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[sap-debug] +name=Rocky Linux $releasever - SAP Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=SAP-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/SAP/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[sap-source] +name=Rocky Linux $releasever - SAP Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=SAP-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/SAP/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[saphana] +name=Rocky Linux $releasever - SAPHANA +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=SAPHANA-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/SAPHANA/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[saphana-debug] +name=Rocky Linux $releasever - SAPHANA Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=SAPHANA-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/SAPHANA/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[saphana-source] +name=Rocky Linux $releasever - SAPHANA Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=SAPHANA-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/SAPHANA/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 +EOF + cat >$Dir_RedHatRepos/rocky-devel.repo <<\EOF +# rocky-devel.repo +# +# devel and no-package-left-behind + +[devel] +name=Rocky Linux $releasever - Devel WARNING! FOR BUILDROOT ONLY DO NOT LEAVE ENABLED +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=devel-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/devel/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 +EOF + cat >$Dir_RedHatRepos/rocky-extras.repo <<\EOF +# rocky-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 Rocky 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=Rocky Linux $releasever - Extras +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=extras-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/extras/$basearch/os/ +gpgcheck=1 +enabled=1 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[extras-debug] +name=Rocky Linux $releasever - Extras Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=extras-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/extras/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[extras-source] +name=Rocky Linux $releasever - Extras Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=extras-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/extras/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[plus] +name=Rocky Linux $releasever - Plus +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=plus-$releasever$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/plus/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[plus-debug] +name=Rocky Linux $releasever - Plus - Debug +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=plus-$releasever-debug$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/plus/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +[plus-source] +name=Rocky Linux $releasever - Plus - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=plus-$releasever-source$rltype +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/plus/source/tree/ +gpgcheck=1 +enabled=0 +metadata_expire=6h +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 + +EOF + ;; + 8) + cat >$Dir_RedHatRepos/Rocky-AppStream.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - AppStream +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/os/ +gpgcheck=1 +enabled=1 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-BaseOS.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - BaseOS +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/ +gpgcheck=1 +enabled=1 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-Debuginfo.repo <<\EOF +# Rocky-Debuginfo.repo +# + +[baseos-debug] +name=Rocky Linux $releasever - BaseOS - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever-debug +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[appstream-debug] +name=Rocky Linux $releasever - AppStream - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever-debug +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[ha-debug] +name=Rocky Linux $releasever - High Availability - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=HighAvailability-$releasever-debug +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/HighAvailability/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[powertools-debug] +name=Rocky Linux $releasever - PowerTools - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=PowerTools-$releasever-debug +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/PowerTools/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[resilient-storage-debug] +name=Rocky Linux $releasever - Resilient Storage - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=ResilientStorage-$releasever-debug +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/ResilientStorage/$basearch/debug/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-Devel.repo <<\EOF +# Rocky-Devel.repo +# + +[devel] +name=Rocky Linux $releasever - Devel WARNING! FOR BUILDROOT AND KOJI USE +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=Devel-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/Devel/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-Extras.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - Extras +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=extras-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/extras/$basearch/os/ +gpgcheck=1 +enabled=1 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-HighAvailability.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - HighAvailability +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=HighAvailability-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/HighAvailability/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-Media.repo <<\EOF +# Rocky-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=Rocky Linux $releasever - Media - BaseOS +baseurl=file:///media/Rocky/BaseOS + file:///media/cdrom/BaseOS + file:///media/cdrecorder/BaseOS +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[media-appstream] +name=Rocky Linux $releasever - Media - AppStream +baseurl=file:///media/Rocky/AppStream + file:///media/cdrom/AppStream + file:///media/cdrecorder/AppStream +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-NFV.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - NFV +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=NFV-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/nfv/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-Plus.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - Plus +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=rockyplus-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/plus/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-PowerTools.repo <<\EOF +# Rocky-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 Rocky 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=Rocky Linux $releasever - PowerTools +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=PowerTools-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/PowerTools/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-ResilientStorage.repo <<\EOF +# Rocky-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 Rocky 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. + +[resilient-storage] +name=Rocky Linux $releasever - ResilientStorage +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=ResilientStorage-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/ResilientStorage/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-RT.repo <<\EOF +# Rocky-RT.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 Rocky 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=Rocky Linux $releasever - Realtime +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=RT-$releasever +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/RT/$basearch/os/ +gpgcheck=1 +enabled=0 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +EOF + cat >$Dir_RedHatRepos/Rocky-Sources.repo <<\EOF +# Rocky-Sources.repo + +[baseos-source] +name=Rocky Linux $releasever - BaseOS - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=BaseOS-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/source/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[appstream-source] +name=Rocky Linux $releasever - AppStream - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=AppStream-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/source/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +#[extras-source] +#name=Rocky Linux $releasever - Extras - Source +#mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=extras-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/extras/source/tree/ +#gpgcheck=1 +#enabled=0 +#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +#[plus-source] +#name=Rocky Linux $releasever - Plus - Source +#mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=plus-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/Plus/source/tree/ +#gpgcheck=1 +#enabled=0 +#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[ha-source] +name=Rocky Linux $releasever - High Availability - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=HighAvailability-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/HighAvailability/source/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[powertools-source] +name=Rocky Linux $releasever - PowerTools - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=PowerTools-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/PowerTools/source/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial + +[resilient-storage-source] +name=Rocky Linux $releasever - Resilient Storage - Source +mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=source&repo=ResilientStorage-$releasever-source +#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/ResilientStorage/source/tree/ +gpgcheck=1 +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial +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 +} + +## 生成 openEuler 官方 repo 源文件 +function GenRepoFiles_openEuler() { + cat >$Dir_openEulerRepos/openEuler.repo <<\EOF +#generic-repos is licensed under the Mulan PSL v2. +#You can use this software according to the terms and conditions of the Mulan PSL v2. +#You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +#PURPOSE. +#See the Mulan PSL v2 for more details. + +[OS] +name=OS +baseurl=http://repo.openeuler.org/openEuler-$releasever/OS/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/OS/$basearch/RPM-GPG-KEY-openEuler + +[everything] +name=everything +baseurl=http://repo.openeuler.org/openEuler-$releasever/everything/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/everything/$basearch/RPM-GPG-KEY-openEuler + +[EPOL] +name=EPOL +baseurl=http://repo.openeuler.org/openEuler-$releasever/EPOL/main/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/OS/$basearch/RPM-GPG-KEY-openEuler + +[debuginfo] +name=debuginfo +baseurl=http://repo.openeuler.org/openEuler-$releasever/debuginfo/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/debuginfo/$basearch/RPM-GPG-KEY-openEuler + +[source] +name=source +baseurl=http://repo.openeuler.org/openEuler-$releasever/source/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/source/RPM-GPG-KEY-openEuler + +[update] +name=update +baseurl=http://repo.openeuler.org/openEuler-$releasever/update/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/OS/$basearch/RPM-GPG-KEY-openEuler + +[update-source] +name=update-source +baseurl=http://repo.openeuler.org/openEuler-$releasever/update/source/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-$releasever/source/RPM-GPG-KEY-openEuler +EOF +} + +## 生成 openSUSE 官方 repo 源文件 +function GenRepoFiles_openSUSE() { + case $1 in + leap) + case $2 in + 15.[0-2]) + cat >$Dir_openSUSERepos/repo-debug-non-oss.repo <<\EOF +[repo-debug-non-oss] +name=Debug Repository (Non-OSS) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/distribution/leap/$releasever/repo/non-oss/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug.repo <<\EOF +[repo-debug] +name=Debug Repository +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/distribution/leap/$releasever/repo/oss/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug-update-non-oss.repo <<\EOF +[repo-debug-update-non-oss] +name=Update Repository (Debug, Non-OSS) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/update/leap/$releasever/non-oss/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug-update.repo <<\EOF +[repo-debug-update] +name=Update Repository (Debug) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/update/leap/$releasever/oss/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-non-oss.repo <<\EOF +[repo-non-oss] +name=Non-OSS Repository +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/non-oss/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-oss.repo <<\EOF +[repo-oss] +name=Main Repository +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/oss/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-source-non-oss.repo <<\EOF +[repo-source-non-oss] +name=Source Repository (Non-OSS) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/source/distribution/leap/$releasever/repo/non-oss/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-source.repo <<\EOF +[repo-source] +name=Source Repository +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/source/distribution/leap/$releasever/repo/oss/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-update-non-oss.repo <<\EOF +[repo-update-non-oss] +name=Update Repository (Non-Oss) +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/non-oss/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-update.repo <<\EOF +[repo-update] +name=Main Update Repository +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/oss/ +type=rpm-md +keeppackages=0 +EOF + ;; + *) + cat >$Dir_openSUSERepos/repo-backports-debug-update.repo <<\EOF +[repo-backports-debug-update] +name=Update repository with updates for openSUSE Leap debuginfo packages from openSUSE Backports +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/backports_debug/ +type=NONE +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-backports-update.repo <<\EOF +[repo-backports-update] +name=Update repository of openSUSE Backports +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/backports/ +path=/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug-non-oss.repo <<\EOF +[repo-debug-non-oss] +name=Debug Repository (Non-OSS) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/distribution/leap/$releasever/repo/non-oss/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug.repo <<\EOF +[repo-debug] +name=Debug Repository +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/distribution/leap/$releasever/repo/oss/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug-update-non-oss.repo <<\EOF +[repo-debug-update-non-oss] +name=Update Repository (Debug, Non-OSS) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/update/leap/$releasever/non-oss/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-debug-update.repo <<\EOF +[repo-debug-update] +name=Update Repository (Debug) +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/update/leap/$releasever/oss/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-non-oss.repo <<\EOF +[repo-non-oss] +name=Non-OSS Repository +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/non-oss/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-oss.repo <<\EOF +[repo-oss] +name=Main Repository +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/oss/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-sle-debug-update.repo <<\EOF +[repo-sle-debug-update] +name=Update repository with debuginfo for updates from SUSE Linux Enterprise 15 +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/update/leap/$releasever/sle/ +path=/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-sle-update.repo <<\EOF +[repo-sle-update] +name=Update repository with updates from SUSE Linux Enterprise 15 +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/sle/ +path=/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-source.repo <<\EOF +[repo-source] +name=Source Repository +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/source/distribution/leap/$releasever/repo/oss/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-update-non-oss.repo <<\EOF +[repo-update-non-oss] +name=Update Repository (Non-Oss) +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/non-oss/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-update.repo <<\EOF +[repo-update] +name=Main Update Repository +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/leap/$releasever/oss/ +type=rpm-md +keeppackages=0 +EOF + ;; + esac + ;; + tumbleweed) + cat >$Dir_openSUSERepos/repo-debug.repo <<\EOF +[repo-debug] +name=openSUSE-Tumbleweed-Debug +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/debug/tumbleweed/repo/oss/ +path=/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-non-oss.repo <<\EOF +[repo-non-oss] +name=openSUSE-Tumbleweed-Non-Oss +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/tumbleweed/repo/non-oss/ +path=/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-openh264.repo <<\EOF +[repo-openh264] +name=Open H.264 Codec (openSUSE Tumbleweed) +enabled=1 +autorefresh=1 +baseurl=http://codecs.opensuse.org/openh264/openSUSE_Tumbleweed +path=/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-oss.repo <<\EOF +[repo-oss] +name=openSUSE-Tumbleweed-Oss +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/tumbleweed/repo/oss/ +path=/ +type=rpm-md +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-source.repo <<\EOF +[repo-source] +name=openSUSE-Tumbleweed-Source +enabled=0 +autorefresh=1 +baseurl=http://download.opensuse.org/source/tumbleweed/repo/oss/ +path=/ +keeppackages=0 +EOF + cat >$Dir_openSUSERepos/repo-update.repo <<\EOF +[repo-update] +name=openSUSE-Tumbleweed-Update +enabled=1 +autorefresh=1 +baseurl=http://download.opensuse.org/update/tumbleweed/ +path=/ +type=rpm-md +keeppackages=0 +EOF + ;; + esac +} + +## 生成 EPEL 附加软件包官方 repo 源文件 +function GenRepoFiles_EPEL() { + case ${SYSTEM_VERSION_NUMBER:0:1} 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 +} + +## 处理命令选项 +function CommandOptions() { + ## 命令帮助 + function Output_Help_Info() { + echo -e " +选项命令(参数名/含义/参数值): + + --source 指定软件源地址 地址 + --branch 指定软件源分支 分支名 + --abroad 使用海外软件源 无 + --web-protocol 指定 WEB 协议 http 或 https + --intranet 使用内网地址 true 或 false + --install-epel 安装 EPEL 附加软件包 true 或 false + --close-firewall 关闭防火墙 true 或 false + --backup 备份原有软件源 true 或 false + --ignore-backup-tips 忽略覆盖备份提示 无 + --updata-software 更新软件包 true 或 false + --clean-cache 清理下载缓存 true 或 false + +问题报告 https://github.com/SuperManito/LinuxMirrors/issues + " + } + ## 报错退出 + function Output_Command_Error() { + echo -e "\n$ERROR $1\n" + exit 1 + } + + ## 判断参数 + while [ $# -gt 0 ]; do + case $1 in + ## 海外模式 + --abroad) + USE_ABROAD_SOURCE="true" + ;; + ## 指定软件源地址 + --source) + if [ $2 ]; then + echo "$2" | grep -Eq "\-|\(|\)|\[|\]|\{|\}" + if [ $? -eq 0 ]; then + Output_Command_Error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!" + else + SOURCE="$2" + shift + fi + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!" + fi + ;; + ## 指定软件源分支 + --branch) + if [ $2 ]; then + SOURCE_BRANCH="$2" + shift + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!" + fi + ;; + ## 优先使用内网地址 + --intranet) + if [ $2 ]; then + case $2 in + [Tt]rue | [Ff]alse) + USE_INTRANET_SOURCE="${2,,}" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!" + fi + ;; + ## WEB 协议(HTTP/HTTPS) + --web-protocol) + if [ $2 ]; then + case $2 in + http | https | HTTP | HTTPS) + WEB_PROTOCOL="$2" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 http 或 https 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 WEB 协议(HTTP/HTTPS)!" + fi + ;; + ## 安装 EPEL 附加软件包 + --install-epel) + if [ $2 ]; then + case $2 in + [Tt]rue | [Ff]alse) + INSTALL_EPEL="${2,,}" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!" + fi + ;; + ## 关闭防火墙 + --close-firewall) + if [ $2 ]; then + case $2 in + [Tt]rue | [Ff]alse) + CLOSE_FIREWALL="${2,,}" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!" + fi + ;; + ## 备份原有软件源 + --backup) + if [ $2 ]; then + case $2 in + [Tt]rue | [Ff]alse) + BACKUP="${2,,}" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!" + fi + ;; + ## 忽略覆盖备份提示 + --ignore-backup-tips) + IGNORE_BACKUP_TIPS="true" + ;; + ## 更新软件包 + --updata-software) + if [ $2 ]; then + case $2 in + [Tt]rue | [Ff]alse) + UPDATA_SOFTWARE="${2,,}" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!" + fi + ;; + ## 清理下载缓存 + --clean-cache) + if [ $2 ]; then + case $2 in + [Tt]rue | [Ff]alse) + CLEAN_CACHE="${2,,}" + shift + ;; + *) + Output_Command_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!" + ;; + esac + else + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!" + fi + ;; + --help) + Output_Help_Info + exit + ;; + *) + Output_Command_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请确认后重新输入!" + ;; + esac + shift + done +} + +## 组合函数 +function Combin_Function() { + PermissionJudgment + EnvJudgment + ChooseMirrors + ChooseWebProtocol + ChooseInstallEPEL + CloseFirewall + BackupOriginMirrors + RemoveOriginMirrors + ChangeMirrors + UpdateSoftware + RunEnd +} + +CommandOptions "$@" +Combin_Function diff --git a/docs/use/index.md b/docs/use/index.md index c9e4b85..9132b8e 100644 --- a/docs/use/index.md +++ b/docs/use/index.md @@ -4,13 +4,13 @@ ### 国内使用(默认) ``` bash -bash <(curl -sSL https://linuxmirrors.cn/script) +bash <(curl -sSL https://linuxmirrors.cn/script.sh) ``` ### 海外使用 ``` bash -bash <(curl -sSL https://linuxmirrors.cn/script-gh) --abroad +bash <(curl -sSL https://linuxmirrors.cn/script.sh) --abroad ``` > 通过 `--abroad` 命令选项来使用海外软件源