{"id":186,"date":"2024-06-14T10:31:52","date_gmt":"2024-06-14T02:31:52","guid":{"rendered":"https:\/\/www.htmacg.cn\/?p=186"},"modified":"2024-06-14T10:31:52","modified_gmt":"2024-06-14T02:31:52","slug":"linuxmirrors-gnu-linux-%e6%9b%b4%e6%8d%a2%e7%b3%bb%e7%bb%9f%e8%bd%af%e4%bb%b6%e6%ba%90%e8%84%9a%e6%9c%ac","status":"publish","type":"post","link":"https:\/\/htmacg.cn\/?p=186","title":{"rendered":"Linuxmirrors \u2013 GNU\/Linux \u66f4\u6362\u7cfb\u7edf\u8f6f\u4ef6\u6e90\u811a\u672c"},"content":{"rendered":"<h2>\u591a\u8f6f\u4ef6\u6e90\u9002\u914d<\/h2>\n<p>\u8003\u5bdf\u4e86\u56fd\u5185\u955c\u50cf\u7ad9\u7684\u7cfb\u7edf\u9002\u914d\u60c5\u51b5\uff0c\u6d4b\u8bd5\u4e86\u4e0b\u8f7d\u901f\u5ea6\u4e0eIPv6\u534f\u8bae\u7684\u517c\u5bb9\u6027<br \/>\n\u53e6\u5916\uff0c\u63d0\u4f9b\u4e86\u5168\u7f51\u6536\u96c6\u7684\u4e2d\u56fd\u5927\u9646\u6559\u80b2\u7f51\u955c\u50cf\u7ad9\u548c\u6d77\u5916\u955c\u50cf\u7ad9\u4f9b\u9009\u62e9<\/p>\n<p>&nbsp;<\/p>\n<h2>\u00a0\u4f4e\u6280\u672f\u6210\u672c<\/h2>\n<p>\u65e0\u9700\u638c\u63e1\u76f8\u5173\u6280\u672f\uff0c\u6587\u6863\u63d0\u4f9b\u4e86\u5168\u9762\u7684\u76f8\u5173\u77e5\u8bc6\u50a8\u5907\u548c\u64cd\u4f5c\u6307\u5f15<br \/>\n\u8fd8\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e38\u89c1\u95ee\u9898\u7684\u89e3\u51b3\u65b9\u6cd5<\/p>\n<p>&nbsp;<\/p>\n<h2>\u00a0\u811a\u672c\u4e00\u952e\u8fd0\u884c<\/h2>\n<p>\u811a\u672c\u4f7f\u6362\u6e90\u53d8\u5f97\u66f4\u7b80\u5355\uff0c\u901a\u8fc7\u4ea4\u4e92\u9ed8\u8ba4\u8fdb\u884c\u66f4\u6362\uff0c\u5e76\u6839\u636e\u7528\u6237\u9009\u62e9\u81ea\u52a8\u914d\u7f6e<br \/>\n\u540c\u65f6\uff0c\u63d0\u4f9b\u4e86\u5f3a\u5927\u7684\u547d\u4ee4\u9009\u9879\uff0c\u53ef\u7528\u4e8e\u81ea\u52a8\u5316\u9879\u76ee\u4ee5\u5b9e\u73b0\u65e0\u4ea4\u4e92\u64cd\u4f5c<\/p>\n<p>&nbsp;<\/p>\n<h2>\u00a0\u5f00\u6e90\uff0cMIT<\/h2>\n<p>\u9879\u76ee\u5df2\u8bbe\u7acb\u5f00\u6e90\u8bb8\u53ef\u534f\u8bae\uff0c\u4f20\u64ad\u65f6\u8bf7\u5728\u663e\u8457\u4f4d\u7f6e\u6807\u6ce8\u6765\u6e90\u548c\u4f5c\u8005<br \/>\n\u8bf7\u5c0a\u91cd\u4f5c\u8005\u7684\u77e5\u8bc6\u6210\u679c\uff0c\u5efa\u8bae\u901a\u8fc7\u547d\u4ee4\u76f4\u63a5\u8c03\u7528\u811a\u672c<\/p>\n<p>&nbsp;<\/p>\n<h2>\u00a0\u610f\u89c1\u4e0e\u5efa\u8bae<\/h2>\n<p>\u5982\u6709\u9002\u914d\u8bf7\u6c42\u6216\u610f\u89c1\u4e0e\u5efa\u8bae\u4f60\u53ef\u4ee5\u63d0\u4ea4\u81f3\u00a0Issues<br \/>\n\u5982\u679c\u4f60\u9700\u8981\u63d0\u4ea4\u4ee3\u7801\u8bf7\u524d\u5f80 GitHub \u4ed3\u5e93\u63d0\u4ea4\u00a0Pull Requests<\/p>\n<h3>\u811a\u672c\uff1a<\/h3>\n<pre class=\"corepress-code-pre\"><code>bash &lt;(curl -sSL https:\/\/linuxmirrors.cn\/main.sh)<\/code><\/pre>\n<h3>\u672c\u7ad9\u6e90\u811a\u672c\uff1a<\/h3>\n<pre class=\"corepress-code-pre\"><code>bash &lt;(curl -sSL https:\/\/www.htmacg.com\/adb\/main.sh)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img.htmacg.cn\/i\/2024\/06\/14\/666bac3e6106e.png\" \/><\/p>\n<h2>\u6e90\u7801<\/h2>\n<pre class=\"corepress-code-pre\"><code>#!\/bin\/bash\n## Author: SuperManito\n## Modified: 2024-10-24\n## License: MIT\n## GitHub: https:\/\/github.com\/SuperManito\/LinuxMirrors\n## Website: https:\/\/linuxmirrors.cn\n\n## \u5b9a\u5236\u65b9\u6cd5\n# \u53ea\u9700\u8981\u5728\u5934\u90e8\uff08\u6b64\u5904\uff09\u5b9a\u4e49\u5168\u5c40\u53d8\u91cf\u5373\u53ef\uff0c\u5177\u4f53\u8be6\u89c1\u5b98\u7f51\u6587\u6863\uff0c\u7b80\u5355\u5199\u51e0\u4e2a\u4f8b\u5b50\n# SOURCE=\"www.example.com\"  # \u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\n# BRANCH=\"branch\"           # \u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\n# WEB_PROTOCOL=\"https\"      # \u6307\u5b9a WEB \u534f\u8bae\n\n## \u8f6f\u4ef6\u6e90\u5217\u8868\n# \u56fd\u5185\u683c\u5f0f\uff1a\"\u8f6f\u4ef6\u6e90\u540d\u79f0@\u8f6f\u4ef6\u6e90\u5730\u5740\"\nmirror_list_default=(\n    \"\u963f\u91cc\u4e91@mirrors.aliyun.com\"\n    \"\u817e\u8baf\u4e91@mirrors.tencent.com\"\n    \"\u534e\u4e3a\u4e91@repo.huaweicloud.com\"\n    \"\u7f51\u6613@mirrors.163.com\"\n    \"\u706b\u5c71\u5f15\u64ce@mirrors.volces.com\"\n    \"\u6e05\u534e\u5927\u5b66@mirrors.tuna.tsinghua.edu.cn\"\n    \"\u5317\u4eac\u5927\u5b66@mirrors.pku.edu.cn\"\n    \"\u6d59\u6c5f\u5927\u5b66@mirrors.zju.edu.cn\"\n    \"\u5357\u4eac\u5927\u5b66@mirrors.nju.edu.cn\"\n    \"\u5170\u5dde\u5927\u5b66@mirror.lzu.edu.cn\"\n    \"\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66@mirror.sjtu.edu.cn\"\n    \"\u91cd\u5e86\u90ae\u7535\u5927\u5b66@mirrors.cqupt.edu.cn\"\n    \"\u4e2d\u56fd\u79d1\u5b66\u6280\u672f\u5927\u5b66@mirrors.ustc.edu.cn\"\n    \"\u4e2d\u56fd\u79d1\u5b66\u9662\u8f6f\u4ef6\u7814\u7a76\u6240@mirror.iscas.ac.cn\"\n)\n# \u4e2d\u56fd\u5927\u9646\u6559\u80b2\u7f51\u683c\u5f0f\uff1a\"\u8f6f\u4ef6\u6e90\u540d\u79f0@\u8f6f\u4ef6\u6e90\u5730\u5740\"\nmirror_list_edu=(\n    \"\u6e05\u534e\u5927\u5b66@mirrors.tuna.tsinghua.edu.cn\"\n    \"\u5317\u4eac\u5927\u5b66@mirrors.pku.edu.cn\"\n    \"\u5357\u4eac\u5927\u5b66@mirrors.nju.edu.cn\"\n    \"\u91cd\u5e86\u5927\u5b66@mirrors.cqu.edu.cn\"\n    \"\u5170\u5dde\u5927\u5b66@mirror.lzu.edu.cn\"\n    \"\u6d59\u6c5f\u5927\u5b66@mirrors.zju.edu.cn\"\n    \"\u5c71\u4e1c\u5927\u5b66@mirrors.sdu.edu.cn\"\n    \"\u5409\u6797\u5927\u5b66@mirrors.jlu.edu.cn\"\n    \"\u4e0a\u6d77\u79d1\u6280\u5927\u5b66@mirrors.shanghaitech.edu.cn\"\n    \"\u5357\u65b9\u79d1\u6280\u5927\u5b66@mirrors.sustech.edu.cn\"\n    \"\u5357\u4eac\u90ae\u7535\u5927\u5b66@mirrors.njupt.edu.cn\"\n    \"\u5357\u4eac\u5de5\u4e1a\u5927\u5b66@mirrors.njtech.edu.cn\"\n    \"\u7535\u5b50\u79d1\u6280\u5927\u5b66@mirrors.uestc.cn\"\n    \"\u5317\u4eac\u4ea4\u901a\u5927\u5b66@mirror.bjtu.edu.cn\"\n    \"\u5317\u4eac\u90ae\u7535\u5927\u5b66@mirrors.bupt.edu.cn\"\n    \"\u9f50\u9c81\u5de5\u4e1a\u5927\u5b66@mirrors.qlu.edu.cn\"\n    \"\u534e\u5357\u519c\u4e1a\u5927\u5b66@mirrors.scau.edu.cn\"\n    \"\u897f\u5b89\u4ea4\u901a\u5927\u5b66@mirrors.xjtu.edu.cn\"\n    \"\u6c5f\u897f\u7406\u5de5\u5927\u5b66@mirrors.jxust.edu.cn\"\n    \"\u91cd\u5e86\u90ae\u7535\u5927\u5b66@mirrors.cqupt.edu.cn\"\n    \"\u534e\u4e2d\u79d1\u6280\u5927\u5b66@mirrors.hust.edu.cn\"\n    \"\u5357\u9633\u7406\u5de5\u5b66\u9662@mirror.nyist.edu.cn\"\n    \"\u6b66\u660c\u9996\u4e49\u5b66\u9662@mirrors.wsyu.edu.cn\"\n    \"\u8346\u695a\u7406\u5de5\u5b66\u9662@mirrors.jcut.edu.cn\"\n    \"\u5317\u4eac\u5916\u56fd\u8bed\u5927\u5b66@mirrors.bfsu.edu.cn\"\n    \"\u4e2d\u56fd\u79d1\u5b66\u6280\u672f\u5927\u5b66@mirrors.ustc.edu.cn\"\n    \"\u897f\u5317\u519c\u6797\u79d1\u6280\u5927\u5b66@mirrors.nwafu.edu.cn\"\n    \"\u5927\u8fde\u4e1c\u8f6f\u4fe1\u606f\u5b66\u9662@mirrors.neusoft.edu.cn\"\n    \"\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66\uff08\u601d\u6e90\uff09@mirror.sjtu.edu.cn\"\n    \"\u4e0a\u6d77\u4ea4\u901a\u5927\u5b66\uff08\u81f4\u8fdc\uff09@mirrors.sjtug.sjtu.edu.cn\"\n)\n# \u6d77\u5916\u683c\u5f0f\uff1a\"\u6d32 \u00b7 \u8f6f\u4ef6\u6e90\u540d\u79f0 \u00b7 \u56fd\u5bb6\/\u5730\u533a@\u8f6f\u4ef6\u6e90\u5730\u5740\"\uff0c\u4fee\u6539\u524d\u8bf7\u5148\u524d\u5f80\u5b98\u7f51\u9605\u8bfb\u6dfb\u52a0\u89c4\u8303\nmirror_list_abroad=(\n    \"\u4e9a\u6d32 \u00b7 xTom \u00b7 \u9999\u6e2f@mirrors.xtom.hk\"\n    \"\u4e9a\u6d32 \u00b7 01Link \u00b7 \u9999\u6e2f@mirror.01link.hk\"\n    \"\u4e9a\u6d32 \u00b7 \u65b0\u52a0\u5761\u56fd\u7acb\u5927\u5b66(NUS) \u00b7 \u65b0\u52a0\u5761@download.nus.edu.sg\/mirror\"\n    \"\u4e9a\u6d32 \u00b7 SG.GS \u00b7 \u65b0\u52a0\u5761@mirror.sg.gs\"\n    \"\u4e9a\u6d32 \u00b7 xTom \u00b7 \u65b0\u52a0\u5761@mirrors.xtom.sg\"\n    \"\u4e9a\u6d32 \u00b7 \u81ea\u7531\u8f6f\u4ef6\u5b9e\u9a8c\u5ba4(NCHC) \u00b7 \u53f0\u6e7e@free.nchc.org.tw\"\n    \"\u4e9a\u6d32 \u00b7 OSS Planet \u00b7 \u53f0\u6e7e@mirror.ossplanet.net\"\n    \"\u4e9a\u6d32 \u00b7 \u56fd\u7acb\u9633\u660e\u4ea4\u901a\u5927\u5b66 \u00b7 \u53f0\u6e7e@linux.cs.nctu.edu.tw\"\n    \"\u4e9a\u6d32 \u00b7 \u6de1\u6c5f\u5927\u5b66 \u00b7 \u53f0\u6e7e@ftp.tku.edu.tw\"\n    \"\u4e9a\u6d32 \u00b7 AniGil Linux Archive \u00b7 \u97e9\u56fd@mirror.anigil.com\"\n    \"\u4e9a\u6d32 \u00b7 \u5de5\u4e1a\u7f51\u7edc\u5b89\u5168\u4e2d\u5fc3(ICSCoE) \u00b7 \u65e5\u672c@ftp.udx.icscoe.jp\/Linux\"\n    \"\u4e9a\u6d32 \u00b7 \u5317\u9646\u5148\u7aef\u79d1\u5b66\u6280\u672f\u5927\u5b66\u9662\u5927\u5b66(JAIST) \u00b7 \u65e5\u672c@ftp.jaist.ac.jp\/pub\/Linux\"\n    \"\u4e9a\u6d32 \u00b7 \u5c71\u5f62\u5927\u5b66 \u00b7 \u65e5\u672c@linux2.yz.yamagata-u.ac.jp\/pub\/Linux\"\n    \"\u4e9a\u6d32 \u00b7 xTom \u00b7 \u65e5\u672c@mirrors.xtom.jp\"\n    \"\u4e9a\u6d32 \u00b7 GB Network Solutions \u00b7 \u9a6c\u6765\u897f\u4e9a@mirrors.gbnetwork.com\"\n    \"\u4e9a\u6d32 \u00b7 \u5b54\u656c\u5927\u5b66 \u00b7 \u6cf0\u56fd@mirror.kku.ac.th\"\n    \"\u6b27\u6d32 \u00b7 Vorboss Ltd \u00b7 \u82f1\u56fd@mirror.vorboss.net\"\n    \"\u6b27\u6d32 \u00b7 QuickHost \u00b7 \u82f1\u56fd@mirror.quickhost.uk\"\n    \"\u6b27\u6d32 \u00b7 dogado \u00b7 \u5fb7\u56fd@mirror.dogado.de\"\n    \"\u6b27\u6d32 \u00b7 xTom \u00b7 \u5fb7\u56fd@mirrors.xtom.de\"\n    \"\u6b27\u6d32 \u00b7 \u4e9a\u741b\u5de5\u4e1a\u5927\u5b66(RWTH Aachen) \u00b7 \u5fb7\u56fd@ftp.halifax.rwth-aachen.de\"\n    \"\u6b27\u6d32 \u00b7 \u5fb7\u7d2f\u65af\u987f\u5927\u5b66(AG DSN) \u00b7 \u5fb7\u56fd@ftp.agdsn.de\"\n    \"\u6b27\u6d32 \u00b7 CCIN2P3 \u00b7 \u6cd5\u56fd@mirror.in2p3.fr\/pub\/linux\"\n    \"\u6b27\u6d32 \u00b7 Ircam \u00b7 \u6cd5\u56fd@mirrors.ircam.fr\/pub\"\n    \"\u6b27\u6d32 \u00b7 Crans \u00b7 \u6cd5\u56fd@eclats.crans.org\"\n    \"\u6b27\u6d32 \u00b7 CRIHAN \u00b7 \u6cd5\u56fd@ftp.crihan.fr\"\n    \"\u6b27\u6d32 \u00b7 xTom \u00b7 \u8377\u5170@mirrors.xtom.nl\"\n    \"\u6b27\u6d32 \u00b7 DataPacket \u00b7 \u8377\u5170@mirror.datapacket.com\"\n    \"\u6b27\u6d32 \u00b7 Linux Kernel \u00b7 \u8377\u5170@eu.edge.kernel.org\"\n    \"\u6b27\u6d32 \u00b7 xTom \u00b7 \u7231\u6c99\u5c3c\u4e9a@mirrors.xtom.ee\"\n    \"\u6b27\u6d32 \u00b7 netsite \u00b7 \u4e39\u9ea6@mirror.netsite.dk\"\n    \"\u6b27\u6d32 \u00b7 Dotsrc \u00b7 \u4e39\u9ea6@mirrors.dotsrc.org\"\n    \"\u6b27\u6d32 \u00b7 Academic Computer Club \u00b7 \u745e\u5178@mirror.accum.se\"\n    \"\u6b27\u6d32 \u00b7 Lysator \u00b7 \u745e\u5178@ftp.lysator.liu.se\"\n    \"\u6b27\u6d32 \u00b7 Yandex \u00b7 \u4fc4\u7f57\u65af@mirror.yandex.ru\"\n    \"\u6b27\u6d32 \u00b7 ia64 \u00b7 \u4fc4\u7f57\u65af@mirror.linux-ia64.org\"\n    \"\u6b27\u6d32 \u00b7 Truenetwork \u00b7 \u4fc4\u7f57\u65af@mirror.truenetwork.ru\"\n    \"\u6b27\u6d32 \u00b7 Belgian Research Network \u00b7 \u6bd4\u5229\u65f6@ftp.belnet.be\/mirror\"\n    \"\u6b27\u6d32 \u00b7 \u514b\u91cc\u7279\u5927\u5b66\u8ba1\u7b97\u673a\u4e2d\u5fc3 \u00b7 \u5e0c\u814a@ftp.cc.uoc.gr\/mirrors\/linux\"\n    \"\u6b27\u6d32 \u00b7 \u9a6c\u8428\u91cc\u514b\u5927\u5b66\u4fe1\u606f\u5b66\u9662 \u00b7 \u6377\u514b@ftp.fi.muni.cz\/pub\/linux\"\n    \"\u6b27\u6d32 \u00b7 \u6377\u514b\u7406\u5de5\u5927\u5b66\u5b66\u751f\u4f1a\u4ff1\u4e50\u90e8(Silicon Hill) \u00b7 \u6377\u514b@ftp.sh.cvut.cz\"\n    \"\u6b27\u6d32 \u00b7 Vodafone \u00b7 \u6377\u514b@mirror.karneval.cz\/pub\/linux\"\n    \"\u6b27\u6d32 \u00b7 CZ.NIC \u00b7 \u6377\u514b@mirrors.nic.cz\"\n    \"\u6b27\u6d32 \u00b7 \u82cf\u9ece\u4e16\u8054\u90a6\u7406\u5de5\u5b66\u9662 \u00b7 \u745e\u58eb@mirror.ethz.ch\"\n    \"\u5317\u7f8e \u00b7 Linux Kernel \u00b7 \u7f8e\u56fd@mirrors.kernel.org\"\n    \"\u5317\u7f8e \u00b7 \u9ebb\u7701\u7406\u5de5\u5b66\u9662(MIT) \u00b7 \u7f8e\u56fd@mirrors.mit.edu\"\n    \"\u5317\u7f8e \u00b7 \u666e\u6797\u65af\u987f\u5927\u5b66\u6570\u5b66\u7cfb \u00b7 \u7f8e\u56fd@mirror.math.princeton.edu\/pub\"\n    \"\u5317\u7f8e \u00b7 \u4fc4\u52d2\u5188\u5dde\u7acb\u5927\u5b66\u5f00\u6e90\u5b9e\u9a8c\u5ba4 \u00b7 \u7f8e\u56fd@ftp-chi.osuosl.org\/pub\"\n    \"\u5317\u7f8e \u00b7 Fremont Cabal Internet Exchange(FCIX) \u00b7 \u7f8e\u56fd@mirror.fcix.net\"\n    \"\u5317\u7f8e \u00b7 xTom \u00b7 \u7f8e\u56fd@mirrors.xtom.com\"\n    \"\u5317\u7f8e \u00b7 Steadfast \u00b7 \u7f8e\u56fd@mirror.steadfast.net\"\n    \"\u5317\u7f8e \u00b7 \u4e0d\u5217\u98a0\u54e5\u4f26\u6bd4\u4e9a\u5927\u5b66 \u00b7 \u52a0\u62ff\u5927@mirror.it.ubc.ca\"\n    \"\u5317\u7f8e \u00b7 GoCodeIT \u00b7 \u52a0\u62ff\u5927@mirror.xenyth.net\"\n    \"\u5317\u7f8e \u00b7 Switch \u00b7 \u52a0\u62ff\u5927@mirrors.switch.ca\"\n    \"\u5357\u7f8e \u00b7 PoP-SC \u00b7 \u5df4\u897f@mirror.pop-sc.rnp.br\/mirror\"\n    \"\u5357\u7f8e \u00b7 \u84ec\u5854\u683c\u7f57\u8428\u5dde\u7acb\u5927\u5b66 \u00b7 \u5df4\u897f@mirror.uepg.br\"\n    \"\u5357\u7f8e \u00b7 UFSCar \u00b7 \u5df4\u897f@mirror.ufscar.br\"\n    \"\u5357\u7f8e \u00b7 Sysarmy Community \u00b7 \u963f\u6839\u5ef7@mirrors.eze.sysarmy.com\"\n    \"\u5927\u6d0b \u00b7 Fremont Cabal Internet Exchange(FCIX) \u00b7 \u6fb3\u5927\u5229\u4e9a@gsl-syd.mm.fcix.net\"\n    \"\u5927\u6d0b \u00b7 AARNet \u00b7 \u6fb3\u5927\u5229\u4e9a@mirror.aarnet.edu.au\/pub\"\n    \"\u5927\u6d0b \u00b7 DataMossa \u00b7 \u6fb3\u5927\u5229\u4e9a@mirror.datamossa.io\"\n    \"\u5927\u6d0b \u00b7 Amaze \u00b7 \u6fb3\u5927\u5229\u4e9a@mirror.amaze.com.au\"\n    \"\u5927\u6d0b \u00b7 xTom \u00b7 \u6fb3\u5927\u5229\u4e9a@mirrors.xtom.au\"\n    \"\u5927\u6d0b \u00b7 Over the Wire \u00b7 \u6fb3\u5927\u5229\u4e9a@mirror.overthewire.com.au\"\n    \"\u5927\u6d0b \u00b7 Free Software Mirror Group \u00b7 \u65b0\u897f\u5170@mirror.fsmg.org.nz\"\n    \"\u975e\u6d32 \u00b7 Liquid Telecom \u00b7 \u80af\u5c3c\u4e9a@mirror.liquidtelecom.com\"\n    \"\u975e\u6d32 \u00b7 Dimension Data \u00b7 \u5357\u975e@mirror.dimensiondata.com\"\n)\n\n## \u914d\u7f6e\u9700\u8981\u533a\u5206\u516c\u7f51\u5730\u5740\u548c\u5185\u7f51\u5730\u5740\u7684\u8f6f\u4ef6\u6e90\uff08\u4e0d\u5206\u5730\u57df\uff09\n# \u914d\u7f6e\u65b9\u6cd5\uff1a\u9700\u8981\u540c\u65f6\u5728\u4e24\u4e2a\u6570\u7ec4\u53d8\u91cf\u4e2d\u5206\u522b\u5b9a\u4e49\u8f6f\u4ef6\u6e90\u5730\u5740\uff0c\u5e76\u4e14\u4fdd\u8bc1\u6392\u5217\u987a\u5e8f\u4e00\u81f4\n# \u5de5\u4f5c\u539f\u7406\uff1a\u5f53\u68c0\u6d4b\u5230\u7528\u6237\u6240\u9009\u62e9\u7684\u8f6f\u4ef6\u6e90\u5730\u5740\u5728 \u201c\u8f6f\u4ef6\u6e90\u516c\u7f51\u5730\u5740\u5217\u8868\u201d \u4e2d\u65f6\u5c31\u4f1a\u8be2\u95ee\u662f\u5426\u5207\u6362\u4e3a\u5185\u7f51\u5730\u5740\uff0c\u7136\u540e\u5728 \u201c\u8f6f\u4ef6\u6e90\u5185\u7f51\u5730\u5740\u5217\u8868\u201d \u4ece\u76f8\u540c\u7684\u4f4d\u7f6e\u63d0\u53d6\u5185\u7f51\u5730\u5740\n# \u8f6f\u4ef6\u6e90\u516c\u7f51\u5730\u5740\u5217\u8868\nmirror_list_extranet=(\n    \"mirrors.aliyun.com\"\n    \"mirrors.tencent.com\"\n    \"repo.huaweicloud.com\"\n    \"mirrors.volces.com\"\n)\n# \u8f6f\u4ef6\u6e90\u5185\u7f51\u5730\u5740\u5217\u8868\nmirror_list_intranet=(\n    \"mirrors.cloud.aliyuncs.com\"\n    \"mirrors.tencentyun.com\"\n    \"mirrors.myhuaweicloud.com\"\n    \"mirrors.ivolces.com\"\n)\n\n##############################################################################\n\n## \u5b9a\u4e49\u7cfb\u7edf\u5224\u5b9a\u53d8\u91cf\nSYSTEM_DEBIAN=\"Debian\"\nSYSTEM_UBUNTU=\"Ubuntu\"\nSYSTEM_KALI=\"Kali\"\nSYSTEM_DEEPIN=\"Deepin\"\nSYSTEM_LINUX_MINT=\"Linuxmint\"\nSYSTEM_ZORIN=\"Zorin\"\nSYSTEM_REDHAT=\"RedHat\"\nSYSTEM_RHEL=\"Red Hat Enterprise Linux\"\nSYSTEM_CENTOS=\"CentOS\"\nSYSTEM_CENTOS_STREAM=\"CentOS Stream\"\nSYSTEM_ROCKY=\"Rocky\"\nSYSTEM_ALMALINUX=\"AlmaLinux\"\nSYSTEM_FEDORA=\"Fedora\"\nSYSTEM_OPENCLOUDOS=\"OpenCloudOS\"\nSYSTEM_OPENEULER=\"openEuler\"\nSYSTEM_ANOLISOS=\"Anolis OS\"\nSYSTEM_OPENSUSE=\"openSUSE\"\nSYSTEM_ARCH=\"Arch\"\nSYSTEM_ALPINE=\"Alpine\"\nSYSTEM_GENTOO=\"Gentoo\"\n\n## \u5b9a\u4e49\u7cfb\u7edf\u7248\u672c\u6587\u4ef6\nFile_LinuxRelease=\/etc\/os-release\nFile_RedHatRelease=\/etc\/redhat-release\nFile_DebianVersion=\/etc\/debian_version\nFile_ArmbianRelease=\/etc\/armbian-release\nFile_OpenCloudOSRelease=\/etc\/opencloudos-release\nFile_openEulerRelease=\/etc\/openEuler-release\nFile_AnolisOSRelease=\/etc\/anolis-release\nFile_ArchLinuxRelease=\/etc\/arch-release\nFile_AlpineRelease=\/etc\/alpine-release\nFile_GentooRelease=\/etc\/gentoo-release\nFile_ProxmoxVersion=\/etc\/pve\/.version\n\n## \u5b9a\u4e49\u8f6f\u4ef6\u6e90\u76f8\u5173\u6587\u4ef6\u6216\u76ee\u5f55\nFile_DebianSourceList=\/etc\/apt\/sources.list\nFile_DebianSourceListBackup=\/etc\/apt\/sources.list.bak\nFile_DebianSources=\/etc\/apt\/sources.list.d\/debian.sources\nFile_DebianSourcesBackup=\/etc\/apt\/sources.list.d\/debian.sources.bak\nFile_UbuntuSources=\/etc\/apt\/sources.list.d\/ubuntu.sources\nFile_UbuntuSourcesBackup=\/etc\/apt\/sources.list.d\/ubuntu.sources.bak\nFile_ArmbianSourceList=\/etc\/apt\/sources.list.d\/armbian.list\nFile_ArmbianSourceListBackup=\/etc\/apt\/sources.list.d\/armbian.list.bak\nFile_ProxmoxSourceList=\/etc\/apt\/sources.list.d\/pve-no-subscription.list\nFile_ProxmoxSourceListBackup=\/etc\/apt\/sources.list.d\/pve-no-subscription.list.bak\nFile_LinuxMintSourceList=\/etc\/apt\/sources.list.d\/official-package-repositories.list\nFile_LinuxMintSourceListBackup=\/etc\/apt\/sources.list.d\/official-package-repositories.list.bak\nFile_ArchLinuxMirrorList=\/etc\/pacman.d\/mirrorlist\nFile_ArchLinuxMirrorListBackup=\/etc\/pacman.d\/mirrorlist.bak\nFile_AlpineRepositories=\/etc\/apk\/repositories\nFile_AlpineRepositoriesBackup=\/etc\/apk\/repositories.bak\nFile_GentooMakeConf=\/etc\/portage\/make.conf\nFile_GentooMakeConfBackup=\/etc\/portage\/make.conf.bak\nFile_GentooReposConf=\/etc\/portage\/repos.conf\/gentoo.conf\nFile_GentooReposConfBackup=\/etc\/portage\/repos.conf\/gentoo.conf.bak\nDir_GentooReposConf=\/etc\/portage\/repos.conf\nDir_DebianExtendSource=\/etc\/apt\/sources.list.d\nDir_DebianExtendSourceBackup=\/etc\/apt\/sources.list.d.bak\nDir_YumRepos=\/etc\/yum.repos.d\nDir_YumReposBackup=\/etc\/yum.repos.d.bak\nDir_openSUSERepos=\/etc\/zypp\/repos.d\nDir_openSUSEReposBackup=\/etc\/zypp\/repos.d.bak\n\n## \u5b9a\u4e49\u989c\u8272\u53d8\u91cf\nRED='\\033[31m'\nGREEN='\\033[32m'\nYELLOW='\\033[33m'\nBLUE='\\033[34m'\nPURPLE='\\033[35m'\nAZURE='\\033[36m'\nPLAIN='\\033[0m'\nBOLD='\\033[1m'\nSUCCESS=\"[\\033[1;32m\u6210\u529f${PLAIN}]\"\nCOMPLETE=\"[\\033[1;32m\u5b8c\u6210${PLAIN}]\"\nWARN=\"[\\033[1;5;33m\u6ce8\u610f${PLAIN}]\"\nERROR=\"[\\033[1;31m\u9519\u8bef${PLAIN}]\"\nFAIL=\"[\\033[1;31m\u5931\u8d25${PLAIN}]\"\nTIP=\"[\\033[1;32m\u63d0\u793a${PLAIN}]\"\nWORKING=\"[\\033[1;36m &gt;_ ${PLAIN}]\"\n\nfunction main() {\n    permission_judgment\n    collect_system_info\n    check_command_options\n    run_start\n    choose_mirrors\n    choose_protocol\n    choose_install_epel_packages\n    close_firewall_service\n    backup_original_mirrors\n    remove_original_mirrors\n    change_mirrors_main\n    upgrade_software\n    run_end\n}\n\n## \u5904\u7406\u547d\u4ee4\u9009\u9879\nfunction handle_command_options() {\n    ## \u547d\u4ee4\u5e2e\u52a9\n    function output_command_help() {\n        echo -e \"\\n\u547d\u4ee4\u9009\u9879(\u540d\u79f0\/\u542b\u4e49\/\u9009\u9879\u503c)\uff1a\n\n  --abroad                 \u4f7f\u7528\u6d77\u5916\u8f6f\u4ef6\u6e90                                                 \u65e0\n  --edu                    \u4f7f\u7528\u4e2d\u56fd\u5927\u9646\u6559\u80b2\u7f51\u8f6f\u4ef6\u6e90                                       \u65e0\n  --source                 \u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740(\u57df\u540d\u6216IP)                                       \u5730\u5740\n  --source-epel            \u6307\u5b9a EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5730\u5740(\u57df\u540d\u6216IP)                 \u5730\u5740\n  --source-security        \u6307\u5b9a Debian \u7cfb\u7edf security \u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5730\u5740(\u57df\u540d\u6216IP)           \u5730\u5740\n  --source-vault           \u6307\u5b9a CentOS\/AlmaLinux \u7cfb\u7edf vault \u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5730\u5740(\u57df\u540d\u6216IP)    \u5730\u5740\n  --source-portage         \u6307\u5b9a Gentoo \u7cfb\u7edf portage \u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5730\u5740(\u57df\u540d\u6216IP)            \u5730\u5740\n  --branch                 \u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f(\u8def\u5f84)                                           \u5206\u652f\u540d\n  --branch-epel            \u6307\u5b9a EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5206\u652f(\u8def\u5f84)                     \u5206\u652f\u540d\n  --branch-security        \u6307\u5b9a Debian \u7cfb\u7edf security \u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5206\u652f(\u8def\u5f84)               \u5206\u652f\u540d\n  --branch-vault           \u6307\u5b9a CentOS\/AlmaLinux \u7cfb\u7edf vault \u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5206\u652f(\u8def\u5f84)        \u5206\u652f\u540d\n  --branch-portage         \u6307\u5b9a Gentoo \u7cfb\u7edf portage \u4ed3\u5e93\u7684\u8f6f\u4ef6\u6e90\u5206\u652f(\u8def\u5f84)                \u5206\u652f\u540d\n  --codename               \u6307\u5b9a Debian \u7cfb\u64cd\u4f5c\u7cfb\u7edf\u7684\u7248\u672c\u4ee3\u53f7                               \u4ee3\u53f7\u540d\u79f0\n  --protocol               \u6307\u5b9a WEB \u534f\u8bae                                                  http \u6216 https\n  --use-intranet-source    \u662f\u5426\u4f18\u5148\u4f7f\u7528\u5185\u7f51\u8f6f\u4ef6\u6e90\u5730\u5740                                     true \u6216 false\n  --use-official-source    \u662f\u5426\u4f7f\u7528\u76ee\u6807\u64cd\u4f5c\u7cfb\u7edf\u7684\u5b98\u65b9\u8f6f\u4ef6\u6e90                               true \u6216 false\n  --install-epel           \u662f\u5426\u5b89\u88c5 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305                                       true \u6216 false\n  --close-firewall         \u662f\u5426\u5173\u95ed\u9632\u706b\u5899                                                 true \u6216 false\n  --backup                 \u662f\u5426\u5907\u4efd\u539f\u6709\u8f6f\u4ef6\u6e90                                             true \u6216 false\n  --upgrade-software       \u662f\u5426\u66f4\u65b0\u8f6f\u4ef6\u5305                                                 true \u6216 false\n  --clean-cache            \u662f\u5426\u6e05\u7406\u4e0b\u8f7d\u7f13\u5b58                                               true \u6216 false\n  --only-epel              \u4ec5\u66f4\u6362 EPEL \u8f6f\u4ef6\u6e90\u6a21\u5f0f                                         \u65e0\n  --ignore-backup-tips     \u5ffd\u7565\u8986\u76d6\u5907\u4efd\u63d0\u793a                                               \u65e0\n  --print-diff             \u6253\u5370\u6e90\u6587\u4ef6\u4fee\u6539\u524d\u540e\u5dee\u5f02                                         \u65e0\n\n\u95ee\u9898\u62a5\u544a https:\/\/github.com\/SuperManito\/LinuxMirrors\/issues\\n\"\n    }\n\n    ## \u5224\u65ad\u53c2\u6570\n    while [ $# -gt 0 ]; do\n        case \"$1\" in\n        ## \u6d77\u5916\u6a21\u5f0f\n        --abroad)\n            USE_ABROAD_SOURCE=\"true\"\n            ;;\n        ## \u4e2d\u56fd\u5927\u9646\u6559\u80b2\u7f51\u6a21\u5f0f\n        --edu)\n            USE_EDU_SOURCE=\"true\"\n            ;;\n        ## \u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\n        --source)\n            if [ \"$2\" ]; then\n                echo \"$2\" | grep -Eq \"\\(|\\)|\\[|\\]|\\{|\\}\"\n                if [ $? -eq 0 ]; then\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u6709\u6548\u7684\u5730\u5740\uff01\"\n                else\n                    SOURCE=\"$(echo \"$2\" | sed -e 's,^http[s]\\?:\/\/,,g' -e 's,\/$,,')\"\n                    shift\n                fi\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\uff01\"\n            fi\n            ;;\n        --source-epel)\n            if [ \"$2\" ]; then\n                echo \"$2\" | grep -Eq \"\\(|\\)|\\[|\\]|\\{|\\}\"\n                if [ $? -eq 0 ]; then\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u6709\u6548\u7684\u5730\u5740\uff01\"\n                else\n                    SOURCE_EPEL=\"$(echo \"$2\" | sed -e 's,^http[s]\\?:\/\/,,g' -e 's,\/$,,')\"\n                    shift\n                fi\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\uff01\"\n            fi\n            ;;\n        --source-security)\n            if [ \"$2\" ]; then\n                echo \"$2\" | grep -Eq \"\\(|\\)|\\[|\\]|\\{|\\}\"\n                if [ $? -eq 0 ]; then\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u6709\u6548\u7684\u5730\u5740\uff01\"\n                else\n                    SOURCE_SECURITY=\"$(echo \"$2\" | sed -e 's,^http[s]\\?:\/\/,,g' -e 's,\/$,,')\"\n                    shift\n                fi\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\uff01\"\n            fi\n            ;;\n        --source-vault)\n            if [ \"$2\" ]; then\n                echo \"$2\" | grep -Eq \"\\(|\\)|\\[|\\]|\\{|\\}\"\n                if [ $? -eq 0 ]; then\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u6709\u6548\u7684\u5730\u5740\uff01\"\n                else\n                    SOURCE_VAULT=\"$(echo \"$2\" | sed -e 's,^http[s]\\?:\/\/,,g' -e 's,\/$,,')\"\n                    shift\n                fi\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\uff01\"\n            fi\n            ;;\n        --source-portage)\n            if [ \"$2\" ]; then\n                echo \"$2\" | grep -Eq \"\\(|\\)|\\[|\\]|\\{|\\}\"\n                if [ $? -eq 0 ]; then\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u6709\u6548\u7684\u5730\u5740\uff01\"\n                else\n                    SOURCE_PORTAGE=\"$(echo \"$2\" | sed -e 's,^http[s]\\?:\/\/,,g' -e 's,\/$,,')\"\n                    shift\n                fi\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5730\u5740\uff01\"\n            fi\n            ;;\n        ## \u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\n        --branch)\n            if [ \"$2\" ]; then\n                SOURCE_BRANCH=\"$2\"\n                shift\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\uff01\"\n            fi\n            ;;\n        --branch-epel)\n            if [ \"$2\" ]; then\n                SOURCE_EPEL_BRANCH=\"$2\"\n                shift\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\uff01\"\n            fi\n            ;;\n        --branch-security)\n            if [ \"$2\" ]; then\n                SOURCE_SECURITY_BRANCH=\"$2\"\n                shift\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\uff01\"\n            fi\n            ;;\n        --branch-vault)\n            if [ \"$2\" ]; then\n                SOURCE_VAULT_BRANCH=\"$2\"\n                shift\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\uff01\"\n            fi\n            ;;\n        --branch-portage)\n            if [ \"$2\" ]; then\n                SOURCE_PORTAGE_BRANCH=\"$2\"\n                shift\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u8f6f\u4ef6\u6e90\u5206\u652f\uff01\"\n            fi\n            ;;\n        ## \u6307\u5b9a Debian \u7cfb\u64cd\u4f5c\u7cfb\u7edf\u7684\u7248\u672c\u4ee3\u53f7\n        --codename)\n            if [ \"$2\" ]; then\n                DEBIAN_CODENAME=\"$2\"\n                shift\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a\u7248\u672c\u4ee3\u53f7\uff01\"\n            fi\n            ;;\n        ## \u4f7f\u7528\u5b98\u65b9\u6e90\n        --use-official-source)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    USE_OFFICIAL_SOURCE=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        ## \u4f7f\u7528\u5185\u7f51\u5730\u5740\n        --intranet | --use-intranet-source)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    USE_INTRANET_SOURCE=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        ## WEB \u534f\u8bae\uff08HTTP\/HTTPS\uff09\n        --protocol | --web-protocol)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                http | https | HTTP | HTTPS)\n                    WEB_PROTOCOL=\"$2\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u68c0\u6d4b\u5230 ${BLUE}$2${PLAIN} \u4e3a\u65e0\u6548\u53c2\u6570\u503c\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a http \u6216 https \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a WEB \u534f\u8bae\uff08http\/https\uff09\uff01\"\n            fi\n            ;;\n        ## \u5b89\u88c5 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n        --install-epel)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    INSTALL_EPEL=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        --only-epel)\n            ONLY_EPEL=\"true\"\n            INSTALL_EPEL=\"true\"\n            ;;\n        ## \u5173\u95ed\u9632\u706b\u5899\n        --close-firewall)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    CLOSE_FIREWALL=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        ## \u5907\u4efd\u539f\u6709\u8f6f\u4ef6\u6e90\n        --backup)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    BACKUP=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        ## \u5ffd\u7565\u8986\u76d6\u5907\u4efd\u63d0\u793a\n        --ignore-backup-tips)\n            IGNORE_BACKUP_TIPS=\"true\"\n            ;;\n        ## \u66f4\u65b0\u8f6f\u4ef6\u5305\n        --upgrade-software | --updata-software)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    UPGRADE_SOFTWARE=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        ## \u6e05\u7406\u4e0b\u8f7d\u7f13\u5b58\n        --clean-cache)\n            if [ \"$2\" ]; then\n                case \"$2\" in\n                [Tt]rue | [Ff]alse)\n                    CLEAN_CACHE=\"${2,,}\"\n                    shift\n                    ;;\n                *)\n                    output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$2${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n                    ;;\n                esac\n            else\n                output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u5728\u8be5\u9009\u9879\u540e\u6307\u5b9a true \u6216 false \uff01\"\n            fi\n            ;;\n        ## \u6253\u5370\u6e90\u6587\u4ef6\u4fee\u6539\u524d\u540e\u5dee\u5f02\n        --print-diff)\n            PRINT_DIFF=\"true\"\n            ;;\n        ## \u547d\u4ee4\u5e2e\u52a9\n        --help)\n            output_command_help\n            exit\n            ;;\n        *)\n            output_error \"\u547d\u4ee4\u9009\u9879 ${BLUE}$1${PLAIN} \u65e0\u6548\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u65b0\u8f93\u5165\uff01\"\n            ;;\n        esac\n        shift\n    done\n    ## \u7ed9\u90e8\u5206\u547d\u4ee4\u9009\u9879\u8d4b\u4e88\u9ed8\u8ba4\u503c\n    ONLY_EPEL=\"${ONLY_EPEL:-\"false\"}\"\n    BACKUP=\"${BACKUP:-\"true\"}\"\n    USE_OFFICIAL_SOURCE=\"${USE_OFFICIAL_SOURCE:-\"false\"}\"\n    IGNORE_BACKUP_TIPS=\"${IGNORE_BACKUP_TIPS:-\"false\"}\"\n    PRINT_DIFF=\"${PRINT_DIFF:-\"false\"}\"\n}\n\nfunction run_start() {\n    [ -z \"${SOURCE}\" ] &amp;&amp; clear\n    echo -e ' +-----------------------------------+'\n    echo -e \" | \\033[0;1;35;95m\u2847\\033[0m  \\033[0;1;33;93m\u2804\\033[0m \\033[0;1;32;92m\u28c0\u2840\\033[0m \\033[0;1;36;96m\u2840\\033[0;1;34;94m\u2880\\033[0m \\033[0;1;35;95m\u2840\u2880\\033[0m \\033[0;1;31;91m\u2877\\033[0;1;33;93m\u28be\\033[0m \\033[0;1;32;92m\u2804\\033[0m \\033[0;1;36;96m\u2840\u28c0\\033[0m \\033[0;1;34;94m\u2840\\033[0;1;35;95m\u28c0\\033[0m \\033[0;1;31;91m\u2880\u2840\\033[0m \\033[0;1;33;93m\u2840\\033[0;1;32;92m\u28c0\\033[0m \\033[0;1;36;96m\u2880\u28c0\\033[0m |\"\n    echo -e \" | \\033[0;1;31;91m\u2827\\033[0;1;33;93m\u2824\\033[0m \\033[0;1;32;92m\u2807\\033[0m \\033[0;1;36;96m\u2807\u2838\\033[0m \\033[0;1;34;94m\u2823\\033[0;1;35;95m\u283c\\033[0m \\033[0;1;31;91m\u281c\u2823\\033[0m \\033[0;1;33;93m\u2807\\033[0;1;32;92m\u2838\\033[0m \\033[0;1;36;96m\u2807\\033[0m \\033[0;1;34;94m\u280f\\033[0m  \\033[0;1;35;95m\u280f\\033[0m  \\033[0;1;33;93m\u2823\u281c\\033[0m \\033[0;1;32;92m\u280f\\033[0m  \\033[0;1;34;94m\u282d\u2815\\033[0m |\"\n    echo -e ' +-----------------------------------+'\n    echo -e ' \u6b22\u8fce\u4f7f\u7528 GNU\/Linux \u66f4\u6362\u7cfb\u7edf\u8f6f\u4ef6\u6e90\u811a\u672c \u80e1\u6843\u6728\u5b9e\u9a8c\u5ba4WWW.HTMACG.CN'\n}\n\nfunction run_end() {\n    echo -e \"\\n---------- \u811a\u672c\u6267\u884c\u7ed3\u675f ----------\"\n    echo -e \"\\n\\033[1;34mPowered by https:\/\/linuxmirrors.cn\\033[0m\\n\"\n}\n\n## \u62a5\u9519\u9000\u51fa\nfunction output_error() {\n    [ \"$1\" ] &amp;&amp; echo -e \"\\n$ERROR $1\\n\"\n    exit 1\n}\n\n## \u6743\u9650\u5224\u5b9a\nfunction permission_judgment() {\n    if [ $UID -ne 0 ]; then\n        output_error \"\u6743\u9650\u4e0d\u8db3\uff0c\u8bf7\u4f7f\u7528 Root \u7528\u6237\u8fd0\u884c\u672c\u811a\u672c\"\n    fi\n}\n\n## \u6536\u96c6\u7cfb\u7edf\u4fe1\u606f\nfunction collect_system_info() {\n    ## \u5b9a\u4e49\u7cfb\u7edf\u540d\u79f0\n    SYSTEM_NAME=\"$(cat $File_LinuxRelease | grep -E \"^NAME=\" | awk -F '=' '{print$2}' | sed \"s\/[\\'\\\"]\/\/g\")\"\n    grep -q \"PRETTY_NAME=\" $File_LinuxRelease &amp;&amp; SYSTEM_PRETTY_NAME=\"$(cat $File_LinuxRelease | grep -E \"^PRETTY_NAME=\" | awk -F '=' '{print$2}' | sed \"s\/[\\'\\\"]\/\/g\")\"\n    ## \u5b9a\u4e49\u7cfb\u7edf\u7248\u672c\u53f7\n    SYSTEM_VERSION_NUMBER=\"$(cat $File_LinuxRelease | grep -E \"^VERSION_ID=\" | awk -F '=' '{print$2}' | sed \"s\/[\\'\\\"]\/\/g\")\"\n    ## \u5b9a\u4e49\u7cfb\u7edfID\n    SYSTEM_ID=\"$(cat $File_LinuxRelease | grep -E \"^ID=\" | awk -F '=' '{print$2}' | sed \"s\/[\\'\\\"]\/\/g\")\"\n    ## \u5224\u5b9a\u5f53\u524d\u7cfb\u7edf\u6d3e\u7cfb\n    if [ -s $File_DebianVersion ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_DEBIAN}\"\n    elif [ -s $File_openEulerRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_OPENEULER}\"\n    elif [ -s $File_AnolisOSRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_ANOLISOS}\"\n    elif [ -f $File_ArchLinuxRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_ARCH}\"\n    elif [ -f $File_AlpineRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_ALPINE}\"\n    elif [ -f $File_GentooRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_GENTOO}\"\n    elif [ -s $File_RedHatRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_REDHAT}\"\n    elif [ -s $File_OpenCloudOSRelease ]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_OPENCLOUDOS}\" # \u6ce8\uff1aRedHat \u5224\u65ad\u4f18\u5148\u7ea7\u9700\u8981\u9ad8\u4e8e OpenCloudOS\uff0c\u56e0\u4e3a\u5b98\u65b9\u5ba3\u79f08\u7248\u672c\u57fa\u4e8e\u7ea2\u5e3d\u800c9\u7248\u672c\u4e0d\u662f\n    elif [[ \"${SYSTEM_NAME}\" == *\"openSUSE\"* ]]; then\n        SYSTEM_FACTIONS=\"${SYSTEM_OPENSUSE}\"\n    else\n        output_error \"\u65e0\u6cd5\u5224\u65ad\u5f53\u524d\u8fd0\u884c\u73af\u5883\uff01\"\n    fi\n    ## \u5224\u5b9a\u7cfb\u7edf\u7c7b\u578b\u3001\u7248\u672c\u3001\u7248\u672c\u53f7\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_DEBIAN}\")\n        if [ ! -x \/usr\/bin\/lsb_release ]; then\n            apt-get install -y lsb-release\n            if [ $? -ne 0 ]; then\n                output_error \"lsb-release \u8f6f\u4ef6\u5305\u5b89\u88c5\u5931\u8d25\\n\\n\u672c\u811a\u672c\u4f9d\u8d56 lsb_release \u6307\u4ee4\u5224\u65ad\u7cfb\u7edf\u5177\u4f53\u7c7b\u578b\u548c\u7248\u672c\uff0c\u5f53\u524d\u7cfb\u7edf\u53ef\u80fd\u4e3a\u7cbe\u7b80\u5b89\u88c5\uff0c\u8bf7\u81ea\u884c\u5b89\u88c5\u540e\u91cd\u65b0\u6267\u884c\u811a\u672c\uff01\"\n            fi\n        fi\n        SYSTEM_JUDGMENT=\"$(lsb_release -is)\"\n        SYSTEM_VERSION_CODENAME=\"${DEBIAN_CODENAME:-\"$(lsb_release -cs)\"}\"\n        ;;\n    \"${SYSTEM_REDHAT}\")\n        SYSTEM_JUDGMENT=\"$(awk '{printf $1}' $File_RedHatRelease)\"\n        ## \u7279\u6b8a\u7cfb\u7edf\u5224\u65ad\n        # Red Hat Enterprise Linux\n        grep -q \"${SYSTEM_RHEL}\" $File_RedHatRelease &amp;&amp; SYSTEM_JUDGMENT=\"${SYSTEM_RHEL}\"\n        # CentOS Stream\n        grep -q \"${SYSTEM_CENTOS_STREAM}\" $File_RedHatRelease &amp;&amp; SYSTEM_JUDGMENT=\"${SYSTEM_CENTOS_STREAM}\"\n        ;;\n    *)\n        SYSTEM_JUDGMENT=\"${SYSTEM_FACTIONS}\"\n        ;;\n    esac\n    ## \u5224\u65ad\u7cfb\u7edf\u53ca\u7248\u672c\u662f\u5426\u53d7\u9002\u914d\n    local is_supported=\"true\"\n    case \"${SYSTEM_JUDGMENT}\" in\n    \"${SYSTEM_DEBIAN}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:1}\" != [8-9] &amp;&amp; \"${SYSTEM_VERSION_NUMBER:0:2}\" != 1[0-3] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_UBUNTU}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:2}\" != 1[4-9] &amp;&amp; \"${SYSTEM_VERSION_NUMBER:0:2}\" != 2[0-4] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_LINUX_MINT}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:2}\" != 19 &amp;&amp; \"${SYSTEM_VERSION_NUMBER:0:2}\" != 2[0-1] &amp;&amp; \"${SYSTEM_VERSION_NUMBER:0:2}\" != 6 ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_RHEL}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:1}\" != [7-9] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_CENTOS}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:1}\" != [7-8] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_CENTOS_STREAM}\" | \"${SYSTEM_ROCKY}\" | \"${SYSTEM_ALMALINUX}\" | \"${SYSTEM_OPENCLOUDOS}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:1}\" != [8-9] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_FEDORA}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:2}\" != [3-4][0-9] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_OPENEULER}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:2}\" != 2[1-4] ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_ANOLISOS}\")\n        if [[ \"${SYSTEM_VERSION_NUMBER:0:2}\" != 23 ]]; then\n            is_supported=\"false\"\n        fi\n        ;;\n    \"${SYSTEM_OPENSUSE}\")\n        case \"${SYSTEM_ID}\" in\n        \"opensuse-leap\")\n            if [[ \"${SYSTEM_VERSION_NUMBER:0:2}\" != 15 ]]; then\n                is_supported=\"false\"\n            fi\n            ;;\n        \"opensuse-tumbleweed\") ;;\n        *)\n            is_supported=\"false\"\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_KALI}\" | \"${SYSTEM_DEEPIN}\" | \"${SYSTEM_ZORIN}\" | \"${SYSTEM_ARCH}\" | \"${SYSTEM_ALPINE}\" | \"${SYSTEM_GENTOO}\")\n        # \u7406\u8bba\u5168\u90e8\u652f\u6301\u6216\u4e0d\u4f5c\u5224\u65ad\n        ;;\n    *)\n        is_supported=\"false\"\n        ;;\n    esac\n    if [[ \"${is_supported}\" == \"false\" ]]; then\n        output_error \"\u5f53\u524d\u7cfb\u7edf\u7248\u672c\u4e0d\u5728\u672c\u811a\u672c\u7684\u652f\u6301\u8303\u56f4\u5185\uff0c\u8bf7\u524d\u5f80\u5b98\u7f51\u67e5\u770b\u652f\u6301\u5217\u8868\uff01\"\n    fi\n    ## \u5224\u5b9a\u7cfb\u7edf\u5904\u7406\u5668\u67b6\u6784\n    case \"$(uname -m)\" in\n    x86_64)\n        DEVICE_ARCH=\"x86_64\"\n        ;;\n    aarch64)\n        DEVICE_ARCH=\"ARM64\"\n        ;;\n    armv7l)\n        DEVICE_ARCH=\"ARMv7\"\n        ;;\n    armv6l)\n        DEVICE_ARCH=\"ARMv6\"\n        ;;\n    i686)\n        DEVICE_ARCH=\"x86_32\"\n        ;;\n    *)\n        DEVICE_ARCH=\"$(uname -m)\"\n        ;;\n    esac\n    ## \u5b9a\u4e49\u8f6f\u4ef6\u6e90\u5206\u652f\u540d\u79f0\n    if [[ -z \"${SOURCE_BRANCH}\" ]]; then\n        ## \u9ed8\u8ba4\u4e3a\u7cfb\u7edf\u540d\u79f0\u5c0f\u5199\uff0c\u66ff\u6362\u7a7a\u683c\n        SOURCE_BRANCH=\"${SYSTEM_JUDGMENT,,}\"\n        SOURCE_BRANCH=\"${SOURCE_BRANCH\/\/ \/-}\"\n        ## \u5904\u7406\u7279\u6b8a\u7684\u5206\u652f\u540d\u79f0\n        case \"${SYSTEM_JUDGMENT}\" in\n        \"${SYSTEM_DEBIAN}\")\n            case ${SYSTEM_VERSION_NUMBER:0:1} in\n            8 | 9 | 10)\n                SOURCE_BRANCH=\"debian-archive\" # EOF\n                ;;\n            *)\n                SOURCE_BRANCH=\"debian\"\n                ;;\n            esac\n            ;;\n        \"${SYSTEM_UBUNTU}\" | \"${SYSTEM_ZORIN}\")\n            if [[ \"${DEVICE_ARCH}\" == \"x86_64\" ]] || [[ \"${DEVICE_ARCH}\" == *i?86* ]]; then\n                SOURCE_BRANCH=\"ubuntu\"\n            else\n                SOURCE_BRANCH=\"ubuntu-ports\"\n            fi\n            ;;\n        \"${SYSTEM_RHEL}\")\n            case ${SYSTEM_VERSION_NUMBER:0:1} in\n            9)\n                SOURCE_BRANCH=\"centos-stream\" # \u4f7f\u7528 CentOS Stream \u4ed3\u5e93\n                ;;\n            *)\n                SOURCE_BRANCH=\"centos-vault\" # EOF\n                ;;\n            esac\n            ;;\n        \"${SYSTEM_CENTOS}\")\n            if [[ \"${DEVICE_ARCH}\" == \"x86_64\" ]]; then\n                SOURCE_BRANCH=\"centos-vault\" # EOF\n            else\n                SOURCE_BRANCH=\"centos-altarch\"\n            fi\n            ;;\n        \"${SYSTEM_CENTOS_STREAM}\")\n            # \u81ea CentOS Stream 9 \u5f00\u59cb\u4f7f\u7528 centos-stream \u4ed3\u5e93\uff0c\u65e7\u7248\u672c\u4f7f\u7528 centos \u4ed3\u5e93\n            case ${SYSTEM_VERSION_NUMBER:0:1} in\n            8)\n                if [[ \"${DEVICE_ARCH}\" == \"x86_64\" ]]; then\n                    SOURCE_BRANCH=\"centos-vault\" # EOF\n                else\n                    SOURCE_BRANCH=\"centos-altarch\"\n                fi\n                ;;\n            *)\n                SOURCE_BRANCH=\"centos-stream\"\n                ;;\n            esac\n            ;;\n        \"${SYSTEM_ARCH}\")\n            if [[ \"${DEVICE_ARCH}\" == \"x86_64\" ]] || [[ \"${DEVICE_ARCH}\" == *i?86* ]]; then\n                SOURCE_BRANCH=\"archlinux\"\n            else\n                SOURCE_BRANCH=\"archlinuxarm\"\n            fi\n            ;;\n        esac\n    fi\n    ## \u5b9a\u4e49\u8f6f\u4ef6\u6e90\u66f4\u65b0\u6587\u5b57\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_DEBIAN}\" | \"${SYSTEM_ALPINE}\")\n        SYNC_MIRROR_TEXT=\"\u66f4\u65b0\u8f6f\u4ef6\u6e90\"\n        ;;\n    \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n        SYNC_MIRROR_TEXT=\"\u751f\u6210\u8f6f\u4ef6\u6e90\u7f13\u5b58\"\n        ;;\n    \"${SYSTEM_OPENSUSE}\")\n        SYNC_MIRROR_TEXT=\"\u5237\u65b0\u8f6f\u4ef6\u6e90\"\n        ;;\n    \"${SYSTEM_ARCH}\" | \"${SYSTEM_GENTOO}\")\n        SYNC_MIRROR_TEXT=\"\u540c\u6b65\u8f6f\u4ef6\u6e90\"\n        ;;\n    esac\n}\n\n## \u547d\u4ee4\u9009\u9879\u517c\u5bb9\u6027\u5224\u65ad\nfunction check_command_options() {\n    if [[ \"${USE_ABROAD_SOURCE}\" == \"true\" &amp;&amp; \"${USE_EDU_SOURCE}\" == \"true\" ]]; then\n        output_error \"\u4e24\u79cd\u6a21\u5f0f\u4e0d\u53ef\u540c\u65f6\u4f7f\u7528\uff01\"\n    fi\n    if [[ \"${DEBIAN_CODENAME}\" ]]; then\n        if [[ \"${SYSTEM_FACTIONS}\" != \"${SYSTEM_DEBIAN}\" ]]; then\n            output_error \"\u5f53\u524d\u7cfb\u7edf\u4e0d\u652f\u6301\u4f7f\u7528\u6307\u5b9a\u7248\u672c\u4ee3\u53f7\u547d\u4ee4\u9009\u9879\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u8bd5\uff01\"\n        fi\n    fi\n    if [[ \"${INSTALL_EPEL}\" == \"true\" || \"${ONLY_EPEL}\" == \"true\" ]]; then\n        case \"${SYSTEM_FACTIONS}\" in\n        \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\")\n            if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_FEDORA}\" ]]; then\n                output_error \"\u5f53\u524d\u7cfb\u7edf\u4e0d\u652f\u6301\u5b89\u88c5 EPEL \u9644\u4ef6\u8f6f\u4ef6\u5305\u6545\u65e0\u6cd5\u4f7f\u7528\u76f8\u5173\u547d\u4ee4\u9009\u9879\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u8bd5\uff01\"\n            fi\n            ;;\n        *)\n            output_error \"\u5f53\u524d\u7cfb\u7edf\u4e0d\u652f\u6301\u5b89\u88c5 EPEL \u9644\u4ef6\u8f6f\u4ef6\u5305\u6545\u65e0\u6cd5\u4f7f\u7528\u76f8\u5173\u547d\u4ee4\u9009\u9879\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u8bd5\uff01\"\n            ;;\n        esac\n    fi\n    if [[ \"${SOURCE_SECURITY}\" == \"true\" || \"${SOURCE_SECURITY_BRANCH}\" == \"true\" ]]; then\n        if [[ \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_DEBIAN}\" ]]; then\n            output_error \"\u5f53\u524d\u7cfb\u7edf\u4e0d\u652f\u6301\u4f7f\u7528 security \u4ed3\u5e93\u76f8\u5173\u547d\u4ee4\u9009\u9879\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u8bd5\uff01\"\n        fi\n    fi\n    if [[ \"${SOURCE_VAULT}\" == \"true\" || \"${SOURCE_VAULT_BRANCH}\" == \"true\" ]]; then\n        if [[ \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_CENTOS}\" &amp;&amp; \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_RHEL}\" &amp;&amp; \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_ALMALINUX}\" ]]; then\n            output_error \"\u5f53\u524d\u7cfb\u7edf\u4e0d\u652f\u6301\u4f7f\u7528 vault \u4ed3\u5e93\u76f8\u5173\u547d\u4ee4\u9009\u9879\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u8bd5\uff01\"\n        fi\n    fi\n    if [[ \"${SOURCE_PORTAGE}\" == \"true\" || \"${SOURCE_PORTAGE_BRANCH}\" == \"true\" ]]; then\n        if [[ \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_GENTOO}\" ]]; then\n            output_error \"\u5f53\u524d\u7cfb\u7edf\u4e0d\u652f\u6301\u4f7f\u7528 portage \u4ed3\u5e93\u76f8\u5173\u547d\u4ee4\u9009\u9879\uff0c\u8bf7\u786e\u8ba4\u540e\u91cd\u8bd5\uff01\"\n        fi\n    fi\n}\n\n## \u9009\u62e9\u8f6f\u4ef6\u6e90\nfunction choose_mirrors() {\n    ## \u6253\u5370\u8f6f\u4ef6\u6e90\u5217\u8868\n    function print_mirrors_list() {\n        local tmp_mirror_name tmp_mirror_url arr_num default_mirror_name_length tmp_mirror_name_length tmp_spaces_nums a i j\n        ## \u8ba1\u7b97\u5b57\u7b26\u4e32\u957f\u5ea6\n        function StringLength() {\n            local text=$1\n            echo \"${#text}\"\n        }\n        echo -e ''\n\n        local list_arr=()\n        local list_arr_sum\n        list_arr_sum=\"$(eval echo \\${#$1[@]})\"\n        for ((a = 0; a &lt; $list_arr_sum; a++)); do\n            list_arr[$a]=\"$(eval echo \\${$1[a]})\"\n        done\n        if [ -x \/usr\/bin\/printf ]; then\n            for ((i = 0; i &lt; ${#list_arr[@]}; i++)); do\n                tmp_mirror_name=$(echo \"${list_arr[i]}\" | awk -F '@' '{print$1}') # \u8f6f\u4ef6\u6e90\u540d\u79f0\n                # tmp_mirror_url=$(echo \"${list_arr[i]}\" | awk -F '@' '{print$2}') # \u8f6f\u4ef6\u6e90\u5730\u5740\n                arr_num=$((i + 1))\n                default_mirror_name_length=${2:-\"30\"} # \u9ed8\u8ba4\u8f6f\u4ef6\u6e90\u540d\u79f0\u6253\u5370\u957f\u5ea6\n                ## \u8865\u9f50\u957f\u5ea6\u5dee\u5f02\uff08\u4e2d\u6587\u7684\u5f15\u53f7\u5728\u7b49\u5bbd\u5b57\u4f53\u4e2d\u53601\u683c\u800c\u975e2\u683c\uff09\n                [[ $(echo \"${tmp_mirror_name}\" | grep -c \"\u201c\") -gt 0 ]] &amp;&amp; let default_mirror_name_length+=$(echo \"${tmp_mirror_name}\" | grep -c \"\u201c\")\n                [[ $(echo \"${tmp_mirror_name}\" | grep -c \"\u201d\") -gt 0 ]] &amp;&amp; let default_mirror_name_length+=$(echo \"${tmp_mirror_name}\" | grep -c \"\u201d\")\n                [[ $(echo \"${tmp_mirror_name}\" | grep -c \"\u2018\") -gt 0 ]] &amp;&amp; let default_mirror_name_length+=$(echo \"${tmp_mirror_name}\" | grep -c \"\u2018\")\n                [[ $(echo \"${tmp_mirror_name}\" | grep -c \"\u2019\") -gt 0 ]] &amp;&amp; let default_mirror_name_length+=$(echo \"${tmp_mirror_name}\" | grep -c \"\u2019\")\n                # \u975e\u4e00\u822c\u5b57\u7b26\u957f\u5ea6\n                tmp_mirror_name_length=$(StringLength \"$(echo \"${tmp_mirror_name\/\/ \/}\" | sed \"s|[0-9a-zA-Z\\.\\=\\:\\_\\(\\)\\'\\\"-\\\/\\!\u00b7]||g;\")\")\n                ## \u586b\u5145\u7a7a\u683c\n                tmp_spaces_nums=$(($((default_mirror_name_length - tmp_mirror_name_length - $(StringLength \"${tmp_mirror_name}\"))) \/ 2))\n                for ((j = 1; j &lt;= ${tmp_spaces_nums}; j++)); do\n                    tmp_mirror_name=\"${tmp_mirror_name} \"\n                done\n                printf \" \u2756  %-$((default_mirror_name_length + tmp_mirror_name_length))s %4s\\n\" \"${tmp_mirror_name}\" \"$arr_num)\"\n            done\n        else\n            for ((i = 0; i &lt; ${#list_arr[@]}; i++)); do\n                tmp_mirror_name=$(echo \"${list_arr[i]}\" | awk -F '@' '{print$1}') # \u8f6f\u4ef6\u6e90\u540d\u79f0\n                tmp_mirror_url=$(echo \"${list_arr[i]}\" | awk -F '@' '{print$2}')  # \u8f6f\u4ef6\u6e90\u5730\u5740\n                arr_num=$((i + 1))\n                echo -e \" \u2756  $arr_num. ${tmp_mirror_url} | ${tmp_mirror_name}\"\n            done\n        fi\n    }\n\n    ## \u9009\u62e9\u8f6f\u4ef6\u6e90\u5185\u7f51\u5730\u5740\n    # \u4f8b\u5982\u90e8\u5206\u4e91\u8ba1\u7b97\u5382\u5546\u7684\u955c\u50cf\u7ad9\u533a\u5206\u5916\u7f51\uff08\u516c\u7f51\uff09\u5730\u5740\u548c\u5185\u7f51\u5730\u5740\uff0c\u5185\u7f51\u5730\u5740\u4ec5\u9762\u5411\u4e91\u8ba1\u7b97\u5382\u5546\u4e91\u670d\u52a1\u5668\u7528\u6237\u4f7f\u7528\n    # \u5185\u7f51\u5730\u5740\u4e00\u822c\u4e0d\u652f\u6301\u4f7f\u7528 HTTPS \u534f\u8bae\uff0c\u6240\u4ee5\u9ed8\u8ba4\u8bbe\u7f6e\u4e3a HTTP \u534f\u8bae\n    function choose_intranet_address() {\n        local intranet_source\n        for ((i = 0; i &lt; ${#mirror_list_extranet[@]}; i++)); do\n            if [[ \"${SOURCE}\" == \"${mirror_list_extranet[i]}\" ]]; then\n                intranet_source=\"${mirror_list_intranet[i]}\"\n                ONLY_HTTP=\"True\"\n                break\n            else\n                continue\n            fi\n        done\n        if [[ -z \"${USE_INTRANET_SOURCE}\" ]]; then\n            local CHOICE\n            CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u9ed8\u8ba4\u4f7f\u7528\u8f6f\u4ef6\u6e90\u7684\u516c\u7f51\u5730\u5740\uff0c\u662f\u5426\u7ee7\u7eed? [Y\/n] ${PLAIN}\")\n            read -rp \"${CHOICE}\" INPUT\n            [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n            case \"${INPUT}\" in\n            [Yy] | [Yy][Ee][Ss]) ;;\n            [Nn] | [Nn][Oo])\n                SOURCE=\"${intranet_source}\"\n                echo -e \"\\n$WARN \u5df2\u5207\u6362\u81f3\u5185\u7f51\u4e13\u7528\u5730\u5740\uff0c\u4ec5\u9650\u5728\u7279\u5b9a\u73af\u5883\u4e0b\u4f7f\u7528\uff01\"\n                ;;\n            *)\n                echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u4f7f\u7528\u5185\u7f51\u5730\u5740\uff01\"\n                ;;\n            esac\n        elif [[ \"${USE_INTRANET_SOURCE}\" == \"true\" ]]; then\n            SOURCE=\"${intranet_source}\"\n        fi\n    }\n\n    function print_title() {\n        local system_name=\"${SYSTEM_PRETTY_NAME:-\"${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER}\"}\"\n        local arch=\"${DEVICE_ARCH}\"\n        local date_time time_zone\n        date_time=\"$(date \"+%Y-%m-%d %H:%M:%S\")\"\n        time_zone=\"$(timedatectl status 2&gt;\/dev\/null | grep \"Time zone\" | awk -F ':' '{print$2}' | awk -F ' ' '{print$1}')\"\n\n        echo -e ''\n        echo -e \" \u8fd0\u884c\u73af\u5883 ${BLUE}${system_name} ${arch}${PLAIN}\"\n        echo -e \" \u7cfb\u7edf\u65f6\u95f4 ${BLUE}${date_time} ${time_zone}${PLAIN}\"\n    }\n\n    print_title\n    if [[ -z \"${SOURCE}\" ]]; then\n        ## \u4f7f\u7528\u5b98\u65b9\u6e90\n        if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n            return\n        fi\n\n        if [[ ${USE_ABROAD_SOURCE} = \"true\" ]]; then\n            local mirror_list_name=\"mirror_list_abroad\"\n            print_mirrors_list \"${mirror_list_name}\" 60\n        elif [[ ${USE_EDU_SOURCE} = \"true\" ]]; then\n            local mirror_list_name=\"mirror_list_edu\"\n            print_mirrors_list \"${mirror_list_name}\" 31\n        else\n            local mirror_list_name=\"mirror_list_default\"\n            print_mirrors_list \"${mirror_list_name}\" 31\n        fi\n\n        local CHOICE\n        CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u8bf7\u9009\u62e9\u5e76\u8f93\u5165\u4f60\u60f3\u4f7f\u7528\u7684\u8f6f\u4ef6\u6e90 [ 1-$(eval echo \\${#$mirror_list_name[@]}) ]\uff1a${PLAIN}\")\n        while true; do\n            read -rp \"${CHOICE}\" INPUT\n            case \"${INPUT}\" in\n            [1-9] | [1-9][0-9] | [1-9][0-9][0-9])\n                local tmp_source\n                tmp_source=\"$(eval echo \\${${mirror_list_name}[$((INPUT - 1))]})\"\n                if [[ -z \"${tmp_source}\" ]]; then\n                    echo -e \"\\n$WARN \u8bf7\u8f93\u5165\u6709\u6548\u7684\u6570\u5b57\u5e8f\u53f7\uff01\"\n                else\n                    SOURCE=\"$(eval echo \\${${mirror_list_name}[$((INPUT - 1))]} | awk -F '@' '{print$2}')\"\n                    # echo \"${SOURCE}\"\n                    # exit\n                    break\n                fi\n                ;;\n            *)\n                echo -e \"\\n$WARN \u8bf7\u8f93\u5165\u6570\u5b57\u5e8f\u53f7\u4ee5\u9009\u62e9\u4f60\u60f3\u4f7f\u7528\u7684\u8f6f\u4ef6\u6e90\uff01\"\n                ;;\n            esac\n        done\n    fi\n\n    ## \u9009\u62e9\u8f6f\u4ef6\u6e90\u5185\u7f51\u5730\u5740\n    if [[ \"${mirror_list_extranet[*]}\" =~ (^|[^[:alpha:]])\"${SOURCE}\"([^[:alpha:]]|$) ]]; then\n        choose_intranet_address\n    fi\n}\n\n## \u9009\u62e9\u540c\u6b65\u6216\u66f4\u65b0\u8f6f\u4ef6\u6e90\u6240\u4f7f\u7528\u7684 WEB \u534f\u8bae\uff08 HTTP\/HTTPS\uff09\nfunction choose_protocol() {\n    if [[ -z \"${WEB_PROTOCOL}\" ]]; then\n        if [[ \"${ONLY_HTTP}\" == \"True\" ]]; then\n            WEB_PROTOCOL=\"http\"\n        else\n            local CHOICE\n            CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u8f6f\u4ef6\u6e90\u662f\u5426\u4f7f\u7528 HTTP \u534f\u8bae? [Y\/n] ${PLAIN}\")\n            read -rp \"${CHOICE}\" INPUT\n            [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n            case \"${INPUT}\" in\n            [Yy] | [Yy][Ee][Ss])\n                WEB_PROTOCOL=\"http\"\n                ;;\n            [Nn] | [Nn][Oo])\n                WEB_PROTOCOL=\"https\"\n                ;;\n            *)\n                echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4f7f\u7528 HTTPS \u534f\u8bae\uff01\"\n                WEB_PROTOCOL=\"https\"\n                ;;\n            esac\n        fi\n    fi\n    WEB_PROTOCOL=\"${WEB_PROTOCOL,,}\"\n}\n\n# \u9002\u7528\u4e8e\u90e8\u5206\u7ea2\u5e3d\u7cfb\u7edf\u7684 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\uff08\u5b89\u88c5\/\u6362\u6e90\uff09\nfunction choose_install_epel_packages() {\n    function check_install_status() {\n        ## \u5224\u65ad\u662f\u5426\u5df2\u5b89\u88c5 EPEL \u8f6f\u4ef6\u5305\n        rpm -qa | grep epel-release -q\n        VERIFICATION_EPEL=$?\n        ## \u5224\u65ad \/etc\/yum.repos.d \u76ee\u5f55\u4e0b\u662f\u5426\u5b58\u5728 epel \u9644\u52a0\u8f6f\u4ef6\u5305 repo \u6e90\u6587\u4ef6\n        [ -d $Dir_YumRepos ] &amp;&amp; ls $Dir_YumRepos | grep epel -q\n        VERIFICATION_EPELFILES=$?\n        ## \u5224\u65ad \/etc\/yum.repos.d.bak \u76ee\u5f55\u4e0b\u662f\u5426\u5b58\u5728 epel \u9644\u52a0\u8f6f\u4ef6\u5305 repo \u6e90\u6587\u4ef6\n        [ -d $Dir_YumReposBackup ] &amp;&amp; ls $Dir_YumReposBackup | grep epel -q\n        VERIFICATION_EPELBACKUPFILES=$?\n    }\n\n    ## \u5224\u65ad\u662f\u5426\u652f\u6301\u4e14\u9700\u8981\u5904\u7406 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\")\n        if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_FEDORA}\" ]] || [[ \"${INSTALL_EPEL}\" == \"false\" ]]; then\n            INSTALL_EPEL=\"false\"\n            return\n        else\n            check_install_status\n        fi\n        ;;\n    *)\n        INSTALL_EPEL=\"false\"\n        return\n        ;;\n    esac\n    ## \u9009\u62e9\u662f\u5426\u5b89\u88c5 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n    if [[ -z \"${INSTALL_EPEL}\" ]]; then\n        if [ $VERIFICATION_EPEL -eq 0 ]; then\n            local CHOICE\n            CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u68c0\u6d4b\u5230\u7cfb\u7edf\u5df2\u5b89\u88c5 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\uff0c\u662f\u5426\u66ff\u6362\/\u8986\u76d6\u8f6f\u4ef6\u6e90? [Y\/n] ${PLAIN}\")\n        else\n            local CHOICE\n            CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u662f\u5426\u5b89\u88c5 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305? [Y\/n] ${PLAIN}\")\n        fi\n        read -rp \"${CHOICE}\" INPUT\n        [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n        case \"${INPUT}\" in\n        [Yy] | [Yy][Ee][Ss])\n            INSTALL_EPEL=\"true\"\n            ;;\n        [Nn] | [Nn][Oo])\n            INSTALL_EPEL=\"false\"\n            ;;\n        *)\n            echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u66f4\u6362\uff01\"\n            INSTALL_EPEL=\"false\"\n            ;;\n        esac\n    fi\n}\n\n## \u5173\u95ed\u9632\u706b\u5899\u548cSELinux\nfunction close_firewall_service() {\n    if [ ! -x \/usr\/bin\/systemctl ]; then\n        return\n    fi\n    if [[ \"$(systemctl is-active firewalld)\" == \"active\" ]]; then\n        if [[ -z \"${CLOSE_FIREWALL}\" ]]; then\n            local CHOICE\n            CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u662f\u5426\u5173\u95ed\u9632\u706b\u5899\u548c SELinux ? [Y\/n] ${PLAIN}\")\n            read -rp \"${CHOICE}\" INPUT\n            [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n            case \"${INPUT}\" in\n            [Yy] | [Yy][Ee][Ss])\n                CLOSE_FIREWALL=\"true\"\n                ;;\n            [Nn] | [Nn][Oo]) ;;\n            *)\n                echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u5173\u95ed\uff01\"\n                ;;\n            esac\n        fi\n        if [[ \"${CLOSE_FIREWALL}\" == \"true\" ]]; then\n            local SelinuxConfig=\/etc\/selinux\/config\n            systemctl disable --now firewalld &gt;\/dev\/null 2&gt;&amp;1\n            [ -s $SelinuxConfig ] &amp;&amp; sed -i \"s\/SELINUX=enforcing\/SELINUX=disabled\/g\" $SelinuxConfig &amp;&amp; setenforce 0 &gt;\/dev\/null 2&gt;&amp;1\n        fi\n    fi\n}\n\n## \u5907\u4efd\u539f\u6709\u8f6f\u4ef6\u6e90\uff08\u6587\u4ef6\/\u76ee\u5f55\uff09\nfunction backup_original_mirrors() {\n    function backup_file() {\n        local target_file=$1\n        local backup_file=$2\n        local type=\"$3\"\n        ## \u5224\u65ad\u662f\u5426\u5b58\u5728\u6e90\u6587\u4ef6\n        [ -f \"${target_file}\" ] || touch \"${target_file}\"\n        if [ ! -s \"${target_file}\" ]; then\n            echo -e ''\n            return\n        fi\n        ## \u5224\u65ad\u662f\u5426\u5b58\u5728\u5df2\u5907\u4efd\u7684\u6e90\u6587\u4ef6\n        if [ -s \"${backup_file}\" ]; then\n            if [[ \"${IGNORE_BACKUP_TIPS}\" != \"false\" ]]; then\n                return\n            fi\n            local CHOICE_BACKUP\n            CHOICE_BACKUP=$(echo -e \"\\n${BOLD}\u2514\u2500 \u68c0\u6d4b\u5230\u7cfb\u7edf\u4e2d\u5b58\u5728\u5df2\u5907\u4efd\u7684 ${type} \u6e90\u6587\u4ef6\uff0c\u662f\u5426\u8df3\u8fc7\u8986\u76d6\u5907\u4efd? [Y\/n] ${PLAIN}\")\n            read -rp \"${CHOICE_BACKUP}\" INPUT\n            [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n            case \"${INPUT}\" in\n            [Yy] | [Yy][Ee][Ss]) ;;\n            [Nn] | [Nn][Oo])\n                echo ''\n                cp -rvf \"${target_file}\" \"${backup_file}\" 2&gt;&amp;1\n                BACKED_UP=\"true\"\n                ;;\n            *)\n                echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u8986\u76d6\uff01\"\n                ;;\n            esac\n        else\n            echo ''\n            cp -rvf \"${target_file}\" \"${backup_file}\" 2&gt;&amp;1\n            BACKED_UP=\"true\"\n            echo -e \"\\n$COMPLETE \u5df2\u5907\u4efd\u539f\u6709 ${type} \u6e90\u6587\u4ef6\"\n            sleep 1s\n        fi\n    }\n    function backup_dir() {\n        local target_dir=$1\n        local backup_dir=$2\n        [ -d \"${target_dir}\" ] || mkdir -p \"${target_dir}\"\n        [ -d \"${backup_dir}\" ] || mkdir -p \"${backup_dir}\"\n        ## \u5224\u65ad\u662f\u5426\u5b58\u5728 repo \u6e90\u6587\u4ef6\n        ls \"${target_dir}\" | grep '\\.repo$' -q\n        if [ $? -ne 0 ]; then\n            return\n        fi\n        ## \u5224\u65ad\u662f\u5426\u5b58\u5728\u5df2\u5907\u4efd\u7684 repo \u6e90\u6587\u4ef6\n        ls \"${backup_dir}\" | grep '\\.repo$' -q\n        if [ $? -eq 0 ]; then\n            if [[ \"${IGNORE_BACKUP_TIPS}\" != \"false\" ]]; then\n                return\n            fi\n            local CHOICE_BACKUP\n            CHOICE_BACKUP=$(echo -e \"\\n${BOLD}\u2514\u2500 \u68c0\u6d4b\u5230\u7cfb\u7edf\u4e2d\u5b58\u5728\u5df2\u5907\u4efd\u7684 repo \u6e90\u6587\u4ef6\uff0c\u662f\u5426\u8df3\u8fc7\u8986\u76d6\u5907\u4efd? [Y\/n] ${PLAIN}\")\n            read -rp \"${CHOICE_BACKUP}\" INPUT\n            [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n            case \"${INPUT}\" in\n            [Yy] | [Yy][Ee][Ss]) ;;\n            [Nn] | [Nn][Oo])\n                echo ''\n                cp -rvf $target_dir\/* \"${backup_dir}\" 2&gt;&amp;1\n                BACKED_UP=\"true\"\n                ;;\n            *)\n                echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u8986\u76d6\uff01\"\n                ;;\n            esac\n        else\n            echo ''\n            cp -rvf $target_dir\/* \"${backup_dir}\" 2&gt;&amp;1\n            BACKED_UP=\"true\"\n            echo -e \"\\n$COMPLETE \u5df2\u5907\u4efd\u539f\u6709 repo \u6e90\u6587\u4ef6\"\n            sleep 1s\n        fi\n    }\n\n    BACKED_UP=\"false\" # \u662f\u5426\u5df2\u5907\u4efd\n    if [[ \"${BACKUP}\" == \"true\" ]]; then\n        case \"${SYSTEM_FACTIONS}\" in\n        \"${SYSTEM_DEBIAN}\")\n            if [[ \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_LINUX_MINT}\" ]]; then\n                # \/etc\/apt\/sources.list\n                backup_file $File_DebianSourceList $File_DebianSourceListBackup \"sources.list\"\n            fi\n            ## \u81ea\u65b0\u7248\u672c\u7684 Debian \u4e0e Ubuntu \u8d77\uff0c\u8f6f\u4ef6\u6e90\u6587\u4ef6\u683c\u5f0f\u7edf\u4e00\u4e3a DEB822 \u683c\u5f0f\uff0c\u6d89\u53ca Debian 12 \u7684\u5bb9\u5668\u955c\u50cf\u3001Ubuntu 24.04 \u548c\u672a\u6765\u5c1a\u672a\u53d1\u5e03\u7684\u7248\u672c\n            # Debian DEB822 \u683c\u5f0f\u6e90\u6587\u4ef6\n            if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_DEBIAN}\" ]]; then\n                [ -f $File_DebianSources ] &amp;&amp; backup_file $File_DebianSources $File_DebianSourcesBackup \"debian.sources\"\n            fi\n            # Ubuntu DEB822 \u683c\u5f0f\u6e90\u6587\u4ef6\n            if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_UBUNTU}\" ]]; then\n                [ -f $File_UbuntuSources ] &amp;&amp; backup_file $File_UbuntuSources $File_UbuntuSourcesBackup \"ubuntu.sources\"\n            fi\n            # Armbian\n            if [ -f $File_ArmbianRelease ]; then\n                backup_file $File_ArmbianSourceList $File_ArmbianSourceListBackup \"armbian.list\"\n            fi\n            # Proxmox\n            if [ -f $File_ProxmoxVersion ]; then\n                backup_file $File_ProxmoxSourceList $File_ProxmoxSourceListBackup \"pve-no-subscription.list\"\n            fi\n            # Linux Mint\n            if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_LINUX_MINT}\" ]]; then\n                backup_file $File_LinuxMintSourceList $File_LinuxMintSourceListBackup \"official-package-repositories.list\"\n            fi\n            ;;\n        \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n            # \/etc\/yum.repos.d\n            backup_dir $Dir_YumRepos $Dir_YumReposBackup\n            ;;\n        \"${SYSTEM_OPENSUSE}\")\n            # \/etc\/zypp\/repos.d\n            backup_dir $Dir_openSUSERepos $Dir_openSUSEReposBackup\n            ;;\n        \"${SYSTEM_ARCH}\")\n            # \/etc\/pacman.d\/mirrorlist\n            backup_file $File_ArchLinuxMirrorList $File_ArchLinuxMirrorListBackup \"mirrorlist\"\n            ;;\n        \"${SYSTEM_ALPINE}\")\n            # \/etc\/apk\/repositories\n            backup_file $File_AlpineRepositories $File_AlpineRepositoriesBackup \"repositories\"\n            ;;\n        \"${SYSTEM_GENTOO}\")\n            # \/etc\/portage\/make.conf\n            backup_file $File_GentooMakeConf $File_GentooMakeConfBackup \"make.conf\"\n            # \/etc\/portage\/repos.conf\/gentoo.conf\n            [ -d \"${Dir_GentooReposConf}\" ] || mkdir -p \"${Dir_GentooReposConf}\"\n            backup_file $File_GentooReposConf $File_GentooReposConfBackup \"gentoo.conf\"\n            ;;\n        esac\n    fi\n}\n\n## \u79fb\u9664\u539f\u6709\u8f6f\u4ef6\u6e90\nfunction remove_original_mirrors() {\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_DEBIAN}\")\n        if [[ \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_LINUX_MINT}\" ]]; then\n            [ -f $File_DebianSourceList ] &amp;&amp; sed -i '1,$d' $File_DebianSourceList\n        fi\n        [ -d $Dir_DebianExtendSource ] || mkdir -p $Dir_DebianExtendSource\n        ## \u81ea\u65b0\u7248\u672c\u7684 Debian \u4e0e Ubuntu \u8d77\uff0c\u8f6f\u4ef6\u6e90\u6587\u4ef6\u683c\u5f0f\u7edf\u4e00\u4e3a DEB822 \u683c\u5f0f\uff0c\u6d89\u53ca Debian 12 \u7684\u5bb9\u5668\u955c\u50cf\u3001Ubuntu 24.04 \u548c\u672a\u6765\u5c1a\u672a\u53d1\u5e03\u7684\u7248\u672c\n        # Debian DEB822 \u683c\u5f0f\u6e90\u6587\u4ef6\n        if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_DEBIAN}\" ]]; then\n            [ -f $File_DebianSources ] &amp;&amp; rm -rf $File_DebianSources\n        fi\n        # Ubuntu DEB822 \u683c\u5f0f\u6e90\u6587\u4ef6\n        if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_UBUNTU}\" ]]; then\n            [ -f $File_UbuntuSources ] &amp;&amp; rm -rf $File_UbuntuSources\n        fi\n        # Armbian\n        if [ -f $File_ArmbianRelease ]; then\n            [ -f $File_ArmbianSourceList ] &amp;&amp; sed -i '1,$d' $File_ArmbianSourceList\n        fi\n        # Proxmox\n        if [ -f $File_ProxmoxVersion ]; then\n            [ -f $File_ProxmoxSourceList ] &amp;&amp; sed -i '1,$d' $File_ProxmoxSourceList\n        fi\n        # Linux Mint\n        if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_LINUX_MINT}\" ]]; then\n            [ -f $File_LinuxMintSourceList ] &amp;&amp; sed -i '1,$d' $File_LinuxMintSourceList\n        fi\n        ;;\n    \"${SYSTEM_REDHAT}\")\n        if [ ! -d $Dir_YumRepos ]; then\n            mkdir -p $Dir_YumRepos\n            return\n        fi\n        if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_FEDORA}\" ]]; then\n            # Fedora \u6709\u989d\u5916\u6e90\u6587\u4ef6\uff0c\u4e14\u968f\u7248\u672c\u53d8\u5316\n            for repo_file in fedora.repo fedora-updates.repo fedora-updates-testing.repo fedora-modular.repo fedora-updates-modular.repo fedora-updates-testing-modular.repo; do\n                rm -rf $Dir_YumRepos\/$repo_file\n            done\n        else\n            if [[ \"${ONLY_EPEL}\" != \"false\" ]]; then\n                return\n            fi\n            case \"${SYSTEM_JUDGMENT}\" in\n            \"${SYSTEM_RHEL}\")\n                case ${SYSTEM_VERSION_NUMBER:0:1} in\n                9)\n                    rm -rf $Dir_YumRepos\/rocky* # \u6ce8\uff1a\u672c\u811a\u672c\u65e7\u7248\u9057\u7559\u95ee\u9898\n                    rm -rf $Dir_YumRepos\/centos.repo $Dir_YumRepos\/centos-addons.repo\n                    ;;\n                *)\n                    if [ -f $Dir_YumRepos\/epel.repo ]; then\n                        ls $Dir_YumRepos\/ | grep -Ev epel | xargs rm -rf\n                    else\n                        rm -rf $Dir_YumRepos\/*\n                    fi\n                    ;;\n                esac\n                ;;\n            \"${SYSTEM_CENTOS}\")\n                if [ -f $Dir_YumRepos\/epel.repo ]; then\n                    ls $Dir_YumRepos\/ | grep -Ev epel | xargs rm -rf\n                else\n                    rm -rf $Dir_YumRepos\/*\n                fi\n                ;;\n            \"${SYSTEM_CENTOS_STREAM}\")\n                case ${SYSTEM_VERSION_NUMBER:0:1} in\n                9)\n                    rm -rf $Dir_YumRepos\/centos.repo $Dir_YumRepos\/centos-addons.repo\n                    ;;\n                8)\n                    rm -rf $Dir_YumRepos\/CentOS-Stream-*\n                    ;;\n                esac\n                ;;\n            \"${SYSTEM_ROCKY}\")\n                case ${SYSTEM_VERSION_NUMBER:0:1} in\n                9)\n                    rm -rf $Dir_YumRepos\/rocky*\n                    ;;\n                8)\n                    rm -rf $Dir_YumRepos\/Rocky-*\n                    ;;\n                esac\n                ;;\n            \"${SYSTEM_ALMALINUX}\")\n                rm -rf $Dir_YumRepos\/almalinux*\n                ;;\n            \"${SYSTEM_OPENCLOUDOS}\")\n                rm -rf $Dir_YumRepos\/OpenCloudOS*\n                ;;\n            esac\n        fi\n        ;;\n    \"${SYSTEM_OPENCLOUDOS}\")\n        [ -d $Dir_YumRepos ] &amp;&amp; rm -rf $Dir_YumRepos\/OpenCloudOS*\n        ;;\n    \"${SYSTEM_OPENEULER}\")\n        [ -d $Dir_YumRepos ] &amp;&amp; rm -rf $Dir_YumRepos\/openEuler.repo\n        ;;\n    \"${SYSTEM_ANOLISOS}\")\n        [ -d $Dir_YumRepos ] &amp;&amp; rm -rf $Dir_YumRepos\/AnolisOS*\n        ;;\n    \"${SYSTEM_OPENSUSE}\")\n        [ -d $Dir_openSUSERepos ] &amp;&amp; ls $Dir_openSUSERepos\/ | grep -E \"^repo-\" | grep -Ev \"openh264\" | xargs rm -rf\n        ;;\n    \"${SYSTEM_ARCH}\")\n        [ -f $File_ArchLinuxMirrorList ] &amp;&amp; sed -i '1,$d' $File_ArchLinuxMirrorList\n        ;;\n    \"${SYSTEM_ALPINE}\")\n        [ -f $File_AlpineRepositories ] &amp;&amp; sed -i '1,$d' $File_AlpineRepositories\n        ;;\n    \"${SYSTEM_GENTOO}\")\n        [ -f $File_GentooReposConf ] &amp;&amp; sed -i '1,$d' $File_GentooReposConf\n        ;;\n    esac\n}\n\n## \u6362\u6e90\nfunction change_mirrors_main() {\n    ## \u6253\u5370\u4fee\u6539\u524d\u540e\u5dee\u5f02\n    function print_diff() {\n        ## \u5355\u4e00\u6587\u4ef6\u6bd4\u8f83\u6a21\u5f0f\n        function diff_file() {\n            local diff_file=$1\n            local origin_file=$2\n            if [[ -s $diff_file ]] &amp;&amp; [[ -s $origin_file ]]; then\n                if [[ \"$(cat \"${diff_file}\")\" != \"$(cat \"${origin_file}\")\" ]]; then\n                    echo -e \"\\n${BLUE}${diff_file}${PLAIN} -&gt; ${BLUE}${origin_file}${PLAIN}\"\n                    diff \"${diff_file}\" \"${origin_file}\" -d --color=always -I -B -E\n                fi\n            fi\n        }\n        ## \u76ee\u5f55\u6587\u4ef6\u6bd4\u8f83\u6a21\u5f0f\n        function diff_dir() {\n            local diff_dir=$1\n            local origin_dir=$2\n            for item in $(ls $diff_dir | xargs); do\n                diff_file \"${diff_dir}\/${item}\" \"${origin_dir}\/${item}\"\n            done\n        }\n\n        if [[ -x \/usr\/bin\/diff &amp;&amp; \"${BACKED_UP}\" == \"true\" ]]; then\n            case \"${SYSTEM_FACTIONS}\" in\n            \"${SYSTEM_DEBIAN}\")\n                if [[ \"${SYSTEM_JUDGMENT}\" != \"${SYSTEM_LINUX_MINT}\" ]]; then\n                    diff_file $File_DebianSourceListBackup $File_DebianSourceList\n                fi\n                # Armbian\n                if [ -f $File_ArmbianRelease ]; then\n                    diff_file $File_ArmbianSourceListBackup $File_ArmbianSourceList\n                fi\n                # Proxmox\n                if [ -f $File_ProxmoxVersion ]; then\n                    diff_file $File_ProxmoxSourceListBackup $File_ProxmoxSourceList\n                fi\n                # Linux Mint\n                if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_LINUX_MINT}\" ]]; then\n                    diff_file $File_LinuxMintSourceListBackup $File_LinuxMintSourceList\n                fi\n                ;;\n            \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n                diff_dir $Dir_YumReposBackup $Dir_YumRepos\n                ;;\n            \"${SYSTEM_OPENSUSE}\")\n                diff_dir $Dir_openSUSEReposBackup $Dir_openSUSERepos\n                ;;\n            \"${SYSTEM_ARCH}\")\n                diff_file $File_ArchLinuxMirrorListBackup $File_ArchLinuxMirrorList\n                ;;\n            \"${SYSTEM_ALPINE}\")\n                diff_file $File_AlpineRepositoriesBackup $File_AlpineRepositories\n                ;;\n            \"${SYSTEM_GENTOO}\")\n                diff_file $File_GentooMakeConfBackup $File_GentooMakeConf\n                diff_file $File_GentooReposConfBackup $File_GentooReposConf\n                ;;\n            esac\n        fi\n    }\n\n    ## \u8c03\u7528\u6362\u6e90\u51fd\u6570\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_DEBIAN}\")\n        change_mirrors_Debian\n        ;;\n    \"${SYSTEM_REDHAT}\")\n        change_mirrors_RedHat\n        ;;\n    \"${SYSTEM_OPENCLOUDOS}\")\n        change_mirrors_OpenCloudOS\n        ;;\n    \"${SYSTEM_OPENEULER}\")\n        change_mirrors_openEuler\n        ;;\n    \"${SYSTEM_ANOLISOS}\")\n        change_mirrors_AnolisOS\n        ;;\n    \"${SYSTEM_OPENSUSE}\")\n        change_mirrors_openSUSE\n        ;;\n    \"${SYSTEM_ARCH}\")\n        change_mirrors_ArchLinux\n        ;;\n    \"${SYSTEM_ALPINE}\")\n        change_mirrors_Alpine\n        ;;\n    \"${SYSTEM_GENTOO}\")\n        change_mirrors_Gentoo\n        ;;\n    esac\n    ## \u6bd4\u8f83\u5dee\u5f02\n    if [[ \"${PRINT_DIFF}\" == \"true\" ]]; then\n        print_diff\n    fi\n    ## \u66f4\u65b0\u8f6f\u4ef6\u6e90\n    echo -e \"\\n$WORKING \u5f00\u59cb${SYNC_MIRROR_TEXT}...\\n\"\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_DEBIAN}\")\n        apt-get update\n        ;;\n    \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n        local package_manager=\"$(get_package_manager)\"\n        $package_manager makecache\n        ;;\n    \"${SYSTEM_OPENSUSE}\")\n        zypper ref\n        ;;\n    \"${SYSTEM_ARCH}\")\n        pacman -Sy\n        ;;\n    \"${SYSTEM_ALPINE}\")\n        apk update -f\n        ;;\n    \"${SYSTEM_GENTOO}\")\n        emerge --sync --quiet\n        ;;\n    esac\n    if [ $? -eq 0 ]; then\n        echo -e \"\\n$SUCCESS \u8f6f\u4ef6\u6e90\u66f4\u6362\u5b8c\u6bd5\"\n    else\n        echo -e \"\\n$FAIL \u8f6f\u4ef6\u6e90\u66f4\u6362\u5b8c\u6bd5\uff0c\u4f46${SYNC_MIRROR_TEXT}\u5931\u8d25\\n\"\n        echo -e \"\u8bf7\u518d\u6b21\u6267\u884c\u811a\u672c\u5e76\u66f4\u6362\u76f8\u540c\u8f6f\u4ef6\u6e90\u540e\u8fdb\u884c\u5c1d\u8bd5\uff0c\u82e5\u4ecd\u7136${SYNC_MIRROR_TEXT}\u5931\u8d25\u90a3\u4e48\u53ef\u80fd\u7531\u4ee5\u4e0b\u539f\u56e0\u5bfc\u81f4\"\n        echo -e \"1. \u7f51\u7edc\u95ee\u9898\uff1a\u4f8b\u5982\u8fde\u63a5\u5f02\u5e38\u3001\u7531\u5730\u533a\u5f71\u54cd\u7684\u7f51\u7edc\u95f4\u6b47\u5f0f\u4e2d\u65ad\u7b49\"\n        echo -e \"2. \u8f6f\u4ef6\u6e90\u95ee\u9898\uff1a\u5efa\u8bae\u66f4\u6362\u5176\u5b83\u955c\u50cf\u7ad9\u8fdb\u884c\u5c1d\u8bd5\uff0c\u5c11\u6570\u60c5\u51b5\u4e0b\u8f6f\u4ef6\u6e90\u82e5\u5904\u4e8e\u540c\u6b65\u4e2d\u72b6\u6001\u5219\u53ef\u80fd\u4f1a\u51fa\u73b0\u6587\u4ef6\u540c\u6b65\u9519\u8bef\u95ee\u9898\"\n        echo -e \"\\n\u8f6f\u4ef6\u6e90\u5730\u5740\uff1a${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\\n\"\n        exit 1\n    fi\n}\n\n## \u5347\u7ea7\u8f6f\u4ef6\u5305\nfunction upgrade_software() {\n    function clean_cache() {\n        ## \u4ea4\u4e92\u786e\u8ba4\n        if [[ -z \"${CLEAN_CACHE}\" ]]; then\n            CLEAN_CACHE=\"false\"\n            local CHOICE\n            CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u662f\u5426\u6e05\u7406\u5df2\u4e0b\u8f7d\u7684\u8f6f\u4ef6\u5305\u7f13\u5b58? [Y\/n] ${PLAIN}\")\n            read -rp \"${CHOICE}\" INPUT\n            [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n            case \"${INPUT}\" in\n            [Yy] | [Yy][Ee][Ss])\n                CLEAN_CACHE=\"true\"\n                ;;\n            [Nn] | [Nn][Oo]) ;;\n            *)\n                echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u6e05\u7406\uff01\"\n                ;;\n            esac\n        fi\n        if [[ \"${CLEAN_CACHE}\" == \"false\" ]]; then\n            return\n        fi\n        ## \u8c03\u7528\u7cfb\u7edf\u547d\u4ee4\n        case \"${SYSTEM_FACTIONS}\" in\n        \"${SYSTEM_DEBIAN}\")\n            apt-get autoremove -y &gt;\/dev\/null 2&gt;&amp;1\n            apt-get clean &gt;\/dev\/null 2&gt;&amp;1\n            ;;\n        \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n            local package_manager=\"$(get_package_manager)\"\n            $package_manager autoremove -y &gt;\/dev\/null 2&gt;&amp;1\n            $package_manager clean packages -y &gt;\/dev\/null 2&gt;&amp;1\n            ;;\n        \"${SYSTEM_OPENSUSE}\")\n            rm -rf \/var\/cache\/zypp\/* &gt;\/dev\/null 2&gt;&amp;1\n            ;;\n        \"${SYSTEM_ALPINE}\")\n            rm -rf \/var\/cache\/apk\/* &gt;\/dev\/null 2&gt;&amp;1\n            ;;\n        \"${SYSTEM_GENTOO}\")\n            eclean-dist --deep &gt;\/dev\/null 2&gt;&amp;1\n            eclean-packages --deep &gt;\/dev\/null 2&gt;&amp;1\n            ;;\n        esac\n        echo -e \"\\n$COMPLETE \u6e05\u7406\u5b8c\u6bd5\"\n    }\n\n    ## \u8df3\u8fc7\u7279\u6b8a\u7cfb\u7edf\n    case \"${SYSTEM_JUDGMENT}\" in\n    \"${SYSTEM_ARCH}\")\n        return\n        ;;\n    esac\n\n    ## \u4ea4\u4e92\u786e\u8ba4\n    if [[ -z \"${UPGRADE_SOFTWARE}\" ]]; then\n        UPGRADE_SOFTWARE=\"false\"\n        local CHOICE\n        CHOICE=$(echo -e \"\\n${BOLD}\u2514\u2500 \u662f\u5426\u8df3\u8fc7\u66f4\u65b0\u8f6f\u4ef6\u5305? [Y\/n] ${PLAIN}\")\n        read -rp \"${CHOICE}\" INPUT\n        [[ -z \"${INPUT}\" ]] &amp;&amp; INPUT=Y\n        case \"${INPUT}\" in\n        [Yy] | [Yy][Ee][Ss]) ;;\n        [Nn] | [Nn][Oo])\n            UPGRADE_SOFTWARE=\"true\"\n            ;;\n        *)\n            echo -e \"\\n$WARN \u8f93\u5165\u9519\u8bef\uff0c\u9ed8\u8ba4\u4e0d\u66f4\u65b0\uff01\"\n            ;;\n        esac\n    fi\n    if [[ \"${UPGRADE_SOFTWARE}\" == \"false\" ]]; then\n        return\n    fi\n    echo -e ''\n    ## \u8c03\u7528\u7cfb\u7edf\u547d\u4ee4\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_DEBIAN}\")\n        apt-get upgrade -y\n        ;;\n    \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n        local package_manager=\"$(get_package_manager)\"\n        $package_manager update -y --skip-broken\n        ;;\n    \"${SYSTEM_OPENSUSE}\")\n        zypper update -y\n        ;;\n    \"${SYSTEM_ALPINE}\")\n        apk upgrade --no-cache\n        ;;\n    \"${SYSTEM_GENTOO}\")\n        emerge --update --deep --with-bdeps=y --ask=n @world\n        ;;\n    esac\n    ## \u6e05\u7406\u7f13\u5b58\n    clean_cache\n}\n\n##############################################################################\n\n## \u66f4\u6362\u57fa\u4e8e Debian \u7cfb Linux \u53d1\u884c\u7248\u7684\u8f6f\u4ef6\u6e90\nfunction change_mirrors_Debian() {\n    function gen_debian_source() {\n        echo \"deb ${1} ${2} ${3}\n# deb-src ${1} ${2} ${3}\ndeb ${1} ${2}-updates ${3}\n# deb-src ${1} ${2}-updates ${3}\ndeb ${1} ${2}-backports ${3}\n# deb-src ${1} ${2}-backports ${3}\"\n    }\n    function gen_debian_security_source() {\n        echo \"deb ${1} ${2}-security ${3}\n# deb-src ${1} ${2}-security ${3}\"\n    }\n    function gen_ubuntu_source() {\n        echo \"deb ${1} ${2} ${3}\n# deb-src ${1} ${2} ${3}\ndeb ${1} ${2}-updates ${3}\n# deb-src ${1} ${2}-updates ${3}\ndeb ${1} ${2}-backports ${3}\n# deb-src ${1} ${2}-backports ${3}\ndeb ${1} ${2}-security ${3}\n# deb-src ${1} ${2}-security ${3}\n\n## \u9884\u53d1\u5e03\u8f6f\u4ef6\u6e90\uff08\u4e0d\u5efa\u8bae\u542f\u7528\uff09\n# deb ${1} ${2}-proposed ${3}\n# deb-src ${1} ${2}-proposed ${3}\"\n    }\n\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        case \"${SYSTEM_JUDGMENT}\" in\n        \"${SYSTEM_DEBIAN}\")\n            SOURCE=\"deb.debian.org\"\n            ;;\n        \"${SYSTEM_UBUNTU}\" | \"${SYSTEM_ZORIN}\")\n            SOURCE=\"archive.ubuntu.com\"\n            ;;\n        \"${SYSTEM_KALI}\")\n            SOURCE=\"http.kali.org\"\n            ;;\n        \"${SYSTEM_DEEPIN}\")\n            SOURCE=\"community-packages.deepin.com\"\n            ;;\n        \"${SYSTEM_LINUX_MINT}\")\n            SOURCE=\"packages.linuxmint.com\"\n            ;;\n        esac\n    fi\n    local repository_sections # \u4ed3\u5e93\u533a\u57df\n    local tips=\"## \u9ed8\u8ba4\u7981\u7528\u6e90\u7801\u955c\u50cf\u4ee5\u63d0\u9ad8\u901f\u5ea6\uff0c\u5982\u9700\u542f\u7528\u8bf7\u81ea\u884c\u53d6\u6d88\u6ce8\u91ca\"\n    local base_url=\"${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\"\n    case \"${SYSTEM_JUDGMENT}\" in\n    \"${SYSTEM_DEBIAN}\")\n        case \"${SYSTEM_VERSION_NUMBER}\" in\n        8 | 9 | 10 | 11)\n            repository_sections=\"main contrib non-free\"\n            ;;\n        *)\n            repository_sections=\"main contrib non-free non-free-firmware\"\n            ;;\n        esac\n        if [[ \"${SYSTEM_VERSION_CODENAME}\" != \"sid\" ]]; then\n            echo \"${tips}\n$(gen_debian_source \"${base_url}\" \"${SYSTEM_VERSION_CODENAME}\" \"${repository_sections}\")\" &gt;&gt;$File_DebianSourceList\n            # \u5904\u7406 debian-security \u4ed3\u5e93\u6e90\n            base_url=\"${WEB_PROTOCOL}:\/\/${SOURCE_SECURITY:-\"${SOURCE}\"}\/${SOURCE_SECURITY_BRANCH:-\"${SOURCE_BRANCH}-security\"}\"\n            echo \"$(gen_debian_security_source \"${base_url}\" \"${SYSTEM_VERSION_CODENAME}\" \"${repository_sections}\")\" &gt;&gt;$File_DebianSourceList\n        else\n            echo \"deb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}\n# deb-src ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}\" &gt;&gt;$File_DebianSourceList\n        fi\n        ;;\n    \"${SYSTEM_UBUNTU}\" | \"${SYSTEM_ZORIN}\")\n        repository_sections=\"main restricted universe multiverse\"\n        echo \"${tips}\n$(gen_ubuntu_source \"${base_url}\" \"${SYSTEM_VERSION_CODENAME}\" \"${repository_sections}\")\" &gt;&gt;$File_DebianSourceList\n        ;;\n    \"${SYSTEM_KALI}\")\n        repository_sections=\"main contrib non-free non-free-firmware\"\n        echo \"${tips}\ndeb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}\n# deb-src ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}\" &gt;&gt;$File_DebianSourceList\n        ;;\n    \"${SYSTEM_DEEPIN}\")\n        repository_sections=\"apricot main contrib non-free\"\n        echo \"${tips}\ndeb ${base_url} ${repository_sections}\n# deb-src ${base_url} ${repository_sections}\" &gt;&gt;$File_DebianSourceList\n        ;;\n    \"${SYSTEM_LINUX_MINT}\")\n        ## \u4e13\u7528\u6e90\n        repository_sections=\"main upstream import backport\"\n        echo \"${tips}\ndeb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}\n\" &gt;&gt;$File_LinuxMintSourceList\n        ## \u5e95\u5c42\u7cfb\u7edf\u8f6f\u4ef6\u6e90\n        local base_system_source_branch base_system_codename\n        if [[ \"${SYSTEM_VERSION_NUMBER}\" == 6 ]]; then\n            # Debian \u7248\uff08LMDE\uff09\n            base_system_source_branch=\"debian\"\n            base_system_codename=\"bookworm\"\n            repository_sections=\"main contrib non-free non-free-firmware\"\n            base_url=\"${WEB_PROTOCOL}:\/\/${SOURCE}\/${base_system_source_branch}\"\n            echo \"$(gen_debian_source \"${base_url}\" \"${base_system_codename}\" \"${repository_sections}\")\" &gt;&gt;$File_LinuxMintSourceList\n            # \u5904\u7406 debian-security \u4ed3\u5e93\u6e90\n            base_url=\"${WEB_PROTOCOL}:\/\/${SOURCE_SECURITY:-\"${SOURCE}\"}\/${SOURCE_SECURITY_BRANCH:-\"${base_system_source_branch}-security\"}\"\n            echo \"$(gen_debian_security_source \"${base_url}\" \"${base_system_codename}\" \"${repository_sections}\")\" &gt;&gt;$File_LinuxMintSourceList\n        else\n            # Ubuntu \u7248\n            if [[ \"${DEVICE_ARCH}\" == \"x86_64\" ]] || [[ \"${DEVICE_ARCH}\" == *i?86* ]]; then\n                base_system_source_branch=\"ubuntu\"\n            else\n                base_system_source_branch=\"ubuntu-ports\"\n            fi\n            case \"${SYSTEM_VERSION_NUMBER:0:2}\" in\n            21)\n                base_system_codename=\"jammy\"\n                ;;\n            20)\n                base_system_codename=\"focal\"\n                ;;\n            19)\n                base_system_codename=\"bionic\"\n                ;;\n            esac\n            repository_sections=\"main restricted universe multiverse\"\n            base_url=\"${WEB_PROTOCOL}:\/\/${SOURCE}\/${base_system_source_branch}\"\n            echo \"$(gen_ubuntu_source \"${base_url}\" \"${base_system_codename}\" \"${repository_sections}\")\" &gt;&gt;$File_LinuxMintSourceList\n        fi\n        ;;\n    esac\n    ## \u5904\u7406\u5176\u5b83\u884d\u751f\u64cd\u4f5c\u7cfb\u7edf\u7684\u4e13\u7528\u6e90\n    # Armbian\n    if [ -f $File_ArmbianRelease ]; then\n        echo \"deb [signed-by=\/usr\/share\/keyrings\/armbian.gpg] ${WEB_PROTOCOL}:\/\/${SOURCE}\/armbian ${SYSTEM_VERSION_CODENAME} main ${SYSTEM_VERSION_CODENAME}-utils ${SYSTEM_VERSION_CODENAME}-desktop\" &gt;&gt;$File_ArmbianSourceList\n    fi\n    # Proxmox\n    if [ -f $File_ProxmoxVersion ]; then\n        echo \"deb ${WEB_PROTOCOL}:\/\/${SOURCE}\/proxmox\/debian\/pve ${SYSTEM_VERSION_CODENAME} pve-no-subscription\n# deb ${WEB_PROTOCOL}:\/\/${SOURCE}\/proxmox\/debian\/pbs ${SYSTEM_VERSION_CODENAME} pbs-no-subscription\n# deb ${WEB_PROTOCOL}:\/\/${SOURCE}\/proxmox\/debian\/pbs-client ${SYSTEM_VERSION_CODENAME} pbs-client-no-subscription\n# deb ${WEB_PROTOCOL}:\/\/${SOURCE}\/proxmox\/debian\/pmg ${SYSTEM_VERSION_CODENAME} pmg-no-subscription\" &gt;&gt;$File_ProxmoxSourceList\n    fi\n}\n\n## \u66f4\u6362\u57fa\u4e8e RedHat \u7cfb Linux \u53d1\u884c\u7248\u7684\u8f6f\u4ef6\u6e90\nfunction change_mirrors_RedHat() {\n    ## \u4ec5 EPEL \u6a21\u5f0f\n    if [[ \"${ONLY_EPEL}\" == \"true\" ]]; then\n        change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n        return\n    fi\n    ## \u751f\u6210\u5b98\u65b9 repo \u6e90\u6587\u4ef6\n    case \"${SYSTEM_JUDGMENT}\" in\n    \"${SYSTEM_RHEL}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        9)\n            gen_repo_files_CentOSStream \"${SYSTEM_VERSION_NUMBER:0:1}\"\n            ;;\n        *)\n            gen_repo_files_CentOS \"${SYSTEM_VERSION_NUMBER:0:1}\"\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_CENTOS}\")\n        gen_repo_files_CentOS \"${SYSTEM_VERSION_NUMBER:0:1}\"\n        ;;\n    \"${SYSTEM_CENTOS_STREAM}\")\n        gen_repo_files_CentOSStream \"${SYSTEM_VERSION_NUMBER:0:1}\"\n        ;;\n    \"${SYSTEM_ROCKY}\")\n        gen_repo_files_RockyLinux \"${SYSTEM_VERSION_NUMBER:0:1}\"\n        ;;\n    \"${SYSTEM_ALMALINUX}\")\n        gen_repo_files_AlmaLinux \"${SYSTEM_VERSION_NUMBER:0:1}\"\n        ;;\n    \"${SYSTEM_FEDORA}\")\n        gen_repo_files_Fedora \"${SYSTEM_VERSION_NUMBER}\"\n        ;;\n    \"${SYSTEM_OPENCLOUDOS}\")\n        gen_repo_files_OpenCloudOS \"${SYSTEM_VERSION_NUMBER:0:1}\"\n        ;;\n    esac\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n        return\n    fi\n\n    ## \u4fee\u6539\u6e90\n    cd $Dir_YumRepos\n    case \"${SYSTEM_JUDGMENT}\" in\n    \"${SYSTEM_RHEL}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        9)\n            sed -e \"s|^#baseurl=https|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|^metalink=|#metalink=|g\" \\\n                -e \"s|mirror.stream.centos.org|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                centos.repo \\\n                centos-addons.repo\n            # \u7981\u7528 GPG \u7b7e\u540d\u68c0\u67e5\n            sed -e \"s|gpgcheck=1|gpgcheck=0|g\" \\\n                -i \\\n                centos.repo \\\n                centos-addons.repo\n            ;;\n        *)\n            sed -i \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" CentOS-*\n            sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-*\n            case ${SYSTEM_VERSION_NUMBER:0:1} in\n            8)\n                sed -i \"s|mirror.centos.org\/\\$contentdir|mirror.centos.org\/centos-vault|g\" CentOS-*\n                sed -i \"s\/\\$releasever\/8.5.2111\/g\" CentOS-*\n                # \u5355\u72ec\u5904\u7406 CentOS-Linux-Sources.repo\n                sed -i \"s|vault.centos.org\/\\$contentdir|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"centos-vault\"}|g\" CentOS-Linux-Sources.repo\n                ;;\n            7)\n                sed -i \"s|mirror.centos.org\/\\$contentdir|mirror.centos.org\/${SOURCE_BRANCH}|g\" CentOS-*\n                sed -i \"s\/\\$releasever\/7\/g\" CentOS-*\n                # \u5355\u72ec\u5904\u7406 CentOS-Sources.repo\n                sed -i \"s|vault.centos.org\/centos|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"${SOURCE_BRANCH}\"}|g\" CentOS-Sources.repo\n                ;;\n            esac\n            sed -i \"s|mirror.centos.org|${SOURCE}|g\" CentOS-*\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_CENTOS}\")\n        sed -i \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" CentOS-*\n        sed -i 's|^mirrorlist=|#mirrorlist=|g' CentOS-*\n        ## CentOS 7\/8 \u64cd\u4f5c\u7cfb\u7edf\u7248\u672c\u7ed3\u675f\u4e86\u751f\u547d\u5468\u671f\uff08EOL\uff09\uff0cLinux \u793e\u533a\u5df2\u4e0d\u518d\u7ef4\u62a4\u8be5\u64cd\u4f5c\u7cfb\u7edf\u7248\u672c\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        8)\n            # \u6700\u7ec8\u7248\u672c\u4e3a 8.5.2011\uff0c\u4ece 2022-02 \u5f00\u59cb\u5207\u6362\u81f3 centos-vault \u5206\u652f\n            sed -i \"s|mirror.centos.org\/\\$contentdir|mirror.centos.org\/${SOURCE_BRANCH:-\"centos-vault\"}|g\" CentOS-*\n            sed -i \"s\/\\$releasever\/8.5.2111\/g\" CentOS-*\n            sed -i \"s|vault.centos.org\/\\$contentdir|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"centos-vault\"}|g\" CentOS-Linux-Sources.repo # \u5355\u72ec\u5904\u7406 CentOS-Linux-Sources.repo\n            ;;\n        7)\n            # \u6700\u7ec8\u7248\u672c\u4e3a 7.9.2009\uff0c\u4ece 2024-07 \u5f00\u59cb\u5207\u6362\u81f3 centos-vault \u5206\u652f\n            sed -i \"s|mirror.centos.org\/centos|mirror.centos.org\/${SOURCE_BRANCH:-\"centos-vault\"}|g\" CentOS-*\n            sed -i \"s\/\\$releasever\/7.9.2009\/g\" CentOS-*\n            sed -i \"s|vault.centos.org\/centos|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"centos-vault\"}|g\" CentOS-Sources.repo # \u5355\u72ec\u5904\u7406 CentOS-Sources.repo\n            ;;\n        esac\n        sed -i \"s|mirror.centos.org|${SOURCE}|g\" CentOS-*\n        ;;\n    \"${SYSTEM_CENTOS_STREAM}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        9)\n            sed -e \"s|^#baseurl=https|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|^metalink=|#metalink=|g\" \\\n                -e \"s|mirror.stream.centos.org|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                centos.repo \\\n                centos-addons.repo\n            ;;\n        8)\n            sed -i \"s|vault.centos.org\/\\$contentdir|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"${SOURCE_BRANCH}\"}|g\" CentOS-Stream-Sources.repo # \u5355\u72ec\u5904\u7406 CentOS-Stream-Sources.repo\n            sed -e \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|^mirrorlist=|#mirrorlist=|g\" \\\n                -e \"s|mirror.centos.org\/\\$contentdir|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                CentOS-Stream-*\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_ROCKY}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        9)\n            sed -e \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|^mirrorlist=|#mirrorlist=|g\" \\\n                -e \"s|dl.rockylinux.org\/\\$contentdir|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                rocky.repo \\\n                rocky-addons.repo \\\n                rocky-devel.repo \\\n                rocky-extras.repo\n            ;;\n        8)\n            sed -e \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|^mirrorlist=|#mirrorlist=|g\" \\\n                -e \"s|dl.rockylinux.org\/\\$contentdir|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                Rocky-*\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_ALMALINUX}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        9)\n            sed -e \"s|^# baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|^mirrorlist=|#mirrorlist=|g\" \\\n                -e \"s|repo.almalinux.org\/vault|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"almalinux-vault\"}|g\" \\\n                -e \"s|repo.almalinux.org\/almalinux|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                almalinux-*\n            ;;\n        8)\n            sed -e \"s|^mirrorlist=|#mirrorlist=|g\" \\\n                -e \"s|^# baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|repo.almalinux.org\/vault|${SOURCE_VAULT:-\"${SOURCE}\"}\/${SOURCE_VAULT_BRANCH:-\"almalinux-vault\"}|g\" \\\n                -e \"s|repo.almalinux.org\/almalinux|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                almalinux-ha.repo \\\n                almalinux-nfv.repo \\\n                almalinux-plus.repo \\\n                almalinux-powertools.repo \\\n                almalinux-resilientstorage.repo \\\n                almalinux-rt.repo \\\n                almalinux-sap.repo \\\n                almalinux-saphana.repo \\\n                almalinux.repo\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_FEDORA}\")\n        # \u81ea Fedora 39 \u8d77\u4e0d\u518d\u4f7f\u7528 modular \u4ed3\u5e93\n        local fedora_repo_files\n        if [[ \"${SYSTEM_VERSION_NUMBER}\" -lt 39 ]]; then\n            fedora_repo_files=\"fedora.repo fedora-updates.repo fedora-updates-testing.repo fedora-modular.repo fedora-updates-modular.repo fedora-updates-testing-modular.repo\"\n        else\n            fedora_repo_files=\"fedora.repo fedora-updates.repo fedora-updates-testing.repo\"\n        fi\n        sed -e \"s|^metalink=|#metalink=|g\" \\\n            -e \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n            -e \"s|download.example\/pub\/fedora\/linux|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n            -i \\\n            $fedora_repo_files\n        ;;\n    \"${SYSTEM_OPENCLOUDOS}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        8)\n            sed -e \"s|^baseurl=https|baseurl=${WEB_PROTOCOL}|g\" \\\n                -e \"s|mirrors.opencloudos.tech\/opencloudos|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                -i \\\n                OpenCloudOS-Debuginfo.repo \\\n                OpenCloudOS.repo \\\n                OpenCloudOS-Sources.repo\n            ;;\n        esac\n        ;;\n    esac\n\n    change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n}\n\n## \u66f4\u6362 OpenCloudOS \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_OpenCloudOS() {\n    ## \u751f\u6210\u5b98\u65b9 repo \u6e90\u6587\u4ef6\n    gen_repo_files_OpenCloudOS \"${SYSTEM_VERSION_NUMBER:0:1}\"\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n        return\n    fi\n\n    ## \u4fee\u6539\u6e90\n    cd $Dir_YumRepos\n    case ${SYSTEM_VERSION_NUMBER:0:1} in\n    9)\n        sed -e \"s|^baseurl=https|baseurl=${WEB_PROTOCOL}|g\" \\\n            -e \"s|mirrors.opencloudos.tech\/opencloudos|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n            -i \\\n            OpenCloudOS.repo\n        ;;\n    esac\n\n    change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n}\n\n## \u66f4\u6362 openEuler \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_openEuler() {\n    ## \u751f\u6210\u5b98\u65b9 repo \u6e90\u6587\u4ef6\n    gen_repo_files_openEuler\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n        return\n    fi\n\n    ## \u4fee\u6539\u6e90\n    cd $Dir_YumRepos\n    local version_name=\"$(cat $File_LinuxRelease | grep -E \"^VERSION=\" | awk -F '=' '{print$2}' | sed \"s\/[\\'\\\"]\/\/g; s\/[()]\/ \/g; s\/  \/ \/g; s\/^ \/\/g; s\/ $\/\/g; s\/ \/-\/g; s\/_\/-\/g\")\"\n    sed -e \"s|^baseurl=http|baseurl=${WEB_PROTOCOL}|g\" \\\n        -e \"s|repo.openeuler.org|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n        -e \"s|openEuler-version|openEuler-${version_name}|g\" \\\n        -i \\\n        openEuler.repo\n\n    change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n}\n\n## \u66f4\u6362 Anolis OS \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_AnolisOS() {\n    ## \u751f\u6210\u5b98\u65b9 repo \u6e90\u6587\u4ef6\n    gen_repo_files_AnolisOS \"${SYSTEM_VERSION_NUMBER}\"\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n        return\n    fi\n\n    ## \u4fee\u6539\u6e90\n    cd $Dir_YumRepos\n    case ${SYSTEM_VERSION_NUMBER:0:1} in\n    23)\n        sed -e \"s|https:\/\/mirrors.openanolis.cn\/anolis|${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n            -i \\\n            AnolisOS-Debuginfo.repo \\\n            AnolisOS.repo \\\n            AnolisOS-Source.repo\n        ;;\n    esac\n\n    change_mirrors_or_install_EPEL # EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\n}\n\n## \u66f4\u6362 openSUSE \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_openSUSE() {\n    ## \u751f\u6210\u5b98\u65b9 repo \u6e90\u6587\u4ef6\n    case \"${SYSTEM_ID}\" in\n    \"opensuse-leap\")\n        gen_repo_files_openSUSE \"leap\" \"${SYSTEM_VERSION_NUMBER}\"\n        ;;\n    \"opensuse-tumbleweed\")\n        gen_repo_files_openSUSE \"tumbleweed\"\n        ;;\n    esac\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        return\n    fi\n\n    ## \u4fee\u6539\u6e90\n    cd $Dir_openSUSERepos\n    # \u66f4\u6362\u8f6f\u4ef6\u6e90\n    sed -i \"s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g\" repo-*\n    case \"${SYSTEM_ID}\" in\n    opensuse-leap)\n        case \"${SYSTEM_VERSION_NUMBER}\" in\n        15.[0-2])\n            sed -i \"s|download.opensuse.org|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                repo-debug-non-oss.repo \\\n                repo-debug.repo \\\n                repo-debug-update-non-oss.repo \\\n                repo-debug-update.repo \\\n                repo-non-oss.repo \\\n                repo-oss.repo \\\n                repo-source-non-oss.repo \\\n                repo-source.repo \\\n                repo-update-non-oss.repo \\\n                repo-update.repo\n            ;;\n        *)\n            sed -i \"s|download.opensuse.org|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n                repo-backports-debug-update.repo \\\n                repo-backports-update.repo \\\n                repo-debug-non-oss.repo \\\n                repo-debug.repo \\\n                repo-debug-update-non-oss.repo \\\n                repo-debug-update.repo \\\n                repo-non-oss.repo \\\n                repo-oss.repo \\\n                repo-sle-debug-update.repo \\\n                repo-sle-update.repo \\\n                repo-source.repo \\\n                repo-update-non-oss.repo \\\n                repo-update.repo\n            ;;\n        esac\n        ;;\n    opensuse-tumbleweed)\n        sed -i \"s|download.opensuse.org|${SOURCE}\/${SOURCE_BRANCH}|g\" \\\n            repo-debug.repo \\\n            repo-non-oss.repo \\\n            repo-openh264.repo \\\n            repo-oss.repo \\\n            repo-source.repo \\\n            repo-update.repo\n        ;;\n    esac\n}\n\n## \u66f4\u6362 Arch Linux \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_ArchLinux() {\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        SOURCE=\"mirrors.aliyun.com\"\n        echo -e \"\\n${TIP} \u7531\u4e8e Arch Linux \u65e0\u5b98\u65b9\u6e90\u56e0\u6b64\u5df2\u5207\u6362\u81f3\u963f\u91cc\u6e90\\n\"\n    fi\n    ## \u4fee\u6539\u6e90\n    case \"${SOURCE_BRANCH}\" in\n    \"archlinuxarm\")\n        echo \"Server = ${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\/\\$arch\/\\$repo\" &gt;&gt;$File_ArchLinuxMirrorList\n        ;;\n    \"archlinuxcn\")\n        echo \"Server = ${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\/\\$arch\" &gt;&gt;$File_ArchLinuxMirrorList\n        ;;\n    *)\n        echo \"Server = ${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\/\\$repo\/os\/\\$arch\" &gt;&gt;$File_ArchLinuxMirrorList\n        ;;\n    esac\n}\n\n## \u66f4\u6362 Alpine Linux \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_Alpine() {\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        SOURCE=\"dl-cdn.alpinelinux.org\"\n    fi\n    local version_name\n    echo \"${SYSTEM_PRETTY_NAME}\" | grep \" edge\" -q\n    if [ $? -eq 0 ]; then\n        version_name=\"edge\"\n    else\n        version_name=\"v${SYSTEM_VERSION_NUMBER%.*}\"\n    fi\n    ## \u4fee\u6539\u6e90\n    echo \"${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\/${version_name}\/main\n${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\/${version_name}\/community\" &gt;&gt;$File_AlpineRepositories\n}\n\n## \u66f4\u6362 Gentoo \u53d1\u884c\u7248\u8f6f\u4ef6\u6e90\nfunction change_mirrors_Gentoo() {\n    ## \u4f7f\u7528\u5b98\u65b9\u6e90\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        grep -Eq \"^GENTOO_MIRRORS=\" $File_GentooMakeConf\n        if [ $? -eq 0 ]; then\n            sed -i \"\/^GENTOO_MIRRORS=\/d\" $File_GentooMakeConf\n        fi\n        [ -f $File_GentooReposConf ] &amp;&amp; rm -rf $File_GentooReposConf\n        return\n    fi\n    ## \u4fee\u6539\u6e90\n    grep -Eq \"^GENTOO_MIRRORS=\" $File_GentooMakeConf\n    if [ $? -eq 0 ]; then\n        sed -i \"s|^GENTOO_MIRRORS=.*|GENTOO_MIRRORS=\\\"${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\\\"|g\" $File_GentooMakeConf\n    else\n        echo -e \"\\nGENTOO_MIRRORS=\\\"${WEB_PROTOCOL}:\/\/${SOURCE}\/${SOURCE_BRANCH}\\\"\" &gt;&gt;$File_GentooMakeConf\n    fi\n    echo \"[DEFAULT]\nmain-repo = gentoo\n\n[gentoo]\nlocation = \/usr\/portage\nsync-type = rsync\nsync-uri = rsync:\/\/${SOURCE_PORTAGE:-\"${SOURCE}\"}\/${SOURCE_PORTAGE_BRANCH:-\"gentoo-portage\"}\nauto-sync = yes\" &gt;$File_GentooReposConf\n}\n\n## EPEL (Extra Packages for Enterprise Linux) \u9644\u52a0\u8f6f\u4ef6\u5305 - \u5b89\u88c5\u6216\u66f4\u6362\u8f6f\u4ef6\u6e90\nfunction change_mirrors_or_install_EPEL() {\n    if [[ \"${INSTALL_EPEL}\" != \"true\" ]]; then\n        return\n    fi\n    ## \u786e\u5b9a\u5b89\u88c5\u7248\u672c\uff08\u4e0d\u652f\u6301\u5b89\u88c5\u7684\u7cfb\u7edf\u76f4\u63a5\u8df3\u51fa\uff09\n    local target_version\n    case \"${SYSTEM_FACTIONS}\" in\n    \"${SYSTEM_REDHAT}\" | \"${SYSTEM_OPENCLOUDOS}\")\n        if [[ \"${SYSTEM_JUDGMENT}\" == \"${SYSTEM_FEDORA}\" ]]; then\n            return\n        else\n            target_version=\"${SYSTEM_VERSION_NUMBER:0:1}\"\n        fi\n        ;;\n    *)\n        return\n        ;;\n    esac\n    ## \u8df3\u8fc7\u8f83\u65e7\u7684 EOF \u7248\u672c\uff08epel 7 \u5df2\u88ab\u5b98\u65b9\u79fb\u52a8\u81f3 archive \u4ed3\u5e93\uff0c\u76ee\u524d\u6ca1\u6709\u591a\u5c11\u955c\u50cf\u7ad9\u540c\u6b65\uff0c\u5df2\u65e0\u9002\u914d\u7684\u5fc5\u8981\uff09\n    if [[ \"${target_version}\" == \"7\" ]]; then\n        return\n    fi\n    ## \u5b89\u88c5 EPEL \u8f6f\u4ef6\u5305\n    if [ \"${VERIFICATION_EPEL}\" -ne 0 ]; then\n        echo -e \"\\n${WORKING} \u5b89\u88c5 epel-release \u8f6f\u4ef6\u5305...\\n\"\n        local package_manager=\"$(get_package_manager)\"\n        $package_manager install -y https:\/\/mirrors.cloud.tencent.com\/epel\/epel-release-latest-${target_version}.noarch.rpm\n        rm -rf $Dir_YumRepos\/epel*\n    fi\n    ## \u5220\u9664\u539f\u6709 repo \u6e90\u6587\u4ef6\n    [ \"${VERIFICATION_EPELFILES}\" -eq 0 ] &amp;&amp; rm -rf $Dir_YumRepos\/epel*\n    [ \"${VERIFICATION_EPELBACKUPFILES}\" -eq 0 ] &amp;&amp; rm -rf $Dir_YumReposBackup\/epel*\n    ## \u751f\u6210 repo \u6e90\u6587\u4ef6\n    gen_repo_files_EPEL\n    if [[ \"${USE_OFFICIAL_SOURCE}\" == \"true\" ]]; then\n        return\n    fi\n    ## \u4fee\u6539\u6e90\n    sed -e \"s|^#baseurl=http\\(s\\)\\?|baseurl=${WEB_PROTOCOL}|g\" \\\n        -e \"s|^metalink=|#metalink=|g\" \\\n        -e \"s|download.example\/pub\/epel|${SOURCE_EPEL:-\"${SOURCE}\"}\/${SOURCE_EPEL_BRANCH:-\"epel\"}|g\" \\\n        -e \"s|download.fedoraproject.org\/pub\/epel|${SOURCE_EPEL:-\"${SOURCE}\"}\/${SOURCE_EPEL_BRANCH:-\"epel\"}|g\" \\\n        -i \\\n        $Dir_YumRepos\/epel*\n}\n\n## \u9009\u62e9\u7cfb\u7edf\u5305\u7ba1\u7406\u5668\nfunction get_package_manager() {\n    local command=\"yum\"\n    case \"${SYSTEM_JUDGMENT}\" in\n    \"${SYSTEM_CENTOS_STREAM}\" | \"${SYSTEM_ROCKY}\" | \"${SYSTEM_ALMALINUX}\" | \"${SYSTEM_RHEL}\")\n        case ${SYSTEM_VERSION_NUMBER:0:1} in\n        9)\n            command=\"dnf\"\n            ;;\n        esac\n        ;;\n    \"${SYSTEM_FEDORA}\" | \"${SYSTEM_OPENCLOUDOS}\" | \"${SYSTEM_OPENEULER}\" | \"${SYSTEM_ANOLISOS}\")\n        command=\"dnf\"\n        ;;\n    esac\n    echo \"${command}\"\n}\n\n##############################################################################\n\n## \u751f\u6210 CentOS \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_CentOS() {\n    case \"$1\" in\n    8)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-AppStream.repo\n# CentOS-Linux-AppStream.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[appstream]\nname=CentOS Linux $releasever - AppStream\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=AppStream&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/AppStream\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-BaseOS.repo\n# CentOS-Linux-BaseOS.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[baseos]\nname=CentOS Linux $releasever - BaseOS\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=BaseOS&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/BaseOS\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-ContinuousRelease.repo\n# CentOS-Linux-ContinuousRelease.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n#\n# The Continuous Release (CR) repository contains packages for the next minor\n# release of CentOS Linux.  This repository only has content in the time period\n# between an upstream release and the official CentOS Linux release.  These\n# packages have not been fully tested yet and should be considered beta\n# quality.  They are made available for people willing to test and provide\n# feedback for the next release.\n\n[cr]\nname=CentOS Linux $releasever - ContinuousRelease\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=cr&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/cr\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-Debuginfo.repo\n# CentOS-Linux-Debuginfo.repo\n#\n# All debug packages are merged into a single repo, split by basearch, and are\n# not signed.\n\n[debuginfo]\nname=CentOS Linux $releasever - Debuginfo\nbaseurl=http:\/\/debuginfo.centos.org\/$releasever\/$basearch\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-Devel.repo\n# CentOS-Linux-Devel.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[devel]\nname=CentOS Linux $releasever - Devel WARNING! FOR BUILDROOT USE ONLY!\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=Devel&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/Devel\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-Extras.repo\n# CentOS-Linux-Extras.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[extras]\nname=CentOS Linux $releasever - Extras\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=extras&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/extras\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-FastTrack.repo\n# CentOS-Linux-FastTrack.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[fasttrack]\nname=CentOS Linux $releasever - FastTrack\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=fasttrack&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/fasttrack\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-HighAvailability.repo\n# CentOS-Linux-HighAvailability.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[ha]\nname=CentOS Linux $releasever - HighAvailability\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=HighAvailability&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/HighAvailability\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-Media.repo\n# CentOS-Linux-Media.repo\n#\n# You can use this repo to install items directly off the installation media.\n# Verify your mount point matches one of the below file:\/\/ paths.\n\n[media-baseos]\nname=CentOS Linux $releasever - Media - BaseOS\nbaseurl=file:\/\/\/media\/CentOS\/BaseOS\n        file:\/\/\/media\/cdrom\/BaseOS\n        file:\/\/\/media\/cdrecorder\/BaseOS\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[media-appstream]\nname=CentOS Linux $releasever - Media - AppStream\nbaseurl=file:\/\/\/media\/CentOS\/AppStream\n        file:\/\/\/media\/cdrom\/AppStream\n        file:\/\/\/media\/cdrecorder\/AppStream\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-Plus.repo\n# CentOS-Linux-Plus.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[plus]\nname=CentOS Linux $releasever - Plus\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=centosplus&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/centosplus\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-PowerTools.repo\n# CentOS-Linux-PowerTools.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[powertools]\nname=CentOS Linux $releasever - PowerTools\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=PowerTools&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$releasever\/PowerTools\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Linux-Sources.repo\n# CentOS-Linux-Sources.repo\n\n\n[baseos-source]\nname=CentOS Linux $releasever - BaseOS - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$releasever\/BaseOS\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[appstream-source]\nname=CentOS Linux $releasever - AppStream - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$releasever\/AppStream\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[extras-source]\nname=CentOS Linux $releasever - Extras - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$releasever\/extras\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[plus-source]\nname=CentOS Linux $releasever - Plus - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$releasever\/centosplus\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        ;;\n    7)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Base.repo\n# CentOS-Base.repo\n#\n# The mirror system uses the connecting IP address of the client and the\n# update status of each mirror to pick mirrors that are updated to and\n# geographically close to the client.  You should use this for CentOS updates\n# unless you are manually picking other mirrors.\n#\n# If the mirrorlist= does not work for you, as a fall back you can try the \n# remarked out baseurl= line instead.\n#\n#\n\n[base]\nname=CentOS-$releasever - Base\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=os&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\/os\/$basearch\/\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\n\n#released updates \n[updates]\nname=CentOS-$releasever - Updates\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=updates&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\/updates\/$basearch\/\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\n\n#additional packages that may be useful\n[extras]\nname=CentOS-$releasever - Extras\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=extras&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\/extras\/$basearch\/\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\n\n#additional packages that extend functionality of existing packages\n[centosplus]\nname=CentOS-$releasever - Plus\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=centosplus&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\/centosplus\/$basearch\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-CR.repo\n# CentOS-CR.repo\n#\n# The Continuous Release ( CR )  repository contains rpms that are due in the next\n# release for a specific CentOS Version ( eg. next release in CentOS-7 ); these rpms\n# are far less tested, with no integration checking or update path testing having\n# taken place. They are still built from the upstream sources, but might not map \n# to an exact upstream distro release.\n#\n# These packages are made available soon after they are built, for people willing \n# to test their environments, provide feedback on content for the next release, and\n# for people looking for early-access to next release content.\n#\n# The CR repo is shipped in a disabled state by default; its important that users \n# understand the implications of turning this on. \n#\n# NOTE: We do not use a mirrorlist for the CR repos, to ensure content is available\n#       to everyone as soon as possible, and not need to wait for the external\n#       mirror network to seed first. However, many local mirrors will carry CR repos\n#       and if desired you can use one of these local mirrors by editing the baseurl\n#       line in the repo config below.\n#\n\n[cr]\nname=CentOS-$releasever - cr\nbaseurl=http:\/\/mirror.centos.org\/centos\/$releasever\/cr\/$basearch\/\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\nenabled=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Debuginfo.repo\n# CentOS-Debug.repo\n#\n# The mirror system uses the connecting IP address of the client and the\n# update status of each mirror to pick mirrors that are updated to and\n# geographically close to the client.  You should use this for CentOS updates\n# unless you are manually picking other mirrors.\n#\n\n# All debug packages from all the various CentOS-7 releases\n# are merged into a single repo, split by BaseArch\n#\n# Note: packages in the debuginfo repo are currently not signed\n#\n\n[base-debuginfo]\nname=CentOS-7 - Debuginfo\nbaseurl=http:\/\/debuginfo.centos.org\/7\/$basearch\/\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-Debug-7\nenabled=0\n#\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-fasttrack.repo\n[fasttrack]\nname=CentOS-7 - fasttrack\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$releasever&amp;arch=$basearch&amp;repo=fasttrack&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/centos\/$releasever\/fasttrack\/$basearch\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Media.repo\n# CentOS-Media.repo\n#\n#  This repo can be used with mounted DVD media, verify the mount point for\n#  CentOS-7.  You can use this repo and yum to install items directly off the\n#  DVD ISO that we release.\n#\n# To use this repo, put in your DVD and use it with the other repos too:\n#  yum --enablerepo=c7-media [command]\n#  \n# or for ONLY the media repo, do this:\n#\n#  yum --disablerepo=\\* --enablerepo=c7-media [command]\n\n[c7-media]\nname=CentOS-$releasever - Media\nbaseurl=file:\/\/\/media\/CentOS\/\n        file:\/\/\/media\/cdrom\/\n        file:\/\/\/media\/cdrecorder\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Sources.repo\n# CentOS-Sources.repo\n#\n# The mirror system uses the connecting IP address of the client and the\n# update status of each mirror to pick mirrors that are updated to and\n# geographically close to the client.  You should use this for CentOS updates\n# unless you are manually picking other mirrors.\n#\n# If the mirrorlist= does not work for you, as a fall back you can try the \n# remarked out baseurl= line instead.\n#\n#\n\n[base-source]\nname=CentOS-$releasever - Base Sources\nbaseurl=http:\/\/vault.centos.org\/centos\/$releasever\/os\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\n\n#released updates \n[updates-source]\nname=CentOS-$releasever - Updates Sources\nbaseurl=http:\/\/vault.centos.org\/centos\/$releasever\/updates\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\n\n#additional packages that may be useful\n[extras-source]\nname=CentOS-$releasever - Extras Sources\nbaseurl=http:\/\/vault.centos.org\/centos\/$releasever\/extras\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\n\n#additional packages that extend functionality of existing packages\n[centosplus-source]\nname=CentOS-$releasever - Plus Sources\nbaseurl=http:\/\/vault.centos.org\/centos\/$releasever\/centosplus\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 CentOS Stream \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_CentOSStream() {\n    case \"$1\" in\n    9)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/centos.repo\n[baseos]\nname=CentOS Stream $releasever - BaseOS\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/BaseOS\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-baseos-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=1\n\n[baseos-debug]\nname=CentOS Stream $releasever - BaseOS - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-baseos-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[baseos-source]\nname=CentOS Stream $releasever - BaseOS - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-baseos-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[appstream]\nname=CentOS Stream $releasever - AppStream\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/AppStream\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-appstream-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=1\n\n[appstream-debug]\nname=CentOS Stream $releasever - AppStream - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-appstream-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[appstream-source]\nname=CentOS Stream $releasever - AppStream - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-appstream-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[crb]\nname=CentOS Stream $releasever - CRB\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/CRB\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-crb-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=0\n\n[crb-debug]\nname=CentOS Stream $releasever - CRB - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-crb-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[crb-source]\nname=CentOS Stream $releasever - CRB - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-crb-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/centos-addons.repo\n[highavailability]\nname=CentOS Stream $releasever - HighAvailability\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/HighAvailability\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-highavailability-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=0\n\n[highavailability-debug]\nname=CentOS Stream $releasever - HighAvailability - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-highavailability-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[highavailability-source]\nname=CentOS Stream $releasever - HighAvailability - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-highavailability-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[nfv]\nname=CentOS Stream $releasever - NFV\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/NFV\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-nfv-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=0\n\n[nfv-debug]\nname=CentOS Stream $releasever - NFV - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-nfv-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[nfv-source]\nname=CentOS Stream $releasever - NFV - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-nfv-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[rt]\nname=CentOS Stream $releasever - RT\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/RT\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-rt-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=0\n\n[rt-debug]\nname=CentOS Stream $releasever - RT - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-rt-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[rt-source]\nname=CentOS Stream $releasever - RT - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-rt-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[resilientstorage]\nname=CentOS Stream $releasever - ResilientStorage\n#baseurl=https:\/\/mirror.stream.centos.org\/$releasever-stream\/ResilientStorage\/$basearch\/os\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-resilientstorage-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=0\n\n[resilientstorage-debug]\nname=CentOS Stream $releasever - ResilientStorage - Debug\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-resilientstorage-debug-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[resilientstorage-source]\nname=CentOS Stream $releasever - ResilientStorage - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-resilientstorage-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\n\n[extras-common]\nname=CentOS Stream $releasever - Extras packages\n#baseurl=https:\/\/mirror.stream.centos.org\/SIGs\/$releasever-stream\/extras\/$basearch\/extras-common\/\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-extras-sig-extras-common-$stream&amp;arch=$basearch&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\ncountme=1\nenabled=1\n\n[extras-common-source]\nname=CentOS Stream $releasever - Extras packages - Source\nmetalink=https:\/\/mirrors.centos.org\/metalink?repo=centos-extras-sig-extras-common-source-$stream&amp;arch=source&amp;protocol=https,http\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512\ngpgcheck=1\nrepo_gpgcheck=0\nmetadata_expire=6h\nenabled=0\nEOF\n        ;;\n    8)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-AppStream.repo\n# CentOS-Stream-AppStream.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[appstream]\nname=CentOS Stream $releasever - AppStream\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=AppStream&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/AppStream\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-BaseOS.repo\n# CentOS-Stream-BaseOS.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[baseos]\nname=CentOS Stream $releasever - BaseOS\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=BaseOS&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/BaseOS\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-Debuginfo.repo\n# CentOS-Stream-Debuginfo.repo\n#\n# All debug packages are merged into a single repo, split by basearch, and are\n# not signed.\n\n[debuginfo]\nname=CentOS Stream $releasever - Debuginfo\nbaseurl=http:\/\/debuginfo.centos.org\/$stream\/$basearch\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-Extras-common.repo\n# CentOS-Stream-Extras-common.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[extras-common]\nname=CentOS Stream $releasever - Extras common packages\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=extras-extras-common\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/extras\/$basearch\/extras-common\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-SIG-Extras\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-Extras.repo\n# CentOS-Stream-Extras.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[extras]\nname=CentOS Stream $releasever - Extras\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=extras&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/extras\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-HighAvailability.repo\n# CentOS-Stream-HighAvailability.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[ha]\nname=CentOS Stream $releasever - HighAvailability\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=HighAvailability&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/HighAvailability\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-Media.repo\n# CentOS-Stream-Media.repo\n#\n# You can use this repo to install items directly off the installation media.\n# Verify your mount point matches one of the below file:\/\/ paths.\n\n[media-baseos]\nname=CentOS Stream $releasever - Media - BaseOS\nbaseurl=file:\/\/\/media\/CentOS\/BaseOS\n        file:\/\/\/media\/cdrom\/BaseOS\n        file:\/\/\/media\/cdrecorder\/BaseOS\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[media-appstream]\nname=CentOS Stream $releasever - Media - AppStream\nbaseurl=file:\/\/\/media\/CentOS\/AppStream\n        file:\/\/\/media\/cdrom\/AppStream\n        file:\/\/\/media\/cdrecorder\/AppStream\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-NFV.repo\n# CentOS-Stream-NFV.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[nfv]\nname=CentOS Stream $releasever - NFV\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=NFV&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/NFV\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-PowerTools.repo\n# CentOS-Stream-PowerTools.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[powertools]\nname=CentOS Stream $releasever - PowerTools\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=PowerTools&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/PowerTools\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-RealTime.repo\n# CentOS-Stream-RealTime.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[rt]\nname=CentOS Stream $releasever - RealTime\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=RT&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/RT\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-ResilientStorage.repo\n# CentOS-Stream-ResilientStorage.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for CentOS updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[resilientstorage]\nname=CentOS Stream $releasever - ResilientStorage\nmirrorlist=http:\/\/mirrorlist.centos.org\/?release=$stream&amp;arch=$basearch&amp;repo=ResilientStorage&amp;infra=$infra\n#baseurl=http:\/\/mirror.centos.org\/$contentdir\/$stream\/ResilientStorage\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/CentOS-Stream-Sources.repo\n# CentOS-Stream-Sources.repo\n\n[baseos-source]\nname=CentOS Stream $releasever - BaseOS - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/BaseOS\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[appstream-source]\nname=CentOS Stream $releasever - AppStream - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/AppStream\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[powertools-source]\nname=CentOS Stream $releasever - PowerTools - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/PowerTools\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[extras-source]\nname=CentOS Stream $releasever - Extras - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/extras\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[ha-source]\nname=CentOS Stream $releasever - HighAvailability - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/HighAvailability\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[rt-source]\nname=CentOS Stream $releasever - RT - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/RT\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[resilientstorage-source]\nname=CentOS Stream $releasever - ResilientStorage - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/ResilientStorage\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\n\n[nfv-source]\nname=CentOS Stream $releasever - NFV - Source\nbaseurl=http:\/\/vault.centos.org\/$contentdir\/$stream\/NFV\/Source\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-centosofficial\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 Rocky Linux \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_RockyLinux() {\n    case \"$1\" in\n    9)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/rocky.repo\n# rocky.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[baseos]\nname=Rocky Linux $releasever - BaseOS\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=BaseOS-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/BaseOS\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[baseos-debug]\nname=Rocky Linux $releasever - BaseOS - Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=BaseOS-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/BaseOS\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[baseos-source]\nname=Rocky Linux $releasever - BaseOS - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=BaseOS-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/BaseOS\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[appstream]\nname=Rocky Linux $releasever - AppStream\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=AppStream-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/AppStream\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[appstream-debug]\nname=Rocky Linux $releasever - AppStream - Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=AppStream-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/AppStream\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[appstream-source]\nname=Rocky Linux $releasever - AppStream - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=AppStream-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/AppStream\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[crb]\nname=Rocky Linux $releasever - CRB\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=CRB-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/CRB\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[crb-debug]\nname=Rocky Linux $releasever - CRB - Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=CRB-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/CRB\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[crb-source]\nname=Rocky Linux $releasever - CRB - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=CRB-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/CRB\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/rocky-addons.repo\n# rocky-addons.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[highavailability]\nname=Rocky Linux $releasever - High Availability\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=HighAvailability-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/HighAvailability\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[highavailability-debug]\nname=Rocky Linux $releasever - High Availability - Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=HighAvailability-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/HighAvailability\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[highavailability-source]\nname=Rocky Linux $releasever - High Availability - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=HighAvailability-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/HighAvailability\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[resilientstorage]\nname=Rocky Linux $releasever - Resilient Storage\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=ResilientStorage-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/ResilientStorage\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[resilientstorage-debug]\nname=Rocky Linux $releasever - Resilient Storage - Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=ResilientStorage-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/ResilientStorage\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[resilientstorage-source]\nname=Rocky Linux $releasever - Resilient Storage - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=ResilientStorage-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/ResilientStorage\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[nfv]\nname=Rocky Linux $releasever - NFV\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=NFV-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/NFV\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[nfv-debug]\nname=Rocky Linux $releasever - NFV Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=RT-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/NFV\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[nfv-source]\nname=Rocky Linux $releasever - NFV Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=RT-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/NFV\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[rt]\nname=Rocky Linux $releasever - Realtime\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=RT-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/RT\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[rt-debug]\nname=Rocky Linux $releasever - Realtime Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=RT-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/RT\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[rt-source]\nname=Rocky Linux $releasever - Realtime Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=RT-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/RT\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[sap]\nname=Rocky Linux $releasever - SAP\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=SAP-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/SAP\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[sap-debug]\nname=Rocky Linux $releasever - SAP Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=SAP-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/SAP\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[sap-source]\nname=Rocky Linux $releasever - SAP Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=SAP-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/SAP\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[saphana]\nname=Rocky Linux $releasever - SAPHANA\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=SAPHANA-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/SAPHANA\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[saphana-debug]\nname=Rocky Linux $releasever - SAPHANA Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=SAPHANA-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/SAPHANA\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[saphana-source]\nname=Rocky Linux $releasever - SAPHANA Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=SAPHANA-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/SAPHANA\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/rocky-devel.repo\n# rocky-devel.repo\n#\n# devel and no-package-left-behind\n\n[devel]\nname=Rocky Linux $releasever - Devel WARNING! FOR BUILDROOT ONLY DO NOT LEAVE ENABLED\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=devel-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/devel\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/rocky-extras.repo\n# rocky-extras.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[extras]\nname=Rocky Linux $releasever - Extras\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=extras-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/extras\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[extras-debug]\nname=Rocky Linux $releasever - Extras Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=extras-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/extras\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[extras-source]\nname=Rocky Linux $releasever - Extras Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=extras-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/extras\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[plus]\nname=Rocky Linux $releasever - Plus\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=plus-$releasever$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/plus\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[plus-debug]\nname=Rocky Linux $releasever - Plus - Debug\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=plus-$releasever-debug$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/plus\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\n\n[plus-source]\nname=Rocky Linux $releasever - Plus - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=plus-$releasever-source$rltype\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/plus\/source\/tree\/\ngpgcheck=1\nenabled=0\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-Rocky-9\nEOF\n        ;;\n    8)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-AppStream.repo\n# Rocky-AppStream.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[appstream]\nname=Rocky Linux $releasever - AppStream\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=AppStream-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/AppStream\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-BaseOS.repo\n# Rocky-BaseOS.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[baseos]\nname=Rocky Linux $releasever - BaseOS\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=BaseOS-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/BaseOS\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-Debuginfo.repo\n# Rocky-Debuginfo.repo\n#\n\n[baseos-debug]\nname=Rocky Linux $releasever - BaseOS - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=BaseOS-$releasever-debug\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/BaseOS\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[appstream-debug]\nname=Rocky Linux $releasever - AppStream - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=AppStream-$releasever-debug\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/AppStream\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[ha-debug]\nname=Rocky Linux $releasever - High Availability - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=HighAvailability-$releasever-debug\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/HighAvailability\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[powertools-debug]\nname=Rocky Linux $releasever - PowerTools - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=PowerTools-$releasever-debug\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/PowerTools\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[resilient-storage-debug]\nname=Rocky Linux $releasever - Resilient Storage - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=ResilientStorage-$releasever-debug\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/ResilientStorage\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-Devel.repo\n# Rocky-Devel.repo\n#\n\n[devel]\nname=Rocky Linux $releasever - Devel WARNING! FOR BUILDROOT AND KOJI USE\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=Devel-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/Devel\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-Extras.repo\n# Rocky-Extras.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[extras]\nname=Rocky Linux $releasever - Extras\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=extras-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/extras\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-HighAvailability.repo\n# Rocky-HighAvailability.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[ha]\nname=Rocky Linux $releasever - HighAvailability\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=HighAvailability-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/HighAvailability\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-Media.repo\n# Rocky-Media.repo\n#\n# You can use this repo to install items directly off the installation media.\n# Verify your mount point matches one of the below file:\/\/ paths.\n\n[media-baseos]\nname=Rocky Linux $releasever - Media - BaseOS\nbaseurl=file:\/\/\/media\/Rocky\/BaseOS\n        file:\/\/\/media\/cdrom\/BaseOS\n        file:\/\/\/media\/cdrecorder\/BaseOS\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[media-appstream]\nname=Rocky Linux $releasever - Media - AppStream\nbaseurl=file:\/\/\/media\/Rocky\/AppStream\n        file:\/\/\/media\/cdrom\/AppStream\n        file:\/\/\/media\/cdrecorder\/AppStream\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-NFV.repo\n# Rocky-NFV.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[nfv]\nname=Rocky Linux $releasever - NFV\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=NFV-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/nfv\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-Plus.repo\n# Rocky-Plus.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[plus]\nname=Rocky Linux $releasever - Plus\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=rockyplus-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/plus\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-PowerTools.repo\n# Rocky-PowerTools.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[powertools]\nname=Rocky Linux $releasever - PowerTools\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=PowerTools-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/PowerTools\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-ResilientStorage.repo\n# Rocky-ResilientStorage.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[resilient-storage]\nname=Rocky Linux $releasever - ResilientStorage\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=ResilientStorage-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/ResilientStorage\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-RT.repo\n# Rocky-RT.repo\n#\n# The mirrorlist system uses the connecting IP address of the client and the\n# update status of each mirror to pick current mirrors that are geographically\n# close to the client.  You should use this for Rocky updates unless you are\n# manually picking other mirrors.\n#\n# If the mirrorlist does not work for you, you can try the commented out\n# baseurl line instead.\n\n[rt]\nname=Rocky Linux $releasever - Realtime\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=$basearch&amp;repo=RT-$releasever\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/RT\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/Rocky-Sources.repo\n# Rocky-Sources.repo\n\n[baseos-source]\nname=Rocky Linux $releasever - BaseOS - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=BaseOS-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/BaseOS\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[appstream-source]\nname=Rocky Linux $releasever - AppStream - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=AppStream-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/AppStream\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n#[extras-source]\n#name=Rocky Linux $releasever - Extras - Source\n#mirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=extras-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/extras\/source\/tree\/\n#gpgcheck=1\n#enabled=0\n#gpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n#[plus-source]\n#name=Rocky Linux $releasever - Plus - Source\n#mirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=plus-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/Plus\/source\/tree\/\n#gpgcheck=1\n#enabled=0\n#gpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[ha-source]\nname=Rocky Linux $releasever - High Availability - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=HighAvailability-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/HighAvailability\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[powertools-source]\nname=Rocky Linux $releasever - PowerTools - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=PowerTools-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/PowerTools\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\n\n[resilient-storage-source]\nname=Rocky Linux $releasever - Resilient Storage - Source\nmirrorlist=https:\/\/mirrors.rockylinux.org\/mirrorlist?arch=source&amp;repo=ResilientStorage-$releasever-source\n#baseurl=http:\/\/dl.rockylinux.org\/$contentdir\/$releasever\/ResilientStorage\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-rockyofficial\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 AlmaLinux \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_AlmaLinux() {\n    case \"$1\" in\n    9)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-appstream.repo\n[appstream]\nname=AlmaLinux $releasever - AppStream\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/appstream\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/AppStream\/$basearch\/os\/\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=1\n\n[appstream-debug]\nname=AlmaLinux $releasever - AppStream - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/appstream-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/AppStream\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[appstream-source]\nname=AlmaLinux $releasever - AppStream - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/appstream-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/AppStream\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-baseos.repo\n[baseos]\nname=AlmaLinux $releasever - BaseOS\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/baseos\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/BaseOS\/$basearch\/os\/\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=1\n\n[baseos-debug]\nname=AlmaLinux $releasever - BaseOS - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/baseos-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/BaseOS\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[baseos-source]\nname=AlmaLinux $releasever - BaseOS - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/baseos-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/BaseOS\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-crb.repo\n[crb]\nname=AlmaLinux $releasever - CRB\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/crb\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/CRB\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[crb-debug]\nname=AlmaLinux $releasever - CRB - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/crb-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/CRB\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[crb-source]\nname=AlmaLinux $releasever - CRB - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/crb-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/CRB\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-extras.repo\n[extras]\nname=AlmaLinux $releasever - Extras\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/extras\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/extras\/$basearch\/os\/\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[extras-debug]\nname=AlmaLinux $releasever - Extras - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/extras-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/extras\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[extras-source]\nname=AlmaLinux $releasever - Extras - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/extras-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/extras\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-highavailability.repo\n[highavailability]\nname=AlmaLinux $releasever - HighAvailability\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/highavailability\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/HighAvailability\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[highavailability-debug]\nname=AlmaLinux $releasever - HighAvailability - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/highavailability-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/HighAvailability\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[highavailability-source]\nname=AlmaLinux $releasever - HighAvailability - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/highavailability-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/HighAvailability\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-nfv.repo\n[nfv]\nname=AlmaLinux $releasever - NFV\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/nfv\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/NFV\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[nfv-debug]\nname=AlmaLinux $releasever - NFV - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/nfv-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/NFV\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[nfv-source]\nname=AlmaLinux $releasever - NFV - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/nfv-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/NFV\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-plus.repo\n[plus]\nname=AlmaLinux $releasever - Plus\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/plus\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/plus\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[plus-debug]\nname=AlmaLinux $releasever - Plus - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/plus-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/plus\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[plus-source]\nname=AlmaLinux $releasever - Plus - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/plus-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/plus\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-resilientstorage.repo\n[resilientstorage]\nname=AlmaLinux $releasever - ResilientStorage\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/resilientstorage\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/ResilientStorage\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[resilientstorage-debug]\nname=AlmaLinux $releasever - ResilientStorage - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/resilientstorage-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/ResilientStorage\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[resilientstorage-source]\nname=AlmaLinux $releasever - ResilientStorage - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/resilientstorage-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/ResilientStorage\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-rt.repo\n[rt]\nname=AlmaLinux $releasever - RT\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/rt\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/RT\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[rt-debug]\nname=AlmaLinux $releasever - RT - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/rt-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/RT\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[rt-source]\nname=AlmaLinux $releasever - RT - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/rt-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/RT\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-sap.repo\n[sap]\nname=AlmaLinux $releasever - SAP\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/sap\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/SAP\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[sap-debug]\nname=AlmaLinux $releasever - SAP - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/sap-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAP\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[sap-source]\nname=AlmaLinux $releasever - SAP - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/sap-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAP\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-saphana.repo\n[saphana]\nname=AlmaLinux $releasever - SAPHANA\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/saphana\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/SAPHANA\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[saphana-debug]\nname=AlmaLinux $releasever - SAPHANA - Debug\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/saphana-debug\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAPHANA\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\n\n[saphana-source]\nname=AlmaLinux $releasever - SAPHANA - Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/saphana-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAPHANA\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux-9\nmetadata_expire=86400\nenabled_metadata=0\nEOF\n        ;;\n    8)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-ha.repo\n# almalinux-ha.repo\n\n[ha]\nname=AlmaLinux $releasever - HighAvailability\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/ha\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/HighAvailability\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[ha-source]\nname=AlmaLinux $releasever - HighAvailability Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/ha-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/HighAvailability\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[ha-debuginfo]\nname=AlmaLinux $releasever - HighAvailability debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/ha-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/HighAvailability\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-nfv.repo\n# almalinux-nfv.repo\n\n[nfv]\nname=AlmaLinux $releasever - Real Time for NFV\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/nfv\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/NFV\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[nfv-source]\nname=AlmaLinux $releasever - Real Time for NFV Sources\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/nfv-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/NFV\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[nfv-debuginfo]\nname=AlmaLinux $releasever - Real Time for NFV Debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/nfv-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/NFV\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-plus.repo\n# almalinux-plus.repo\n\n[plus]\nname=AlmaLinux $releasever - Plus\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/plus\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/plus\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[plus-source]\nname=AlmaLinux $releasever - Plus Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/plus-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/plus\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[plus-debuginfo]\nname=AlmaLinux $releasever - Plus debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/plus-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/plus\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-powertools.repo\n# almalinux-powertools.repo\n\n[powertools]\nname=AlmaLinux $releasever - PowerTools\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/powertools\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/PowerTools\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[powertools-source]\nname=AlmaLinux $releasever - PowerTools Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/powertools-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/PowerTools\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[powertools-debuginfo]\nname=AlmaLinux $releasever - PowerTools debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/powertools-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/PowerTools\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-resilientstorage.repo\n# almalinux-resilientstorage.repo\n\n[resilientstorage]\nname=AlmaLinux $releasever - ResilientStorage\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/resilientstorage\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/ResilientStorage\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[resilientstorage-source]\nname=AlmaLinux $releasever - ResilientStorage Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/resilientstorage-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/ResilientStorage\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[resilientstorage-debuginfo]\nname=AlmaLinux $releasever - ResilientStorage debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/resilientstorage-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/ResilientStorage\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-rt.repo\n# almalinux-rt.repo\n\n[rt]\nname=AlmaLinux $releasever - Real Time\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/rt\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/RT\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[rt-source]\nname=AlmaLinux $releasever - Real Time Sources\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/rt-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/RT\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[rt-debuginfo]\nname=AlmaLinux $releasever - Real Time Debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/rt-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/RT\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-sap.repo\n# almalinux-sap.repo\n\n[sap]\nname=AlmaLinux $releasever - SAP\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/sap\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/SAP\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[sap-source]\nname=AlmaLinux $releasever - SAP Sources\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/sap-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAP\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[sap-debuginfo]\nname=AlmaLinux $releasever - SAP Debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/sap-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAP\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux-saphana.repo\n# almalinux-saphana.repo\n\n[saphana]\nname=AlmaLinux $releasever - SAP HANA\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/saphana\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/SAPHANA\/$basearch\/os\/\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[saphana-source]\nname=AlmaLinux $releasever - SAP HANA Sources\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/saphana-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAPHANA\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[saphana-debuginfo]\nname=AlmaLinux $releasever - SAP HANA Debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/saphana-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/SAPHANA\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/almalinux.repo\n# almalinux.repo\n\n[baseos]\nname=AlmaLinux $releasever - BaseOS\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/baseos\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/BaseOS\/$basearch\/os\/\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n[appstream]\nname=AlmaLinux $releasever - AppStream\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/appstream\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/AppStream\/$basearch\/os\/\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n[extras]\nname=AlmaLinux $releasever - Extras\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/extras\n# baseurl=https:\/\/repo.almalinux.org\/almalinux\/$releasever\/extras\/$basearch\/os\/\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Sources\n[baseos-source]\nname=AlmaLinux $releasever - BaseOS Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/baseos-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/BaseOS\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n[appstream-source]\nname=AlmaLinux $releasever - AppStream Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/appstream-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/AppStream\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n[extras-source]\nname=AlmaLinux $releasever - Extras Source\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/extras-source\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/extras\/Source\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n## Debuginfo\n[baseos-debuginfo]\nname=AlmaLinux $releasever - BaseOS debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/baseos-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/BaseOS\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n[appstream-debuginfo]\nname=AlmaLinux $releasever - AppStream debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/appstream-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/AppStream\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\n\n[extras-debuginfo]\nname=AlmaLinux $releasever - Extras debuginfo\nmirrorlist=https:\/\/mirrors.almalinux.org\/mirrorlist\/$releasever\/extras-debuginfo\n# baseurl=https:\/\/repo.almalinux.org\/vault\/$releasever\/extras\/debug\/$basearch\/\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-AlmaLinux\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 Fedora \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_Fedora() {\n    cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/fedora.repo\n[fedora]\nname=Fedora $releasever - $basearch\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/releases\/$releasever\/Everything\/$basearch\/os\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=fedora-$releasever&amp;arch=$basearch\nenabled=1\ncountme=1\nmetadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[fedora-debuginfo]\nname=Fedora $releasever - $basearch - Debug\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/releases\/$releasever\/Everything\/$basearch\/debug\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=fedora-debug-$releasever&amp;arch=$basearch\nenabled=0\nmetadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[fedora-source]\nname=Fedora $releasever - Source\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/releases\/$releasever\/Everything\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=fedora-source-$releasever&amp;arch=$basearch\nenabled=0\nmetadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\nEOF\n    cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/fedora-updates.repo\n[updates]\nname=Fedora $releasever - $basearch - Updates\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Everything\/$basearch\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-released-f$releasever&amp;arch=$basearch\nenabled=1\ncountme=1\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-debuginfo]\nname=Fedora $releasever - $basearch - Updates - Debug\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Everything\/$basearch\/debug\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-released-debug-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-source]\nname=Fedora $releasever - Updates Source\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Everything\/SRPMS\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-released-source-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\nEOF\n    cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/fedora-updates-testing.repo\n[updates-testing]\nname=Fedora $releasever - $basearch - Test Updates\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/testing\/$releasever\/Everything\/$basearch\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-testing-f$releasever&amp;arch=$basearch\nenabled=0\ncountme=1\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-testing-debuginfo]\nname=Fedora $releasever - $basearch - Test Updates Debug\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/testing\/$releasever\/Everything\/$basearch\/debug\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-testing-debug-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-testing-source]\nname=Fedora $releasever - Test Updates Source\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/testing\/$releasever\/Everything\/SRPMS\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-testing-source-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\nEOF\n    ## \u81ea Fedora 39 \u8d77\u4e0d\u518d\u4f7f\u7528 modular \u4ed3\u5e93\n    if [[ $1 -lt 39 ]]; then\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/fedora-modular.repo\n[fedora-modular]\nname=Fedora Modular $releasever - $basearch\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/releases\/$releasever\/Modular\/$basearch\/os\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=fedora-modular-$releasever&amp;arch=$basearch\nenabled=1\ncountme=1\n#metadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[fedora-modular-debuginfo]\nname=Fedora Modular $releasever - $basearch - Debug\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/releases\/$releasever\/Modular\/$basearch\/debug\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=fedora-modular-debug-$releasever&amp;arch=$basearch\nenabled=0\nmetadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[fedora-modular-source]\nname=Fedora Modular $releasever - Source\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/releases\/$releasever\/Modular\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=fedora-modular-source-$releasever&amp;arch=$basearch\nenabled=0\nmetadata_expire=7d\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/fedora-updates-modular.repo\n[updates-modular]\nname=Fedora Modular $releasever - $basearch - Updates\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Modular\/$basearch\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-released-modular-f$releasever&amp;arch=$basearch\nenabled=1\ncountme=1\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-modular-debuginfo]\nname=Fedora Modular $releasever - $basearch - Updates - Debug\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Modular\/$basearch\/debug\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-released-modular-debug-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-modular-source]\nname=Fedora Modular $releasever - Updates Source\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Modular\/SRPMS\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-released-modular-source-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/fedora-updates-testing-modular.repo\n[updates-testing-modular]\nname=Fedora Modular $releasever - $basearch - Test Updates\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/testing\/$releasever\/Modular\/$basearch\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-testing-modular-f$releasever&amp;arch=$basearch\nenabled=0\ncountme=1\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-testing-modular-debuginfo]\nname=Fedora Modular $releasever - $basearch - Test Updates Debug\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Modular\/$basearch\/debug\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-testing-modular-debug-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\n\n[updates-testing-modular-source]\nname=Fedora Modular $releasever - Test Updates Source\n#baseurl=http:\/\/download.example\/pub\/fedora\/linux\/updates\/$releasever\/Modular\/SRPMS\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=updates-testing-modular-source-f$releasever&amp;arch=$basearch\nenabled=0\nrepo_gpgcheck=0\ntype=rpm\ngpgcheck=1\nmetadata_expire=6h\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-fedora-$releasever-$basearch\nskip_if_unavailable=False\nEOF\n    fi\n}\n\n## \u751f\u6210 OpenCloudOS \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_OpenCloudOS() {\n    case \"$1\" in\n    9)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/OpenCloudOS.repo\n[BaseOS]\nname=BaseOS $releasever - $basearch\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/BaseOS\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[AppStream]\nname=AppStream $releasever - $basearch\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/AppStream\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[extras]\nname=extras $releasever - $basearch\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/extras\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[BaseOS-debuginfo]\nname=BaseOS-debuginfo $releasever - $basearch\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/BaseOS\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[AppStream-debuginfo]\nname=AppStream-debuginfo $releasever - $basearch\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/AppStream\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[extras-debuginfo]\nname=extras-debuginfo $releasever - $basearch\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/extras\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[BaseOS-source]\nname=BaseOS-source $releasever\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/BaseOS\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[AppStream-source]\nname=AppStream-source $releasever\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/AppStream\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\n\n[extras-source]\nname=extras-source $releasever\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/extras\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS-9\nEOF\n        ;;\n    8)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/OpenCloudOS-Debuginfo.repo\n# OpenCloudOS-Debuginfo.repo\n#\n# Author: OpenCloudOS &lt;infrastructure@opencloudos.tech&gt;\n#\n[BaseOS-debuginfo]\nname=OpenCloudOS $releasever - BaseOS-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/BaseOS\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[AppStream-debuginfo]\nname=OpenCloudOS $releasever - AppStream-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/AppStream\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[Extras-debuginfo]\nname=OpenCloudOS $releasever - Extras-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/Extras\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[HighAvailability-debuginfo]\nname=OpenCloudOS $releasever - HighAvailability-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/HighAvailability\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[PowerTools-debuginfo]\nname=OpenCloudOS $releasever - PowerTools-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/PowerTools\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[ResilientStorage-debuginfo]\nname=OpenCloudOS $releasever - ResilientStorage-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/ResilientStorage\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[Plus-debuginfo]\nname=OpenCloudOS $releasever - Plus-debuginfo\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/Plus\/$basearch\/debug\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/OpenCloudOS.repo\n# OpenCloudOS.repo\n#\n# Author: OpenCloudOS &lt;infrastructure@opencloudos.tech&gt;\n#\n[BaseOS]\nname=OpenCloudOS $releasever - BaseOS\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/BaseOS\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[AppStream]\nname=OpenCloudOS $releasever - AppStream\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/AppStream\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[Extras]\nname=OpenCloudOS $releasever - Extras\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/Extras\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[HighAvailability]\nname=OpenCloudOS $releasever - HighAvailability\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/HighAvailability\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[PowerTools]\nname=OpenCloudOS $releasever - PowerTools\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/PowerTools\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[ResilientStorage]\nname=OpenCloudOS $releasever - ResilientStorage\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/ResilientStorage\/$basearch\/os\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[Plus]\nname=OpenCloudOS $releasever - Plus\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/Plus\/$basearch\/os\/\ngpgcheck=1\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/OpenCloudOS-Sources.repo\n# OpenCloudOS-Sources.repo\n#\n# Author: OpenCloudOS &lt;infrastructure@opencloudos.tech&gt;\n#\n[BaseOS-source]\nname=OpenCloudOS $releasever - Base-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/BaseOS\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[AppStream-source]\nname=OpenCloudOS $releasever - AppStream-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/AppStream\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[Extras-source]\nname=OpenCloudOS $releasever - Extras-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/Extras\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[HighAvailability-source]\nname=OpenCloudOS $releasever - HighAvailability-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/HighAvailability\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[PowerTools-source]\nname=OpenCloudOS $releasever - PowerTools-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/PowerTools\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[ResilientStorage-source]\nname=OpenCloudOS $releasever - ResilientStorage-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/ResilientStorage\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\n\n[Plus-source]\nname=OpenCloudOS $releasever - Plus-source\nbaseurl=https:\/\/mirrors.opencloudos.tech\/opencloudos\/$releasever\/Plus\/source\/tree\/\ngpgcheck=1\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-OpenCloudOS\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 openEuler \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_openEuler() {\n    cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/openEuler.repo\n#generic-repos is licensed under the Mulan PSL v2.\n#You can use this software according to the terms and conditions of the Mulan PSL v2.\n#You may obtain a copy of Mulan PSL v2 at:\n#    http:\/\/license.coscl.org.cn\/MulanPSL2\n#THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR\n#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR\n#PURPOSE.\n#See the Mulan PSL v2 for more details.\n\n[OS]\nname=OS\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/OS\/$basearch\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/OS\/$basearch\/RPM-GPG-KEY-openEuler\n\n[everything]\nname=everything\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/everything\/$basearch\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/everything\/$basearch\/RPM-GPG-KEY-openEuler\n\n[EPOL]\nname=EPOL\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/EPOL\/main\/$basearch\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/OS\/$basearch\/RPM-GPG-KEY-openEuler\n\n[debuginfo]\nname=debuginfo\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/debuginfo\/$basearch\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/debuginfo\/$basearch\/RPM-GPG-KEY-openEuler\n\n[source]\nname=source\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/source\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/source\/RPM-GPG-KEY-openEuler\n\n[update]\nname=update\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/update\/$basearch\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/OS\/$basearch\/RPM-GPG-KEY-openEuler\n\n[update-source]\nname=update-source\nbaseurl=http:\/\/repo.openeuler.org\/openEuler-version\/update\/source\/\nenabled=1\ngpgcheck=1\ngpgkey=http:\/\/repo.openeuler.org\/openEuler-version\/source\/RPM-GPG-KEY-openEuler\nEOF\n}\n\n## \u751f\u6210 Anolis OS \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_AnolisOS() {\n    case \"$1\" in\n    23)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/AnolisOS.repo\n[os]\nname=AnolisOS-$releasever - os\nbaseurl=http:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/os\/$basearch\/os\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\n\n[updates]\nname=AnolisOS-$releasever - updates\nbaseurl=http:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/updates\/$basearch\/os\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\n\n[kernel-6]\nname=AnolisOS-$releasever - kernel-6\nbaseurl=http:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/kernel-6\/$basearch\/os\nenabled=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/AnolisOS-Source.repo\n[os-source]\nname=AnolisOS-$releasever - os Source\nbaseurl=https:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/os\/source\/\nenabled=0\ngpgkey=https:\/\/mirrors.openanolis.cn\/anolis\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\n\n[updates-source]\nname=AnolisOS-$releasever - updates Source\nbaseurl=https:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/updates\/source\/\nenabled=0\ngpgkey=https:\/\/mirrors.openanolis.cn\/anolis\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\n\n[kernel-source]\nname=AnolisOS-$releasever - kernel-6 Source\nbaseurl=https:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/kernel-6\/source\/\nenabled=0\ngpgkey=https:\/\/mirrors.openanolis.cn\/anolis\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/AnolisOS-Debuginfo.repo\n[os-debuginfo]\nname=AnolisOS-$releasever - os Debuginfo\nbaseurl=https:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/os\/$basearch\/debug\nenabled=0\ngpgkey=https:\/\/mirrors.openanolis.cn\/anolis\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\n\n[updates-debuginfo]\nname=AnolisOS-$releasever - updates Debuginfo\nbaseurl=https:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/updates\/$basearch\/debug\nenabled=0\ngpgkey=https:\/\/mirrors.openanolis.cn\/anolis\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\n\n[kernel-6-debuginfo]\nname=AnolisOS-$releasever - kernel-6 Debuginfo\nbaseurl=https:\/\/mirrors.openanolis.cn\/anolis\/$releasever\/kernel-6\/$basearch\/debug\nenabled=0\ngpgkey=https:\/\/mirrors.openanolis.cn\/anolis\/RPM-GPG-KEY-ANOLIS\ngpgcheck=1\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 openSUSE \u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_openSUSE() {\n    case \"$1\" in\n    \"leap\")\n        case \"$2\" in\n        15.[0-2])\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug-non-oss.repo\n[repo-debug-non-oss]\nname=Debug Repository (Non-OSS)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/distribution\/leap\/$releasever\/repo\/non-oss\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug.repo\n[repo-debug]\nname=Debug Repository\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/distribution\/leap\/$releasever\/repo\/oss\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug-update-non-oss.repo\n[repo-debug-update-non-oss]\nname=Update Repository (Debug, Non-OSS)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/update\/leap\/$releasever\/non-oss\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug-update.repo\n[repo-debug-update]\nname=Update Repository (Debug)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/update\/leap\/$releasever\/oss\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-non-oss.repo\n[repo-non-oss]\nname=Non-OSS Repository\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/distribution\/leap\/$releasever\/repo\/non-oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-oss.repo\n[repo-oss]\nname=Main Repository\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/distribution\/leap\/$releasever\/repo\/oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-source-non-oss.repo\n[repo-source-non-oss]\nname=Source Repository (Non-OSS)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/source\/distribution\/leap\/$releasever\/repo\/non-oss\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-source.repo\n[repo-source]\nname=Source Repository\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/source\/distribution\/leap\/$releasever\/repo\/oss\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-update-non-oss.repo\n[repo-update-non-oss]\nname=Update Repository (Non-Oss)\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/non-oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-update.repo\n[repo-update]\nname=Main Update Repository\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            ;;\n        *)\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-backports-debug-update.repo\n[repo-backports-debug-update]\nname=Update repository with updates for openSUSE Leap debuginfo packages from openSUSE Backports\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/backports_debug\/\ntype=NONE\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-backports-update.repo\n[repo-backports-update]\nname=Update repository of openSUSE Backports\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/backports\/\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug-non-oss.repo\n[repo-debug-non-oss]\nname=Debug Repository (Non-OSS)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/distribution\/leap\/$releasever\/repo\/non-oss\/\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug.repo\n[repo-debug]\nname=Debug Repository\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/distribution\/leap\/$releasever\/repo\/oss\/\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug-update-non-oss.repo\n[repo-debug-update-non-oss]\nname=Update Repository (Debug, Non-OSS)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/update\/leap\/$releasever\/non-oss\/\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug-update.repo\n[repo-debug-update]\nname=Update Repository (Debug)\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/update\/leap\/$releasever\/oss\/\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-non-oss.repo\n[repo-non-oss]\nname=Non-OSS Repository\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/distribution\/leap\/$releasever\/repo\/non-oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-oss.repo\n[repo-oss]\nname=Main Repository\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/distribution\/leap\/$releasever\/repo\/oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-sle-debug-update.repo\n[repo-sle-debug-update]\nname=Update repository with debuginfo for updates from SUSE Linux Enterprise 15\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/update\/leap\/$releasever\/sle\/\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-sle-update.repo\n[repo-sle-update]\nname=Update repository with updates from SUSE Linux Enterprise 15\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/sle\/\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-source.repo\n[repo-source]\nname=Source Repository\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/source\/distribution\/leap\/$releasever\/repo\/oss\/\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-update-non-oss.repo\n[repo-update-non-oss]\nname=Update Repository (Non-Oss)\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/non-oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-update.repo\n[repo-update]\nname=Main Update Repository\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/leap\/$releasever\/oss\/\ntype=rpm-md\nkeeppackages=0\nEOF\n            ;;\n        esac\n        ;;\n    \"tumbleweed\")\n        cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-debug.repo\n[repo-debug]\nname=openSUSE-Tumbleweed-Debug\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/debug\/tumbleweed\/repo\/oss\/\npath=\/\nkeeppackages=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-non-oss.repo\n[repo-non-oss]\nname=openSUSE-Tumbleweed-Non-Oss\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/tumbleweed\/repo\/non-oss\/\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-openh264.repo\n[repo-openh264]\nname=Open H.264 Codec (openSUSE Tumbleweed)\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/codecs.opensuse.org\/openh264\/openSUSE_Tumbleweed\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-oss.repo\n[repo-oss]\nname=openSUSE-Tumbleweed-Oss\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/tumbleweed\/repo\/oss\/\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-source.repo\n[repo-source]\nname=openSUSE-Tumbleweed-Source\nenabled=0\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/source\/tumbleweed\/repo\/oss\/\npath=\/\nkeeppackages=0\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_openSUSERepos\/repo-update.repo\n[repo-update]\nname=openSUSE-Tumbleweed-Update\nenabled=1\nautorefresh=1\nbaseurl=http:\/\/download.opensuse.org\/update\/tumbleweed\/\npath=\/\ntype=rpm-md\nkeeppackages=0\nEOF\n        ;;\n    esac\n}\n\n## \u751f\u6210 EPEL \u9644\u52a0\u8f6f\u4ef6\u5305\u5b98\u65b9 repo \u6e90\u6587\u4ef6\nfunction gen_repo_files_EPEL() {\n    case ${SYSTEM_VERSION_NUMBER:0:1} in\n    9)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel.repo\n[epel]\nname=Extra Packages for Enterprise Linux $releasever - $basearch\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/$releasever\/Everything\/$basearch\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-$releasever&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\n\n[epel-debuginfo]\nname=Extra Packages for Enterprise Linux $releasever - $basearch - Debug\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/$releasever\/Everything\/$basearch\/debug\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-debug-$releasever&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\ngpgcheck=1\n\n[epel-source]\nname=Extra Packages for Enterprise Linux $releasever - $basearch - Source\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/$releasever\/Everything\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-source-$releasever&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel-testing.repo\n[epel-testing]\nname=Extra Packages for Enterprise Linux $releasever - Testing - $basearch\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/$releasever\/Everything\/$basearch\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-epel$releasever&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\n\n[epel-testing-debuginfo]\nname=Extra Packages for Enterprise Linux $releasever - Testing - $basearch - Debug\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/$releasever\/Everything\/$basearch\/debug\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-debug-epel$releasever&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\ngpgcheck=1\n\n[epel-testing-source]\nname=Extra Packages for Enterprise Linux $releasever - Testing - $basearch - Source\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/$releasever\/Everything\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-source-epel$releasever&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\ngpgcheck=1\nEOF\n        ## \u6b64\u4ed3\u5e93\u7279\u6b8a\uff0c\u9ed8\u8ba4\u4e0d\u542f\u7528\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel-cisco-openh264.repo\n[epel-cisco-openh264]\nname=Extra Packages for Enterprise Linux $releasever openh264 (From Cisco) - $basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-cisco-openh264-$releasever&amp;arch=$basearch\ntype=rpm\nenabled=0\nmetadata_expire=14d\nrepo_gpgcheck=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\nskip_if_unavailable=True\n\n[epel-cisco-openh264-debuginfo]\nname=Extra Packages for Enterprise Linux $releasever openh264 (From Cisco) - $basearch - Debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-cisco-openh264-debug-$releasever&amp;arch=$basearch\ntype=rpm\nenabled=0\nmetadata_expire=14d\nrepo_gpgcheck=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\nskip_if_unavailable=True\n\n[epel-cisco-openh264-source]\nname=Extra Packages for Enterprise Linux $releasever openh264 (From Cisco) - $basearch - Source\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-cisco-openh264-source-$releasever&amp;arch=$basearch\ntype=rpm\nenabled=0\nmetadata_expire=14d\nrepo_gpgcheck=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-$releasever\nskip_if_unavailable=True\nEOF\n        ;;\n    8)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel.repo\n[epel]\nname=Extra Packages for Enterprise Linux 8 - $basearch\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/8\/Everything\/$basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=1\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\n\n[epel-debuginfo]\nname=Extra Packages for Enterprise Linux 8 - $basearch - Debug\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/8\/Everything\/$basearch\/debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-debug-8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\n\n[epel-source]\nname=Extra Packages for Enterprise Linux 8 - $basearch - Source\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place it's address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/8\/Everything\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-source-8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel-testing.repo\n[epel-testing]\nname=Extra Packages for Enterprise Linux 8 - Testing - $basearch\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/8\/Everything\/$basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-epel8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\n\n[epel-testing-debuginfo]\nname=Extra Packages for Enterprise Linux 8 - Testing - $basearch - Debug\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/8\/Everything\/$basearch\/debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-debug-epel8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\n\n[epel-testing-source]\nname=Extra Packages for Enterprise Linux 8 - Testing - $basearch - Source\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place it's address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/8\/Everything\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-source-epel8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel-modular.repo\n[epel-modular]\n# This repo has been RETIRED, see https:\/\/pagure.io\/epel\/issue\/198 for more details.\nname=Extra Packages for Enterprise Linux Modular 8 - $basearch - RETIRED\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/8\/Modular\/$basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-modular-8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\n\n[epel-modular-debuginfo]\n# This repo has been RETIRED, see https:\/\/pagure.io\/epel\/issue\/198 for more details.\nname=Extra Packages for Enterprise Linux Modular 8 - $basearch - Debug - RETIRED\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/8\/Modular\/$basearch\/debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-modular-debug-8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\n\n[epel-modular-source]\n# This repo has been RETIRED, see https:\/\/pagure.io\/epel\/issue\/198 for more details.\nname=Extra Packages for Enterprise Linux Modular 8 - $basearch - Source - RETIRED\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place it's address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/8\/Modular\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-modular-source-8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel-testing-modular.repo\n[epel-testing-modular]\n# This repo has been RETIRED, see https:\/\/pagure.io\/epel\/issue\/198 for more details.\nname=Extra Packages for Enterprise Linux Modular 8 - Testing - $basearch - RETIRED\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/8\/Modular\/$basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-modular-epel8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgcheck=1\ncountme=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\n\n[epel-testing-modular-debuginfo]\n# This repo has been RETIRED, see https:\/\/pagure.io\/epel\/issue\/198 for more details.\nname=Extra Packages for Enterprise Linux Modular 8 - Testing - $basearch - Debug - RETIRED\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place its address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/8\/Modular\/$basearch\/debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-modular-debug-epel8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\n\n[epel-testing-modular-source]\n# This repo has been RETIRED, see https:\/\/pagure.io\/epel\/issue\/198 for more details.\nname=Extra Packages for Enterprise Linux Modular 8 - Testing - $basearch - Source - RETIRED\n# It is much more secure to use the metalink, but if you wish to use a local mirror\n# place it's address here.\n#baseurl=https:\/\/download.example\/pub\/epel\/testing\/8\/Modular\/source\/tree\/\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-modular-source-epel8&amp;arch=$basearch&amp;infra=$infra&amp;content=$contentdir\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-8\ngpgcheck=1\nEOF\n        ;;\n    7)\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel.repo\n[epel]\nname=Extra Packages for Enterprise Linux 7 - $basearch\n#baseurl=http:\/\/download.fedoraproject.org\/pub\/epel\/7\/$basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-7&amp;arch=$basearch\nfailovermethod=priority\nenabled=1\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-7\n\n[epel-debuginfo]\nname=Extra Packages for Enterprise Linux 7 - $basearch - Debug\n#baseurl=http:\/\/download.fedoraproject.org\/pub\/epel\/7\/$basearch\/debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-debug-7&amp;arch=$basearch\nfailovermethod=priority\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-7\ngpgcheck=1\n\n[epel-source]\nname=Extra Packages for Enterprise Linux 7 - $basearch - Source\n#baseurl=http:\/\/download.fedoraproject.org\/pub\/epel\/7\/SRPMS\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=epel-source-7&amp;arch=$basearch\nfailovermethod=priority\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-7\ngpgcheck=1\nEOF\n        cat &lt;&lt;'EOF' &gt;$Dir_YumRepos\/epel-testing.repo\n[epel-testing]\nname=Extra Packages for Enterprise Linux 7 - Testing - $basearch\n#baseurl=http:\/\/download.fedoraproject.org\/pub\/epel\/testing\/7\/$basearch\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-epel7&amp;arch=$basearch\nfailovermethod=priority\nenabled=0\ngpgcheck=1\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-7\n\n[epel-testing-debuginfo]\nname=Extra Packages for Enterprise Linux 7 - Testing - $basearch - Debug\n#baseurl=http:\/\/download.fedoraproject.org\/pub\/epel\/testing\/7\/$basearch\/debug\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-debug-epel7&amp;arch=$basearch\nfailovermethod=priority\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-7\ngpgcheck=1\n\n[epel-testing-source]\nname=Extra Packages for Enterprise Linux 7 - Testing - $basearch - Source\n#baseurl=http:\/\/download.fedoraproject.org\/pub\/epel\/testing\/7\/SRPMS\nmetalink=https:\/\/mirrors.fedoraproject.org\/metalink?repo=testing-source-epel7&amp;arch=$basearch\nfailovermethod=priority\nenabled=0\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-EPEL-7\ngpgcheck=1\nEOF\n        ;;\n    esac\n}\n\n##############################################################################\n\nhandle_command_options \"$@\"\nmain\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u591a\u8f6f\u4ef6\u6e90\u9002\u914d \u8003\u5bdf\u4e86\u56fd\u5185\u955c\u50cf\u7ad9\u7684\u7cfb\u7edf\u9002\u914d\u60c5\u51b5\uff0c\u6d4b\u8bd5\u4e86\u4e0b\u8f7d\u901f\u5ea6\u4e0eIPv6\u534f\u8bae\u7684\u517c\u5bb9\u6027 \u53e6\u5916\uff0c\u63d0\u4f9b\u4e86\u5168\u7f51\u6536\u96c6\u7684\u4e2d\u56fd\u5927\u9646\u6559\u80b2\u7f51\u955c\u50cf\u7ad9\u548c\u6d77\u5916\u955c\u50cf\u7ad9\u4f9b\u9009\u62e9 &nbsp; \u00a0\u4f4e\u6280\u672f\u6210\u672c \u65e0\u9700\u638c\u63e1\u76f8\u5173\u6280\u672f\uff0c\u6587\u6863\u63d0\u4f9b\u4e86\u5168\u9762\u7684\u76f8\u5173\u77e5\u8bc6\u50a8\u5907\u548c\u64cd\u4f5c\u6307\u5f15 \u8fd8\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e38\u89c1\u95ee\u9898\u7684\u89e3\u51b3\u65b9\u6cd5 &nbsp; \u00a0\u811a\u672c\u4e00\u952e\u8fd0\u884c \u811a\u672c\u4f7f&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"class_list":["post-186","post","type-post","status-publish","format-standard","hentry","category-network_operation_and_maintenance"],"_links":{"self":[{"href":"https:\/\/htmacg.cn\/index.php?rest_route=\/wp\/v2\/posts\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/htmacg.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/htmacg.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/htmacg.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/htmacg.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=186"}],"version-history":[{"count":0,"href":"https:\/\/htmacg.cn\/index.php?rest_route=\/wp\/v2\/posts\/186\/revisions"}],"wp:attachment":[{"href":"https:\/\/htmacg.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/htmacg.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/htmacg.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}