使用方法
发布时间:2026-09-17 | 浏览:1
实时同步、无延迟,国内网络环境下推荐使用
备用官网地址,不建议在国内网络环境下使用
实时同步、无延迟,国内网络环境下推荐使用
备用官网地址,不建议在国内网络环境下使用
实时同步、无延迟,国内网络环境下推荐使用
备用官网地址,不建议在国内网络环境下使用
选项卡分别代表脚本内置软件源(镜像站)类型和获取脚本的不同途径,请在使用前检查目标镜像站是否支持你的操作系统,可以在 软件源列表 中查看。 默认自动备份原有软件源内容,如需了解更多请翻阅下方文档。若使用过程中的某些选项令你疑惑不解,那么在选择软件源后一路回车即是最佳实践。
支持在系统原有软件源损坏、缺失、无效等异常环境下使用,无需额外安装任何依赖。
关于软件源的选择(新用户必读)
如果你不了解这些镜像站那么建议使用 阿里云 (兼容性高、可用性强) 或 中国科学技术大学 (速度快) ,请不要陷入测速焦虑,内置的软件源一般不会有太大的差异。 本项目脚本是一个自动化运维工具,不会对镜像站进行主观的优劣排序和定制适配,用户的选择应该是自由的,这也是为了开源软件精神能够得到更好的延续。
需要 ROOT 权限 请使用 root 账户运行本脚本,切换命令为 sudo -i 或 su root ,不同系统使用的命令不同。另外注意不要通过 sudo 直接运行一键命令例如 sudo bash <(xxx) 。
请使用 root 账户运行本脚本,切换命令为 sudo -i 或 su root ,不同系统使用的命令不同。另外注意不要通过 sudo 直接运行一键命令例如 sudo bash <(xxx) 。
建议使用现代化的 SSH 客户端应用 如果系统命令行界面的中文显示乱码,将导致无法查看交互内容,此外部分系统 GUI 图形界面的终端应用可能存在一些无法预料的显示问题。部分系统会自动开启 SSH 服务,否则请参考 开启方法 。
建议使用现代化的 SSH 客户端应用
如果系统命令行界面的中文显示乱码,将导致无法查看交互内容,此外部分系统 GUI 图形界面的终端应用可能存在一些无法预料的显示问题。部分系统会自动开启 SSH 服务,否则请参考 开启方法 。
如果是在新装系统上首次执行脚本 当前依赖 curl 指令获取脚本内容,但部分操作系统未预装此软件包,将会报错 Command not found ,安装方法详见下方 关于报错 Command not found 。脚本本身与 curl wget 指令无关,不会下载任何内容。
如果是在新装系统上首次执行脚本
当前依赖 curl 指令获取脚本内容,但部分操作系统未预装此软件包,将会报错 Command not found ,安装方法详见下方 关于报错 Command not found 。脚本本身与 curl wget 指令无关,不会下载任何内容。
脚本运行期间需要交互选择配置 请通过方向键 Up Down Left Right 或 W A S D 控制选项并按 Enter 回车键确认。如果发现交互异常请改变终端软件的窗口大小后重试,避免窗口铺满全屏。
请通过方向键 Up Down Left Right 或 W A S D 控制选项并按 Enter 回车键确认。如果发现交互异常请改变终端软件的窗口大小后重试,避免窗口铺满全屏。
关于报错 Command not found # 此报错是由于系统没有安装 curl 软件包导致,安装命令如下 Debian 系 / openKylin RedHat 系 / openEuler / OpenCloudOS / Anolis OS openSUSE Arch Linux / Manjaro Alpine Linux Gentoo NixOS apt-get install -y curl Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin 新装系统需要先执行一遍更新 apt-get update dnf install -y curl || yum install -y curl Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS zypper install curl pacman -S curl apk --no-cache add -f curl bash ncurses emerge --ask curl nix-env -iA nixos.curl 安装不上?(点击展开查看其它解决方法) 假如系统原有软件源是无效的导致安装不上 curl 软件包,那么对于 Linux 初学者来说可能会比较麻烦,这里提供几个在线获取脚本的应急方法 使用 Python 下载 使用 wget 指令下载 使用浏览器下载 适用于大部分操作系统( Alpine Linux 除外), python3 要是不存在那就再试试 python 指令 python3 -c "import urllib.request; urllib.request.urlretrieve('https://linuxmirrors.cn/main.sh', 'main.sh')" 一般没有预装 curl 软件包的系统也不会预装 wget 软件包,所以大概率这个方法应该是不行的 wget https://linuxmirrors.cn/main.sh 如果可以访问系统 GUI 图像界面和桌面的话那可以直接在浏览器中打开链接下载脚本,很多系统都会预装 Firefox 火狐浏览器 之后再执行脚本即可 中国大陆 境外以及海外地区 中国大陆教育网 bash main.sh bash main.sh --abroad bash main.sh --edu 如果以上方法试了都不行,那就复制 源码 至本地新建任意名称的 .sh 脚本,粘贴源码内容后通过 bash 指令手动执行。
关于报错 Command not found #
此报错是由于系统没有安装 curl 软件包导致,安装命令如下
Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin
新装系统需要先执行一遍更新 apt-get update
Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS
假如系统原有软件源是无效的导致安装不上 curl 软件包,那么对于 Linux 初学者来说可能会比较麻烦,这里提供几个在线获取脚本的应急方法
适用于大部分操作系统( Alpine Linux 除外), python3 要是不存在那就再试试 python 指令 python3 -c "import urllib.request; urllib.request.urlretrieve('https://linuxmirrors.cn/main.sh', 'main.sh')"
一般没有预装 curl 软件包的系统也不会预装 wget 软件包,所以大概率这个方法应该是不行的 wget https://linuxmirrors.cn/main.sh
如果可以访问系统 GUI 图像界面和桌面的话那可以直接在浏览器中打开链接下载脚本,很多系统都会预装 Firefox 火狐浏览器
如果以上方法试了都不行,那就复制 源码 至本地新建任意名称的 .sh 脚本,粘贴源码内容后通过 bash 指令手动执行。
备份原有软件源 # 脚本会自动备份原有软件仓库配置文件,备份路径为原有文件或目录的绝对路径加上 .bak 后缀,例如 /etc/apt/sources.list => /etc/apt/sources.list.bak ,当检查到已存在备份内容时会询问是否覆盖备份。
脚本会自动备份原有软件仓库配置文件,备份路径为原有文件或目录的绝对路径加上 .bak 后缀,例如 /etc/apt/sources.list => /etc/apt/sources.list.bak ,当检查到已存在备份内容时会询问是否覆盖备份。
还原已备份的软件源 # 点击展开查看 Debian 系 / openKylin RedHat 系 / openEuler / OpenCloudOS / Anolis OS openSUSE Arch Linux / Manjaro Alpine Linux Gentoo NixOS 传统格式 DEB822 格式 cp -rf /etc/apt/sources.list.bak /etc/apt/sources.list apt-get update system_name = " $( lsb_release -is | tr '[:upper:]' '[:lower:]' ) " cp -rf "/etc/apt/sources.list.d/ ${ system_name } .sources.bak" "/etc/apt/sources.list.d/ ${ system_name } .sources" apt-get update Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin cp -rf /etc/yum.repos.d.bak /etc/yum.repos.d yum makecache Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS cp -rf /etc/zypp/repos.d.bak /etc/zypp/repos.d zypper ref cp -rf /etc/pacman.d/mirrorlist.bak /etc/pacman.d/mirrorlist pacman -Sy cp -rf /etc/apk/repositories.bak /etc/apk/repositories apk update -f cp -rf /etc/portage/make.conf.bak /etc/portage/make.conf [ -d /etc/portage/repos.conf ] && cp -rf /etc/portage/repos.conf/gentoo.conf.bak /etc/portage/repos.conf/gentoo.conf emerge --sync --quiet cp -rf /etc/nix/nix.conf.bak /etc/nix/nix.conf
Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin
Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS
关于开启 SSH 远程登录的方法 # 点击展开查看 命令以及配置步骤仅供参考,注意灵活变通 验证是否已安装 SSH 服务 ls /etc | grep ssh 如果没有这个文件夹说明系统未安装 SSH 服务,你需要通过包管理工具安装 openssh-server 软件包,安装命令如下: Debian 系 / openKylin RedHat 系 / openEuler / OpenCloudOS / Anolis OS openSUSE Arch Linux / Manjaro Alpine Linux Gentoo apt-get install -y openssh-server Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin 新装系统需要先执行一遍更新 apt-get update dnf install -y openssh-server || yum install -y openssh-server Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS zypper install openssh-server pacman -S openssh apk --no-cache add -f openssh emerge --ask --changed-use --oneshot net-misc/openssh 不同系统上的软件包名称有所差异,如果提示找不到该软件包可尝试使用通配符 openssh* 进行安装 配置 SSH 服务 允许 root 账户登录 cat /etc/ssh/sshd_config | grep -Eq "^[# ]?PermitRootLogin " ; [ $? -eq 0 ] && sed -i 's/^[# ]\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config || echo -e "\nPermitRootLogin yes" >> /etc/ssh/sshd_config 启用密码认证 cat /etc/ssh/sshd_config | grep -Eq "^[# ]?PasswordAuthentication " ; [ $? -eq 0 ] && sed -i 's/^[# ]\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config || echo -e "\nPasswordAuthentication yes" >> /etc/ssh/sshd_config 启动/重启 SSH 服务 for ssh_svc in sshd ssh ; do systemctl restart " ${ ssh_svc } " 2 >/dev/null && break ; systemctl enable --now " ${ ssh_svc } " 2 >/dev/null && break ; done 友情提示:如果你正在使用公网服务器,建议关闭 SSH 密码认证方式并设置密钥登录。
关于开启 SSH 远程登录的方法 #
命令以及配置步骤仅供参考,注意灵活变通
验证是否已安装 SSH 服务 ls /etc | grep ssh 如果没有这个文件夹说明系统未安装 SSH 服务,你需要通过包管理工具安装 openssh-server 软件包,安装命令如下: Debian 系 / openKylin RedHat 系 / openEuler / OpenCloudOS / Anolis OS openSUSE Arch Linux / Manjaro Alpine Linux Gentoo apt-get install -y openssh-server Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin 新装系统需要先执行一遍更新 apt-get update dnf install -y openssh-server || yum install -y openssh-server Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS zypper install openssh-server pacman -S openssh apk --no-cache add -f openssh emerge --ask --changed-use --oneshot net-misc/openssh 不同系统上的软件包名称有所差异,如果提示找不到该软件包可尝试使用通配符 openssh* 进行安装
如果没有这个文件夹说明系统未安装 SSH 服务,你需要通过包管理工具安装 openssh-server 软件包,安装命令如下:
Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin
新装系统需要先执行一遍更新 apt-get update
Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS
不同系统上的软件包名称有所差异,如果提示找不到该软件包可尝试使用通配符 openssh* 进行安装
配置 SSH 服务 允许 root 账户登录 cat /etc/ssh/sshd_config | grep -Eq "^[# ]?PermitRootLogin " ; [ $? -eq 0 ] && sed -i 's/^[# ]\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config || echo -e "\nPermitRootLogin yes" >> /etc/ssh/sshd_config 启用密码认证 cat /etc/ssh/sshd_config | grep -Eq "^[# ]?PasswordAuthentication " ; [ $? -eq 0 ] && sed -i 's/^[# ]\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config || echo -e "\nPasswordAuthentication yes" >> /etc/ssh/sshd_config
启动/重启 SSH 服务 for ssh_svc in sshd ssh ; do systemctl restart " ${ ssh_svc } " 2 >/dev/null && break ; systemctl enable --now " ${ ssh_svc } " 2 >/dev/null && break ; done
友情提示:如果你正在使用公网服务器,建议关闭 SSH 密码认证方式并设置密钥登录。
关于未显示方向键交互控制界面 # 如果发现交互界面是输入而不是新式的方向键控制,那么请自行安装 ncurses 或 nano 软件包,新式的按键交互依赖 tput 指令实现。
关于未显示方向键交互控制界面 #
如果发现交互界面是输入而不是新式的方向键控制,那么请自行安装 ncurses 或 nano 软件包,新式的按键交互依赖 tput 指令实现。
关于未启用的软件源仓库 # 很多系统的软件源会启用多个软件仓库配置,脚本遵循系统默认设置,默认不启用的软件源(仓库)不会在运行完本脚本后被启用,但是它们也随脚本更换了目标软件源(镜像站)地址,具体启用方法如下: Debian 系 / openKylin RedHat 系 / openEuler / OpenCloudOS / Anolis OS openSUSE 默认禁用了 deb-src 源码仓库和 proposed 预发布软件源,若需启用请将 /etc/apt/sources.list 文件中相关内容的所在行取消注释 Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin 部分仓库默认没有启用,若需启用请将 /etc/yum.repos.d 目录下相关 repo 文件中的 enabled 值修改为 1 Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS 部分仓库默认没有启用,若需启用请将 /etc/zypp/repos.d 目录下相关 repo 文件中的 enabled 值修改为 1
很多系统的软件源会启用多个软件仓库配置,脚本遵循系统默认设置,默认不启用的软件源(仓库)不会在运行完本脚本后被启用,但是它们也随脚本更换了目标软件源(镜像站)地址,具体启用方法如下:
默认禁用了 deb-src 源码仓库和 proposed 预发布软件源,若需启用请将 /etc/apt/sources.list 文件中相关内容的所在行取消注释
Debian Ubuntu Kali Linux Mint Deepin Zorin OS Armbian Proxmox VE Raspberry Pi OS openKylin
部分仓库默认没有启用,若需启用请将 /etc/yum.repos.d 目录下相关 repo 文件中的 enabled 值修改为 1
Red Hat Enterprise Linux CentOS Rocky Linux AlmaLinux Fedora openEuler OpenCloudOS Anolis OS
部分仓库默认没有启用,若需启用请将 /etc/zypp/repos.d 目录下相关 repo 文件中的 enabled 值修改为 1
其它 # 关于调用脚本的互联网位置 项目利用 GitHub Action 在每次提交后自动拷贝源码到文档目录作为网站资源发布,网站托管于 Netlify ,几乎没有被劫持的风险请放心使用。 当然你也可以使用代码托管仓库的原始地址来调用,这里只是想告诉你为什么会有几个不同的地址,默认的官网地址更易于记忆和访问。 关于软件源下载速度问题 首先,在 软件源列表 的使用帮助处有写使用推荐,这是根据以往经验总结出来的,但总有用户在纠结软件源速度的问题。 软件源(镜像站)的网络延迟即 Ping 与下载速度没有太大的关联,双方地理位置间隔的远近不代表实际体验,有些镜像站下行总带宽很高但实际测速却并不理想,因为这与镜像站的负载策略有关。 网上也有很多基于 C、Python 编写的镜像站测速开源脚本,而本项目脚本基于 Bash Shell 编写且不依赖任何第三方库,Bash 是 Linux 运维中最常用的脚本语言并且绝大部分发行版都会预装,这意味着用户不需要安装任何环境就能直接运行,这种便利性是其它高级语言无法替代的,不过目前来看 Bash 脚本可能不太容易实现精准测速的功能,使用其它高级语言编写测速功能无疑是造轮子的行为。 关于软件源选优 很多朋友可能都会有一个疑问:“既然脚本已经如此便捷且实现了高度自动化,为什么不能实现软件源自动选优呢?”,不是做不到而是不能。 “软件源选优” 在这里指的是脚本根据客户端的网络环境、地理位置自动选择一个体验最佳的软件源,这个问题要从多个角度来论证: 速度方面 其实上面已经解释过了,总结来说就是追求速度不是普遍需求,对大多数人来说是无感的、能用即可,况且现在很多 Linux 发行版不需要换源就有不错的速度。 对于镜像站本身 举个最简单的例子,以前阿里云镜像站因为速度快、可用性高几乎被当成首选,但是随着用户越来越多导致速度变的原来越慢甚至可能不足 10 Mbps。 长此以往,那些用户多的镜像站可能无法承受过高的流量而导致体验下降,用户少的镜像站可能会最终走向关闭,这不利于整个生态的发展。 开发者角度 本项目站在运维工具的角度致力于开发一个通用的换源脚本,而不是一个解决软件源需求的具体化工具,要使脚本的默认行为适用于大多数用户群体。作为运维工具要有明确的功能定位,作为脚本要从扩展性、实用性等多个方面去衡量利弊,软件源的选择权应该完全交给用户。
项目利用 GitHub Action 在每次提交后自动拷贝源码到文档目录作为网站资源发布,网站托管于 Netlify ,几乎没有被劫持的风险请放心使用。
当然你也可以使用代码托管仓库的原始地址来调用,这里只是想告诉你为什么会有几个不同的地址,默认的官网地址更易于记忆和访问。
首先,在 软件源列表 的使用帮助处有写使用推荐,这是根据以往经验总结出来的,但总有用户在纠结软件源速度的问题。
软件源(镜像站)的网络延迟即 Ping 与下载速度没有太大的关联,双方地理位置间隔的远近不代表实际体验,有些镜像站下行总带宽很高但实际测速却并不理想,因为这与镜像站的负载策略有关。
网上也有很多基于 C、Python 编写的镜像站测速开源脚本,而本项目脚本基于 Bash Shell 编写且不依赖任何第三方库,Bash 是 Linux 运维中最常用的脚本语言并且绝大部分发行版都会预装,这意味着用户不需要安装任何环境就能直接运行,这种便利性是其它高级语言无法替代的,不过目前来看 Bash 脚本可能不太容易实现精准测速的功能,使用其它高级语言编写测速功能无疑是造轮子的行为。
很多朋友可能都会有一个疑问:“既然脚本已经如此便捷且实现了高度自动化,为什么不能实现软件源自动选优呢?”,不是做不到而是不能。
“软件源选优” 在这里指的是脚本根据客户端的网络环境、地理位置自动选择一个体验最佳的软件源,这个问题要从多个角度来论证:
速度方面 其实上面已经解释过了,总结来说就是追求速度不是普遍需求,对大多数人来说是无感的、能用即可,况且现在很多 Linux 发行版不需要换源就有不错的速度。
其实上面已经解释过了,总结来说就是追求速度不是普遍需求,对大多数人来说是无感的、能用即可,况且现在很多 Linux 发行版不需要换源就有不错的速度。
对于镜像站本身 举个最简单的例子,以前阿里云镜像站因为速度快、可用性高几乎被当成首选,但是随着用户越来越多导致速度变的原来越慢甚至可能不足 10 Mbps。 长此以往,那些用户多的镜像站可能无法承受过高的流量而导致体验下降,用户少的镜像站可能会最终走向关闭,这不利于整个生态的发展。
举个最简单的例子,以前阿里云镜像站因为速度快、可用性高几乎被当成首选,但是随着用户越来越多导致速度变的原来越慢甚至可能不足 10 Mbps。 长此以往,那些用户多的镜像站可能无法承受过高的流量而导致体验下降,用户少的镜像站可能会最终走向关闭,这不利于整个生态的发展。
开发者角度 本项目站在运维工具的角度致力于开发一个通用的换源脚本,而不是一个解决软件源需求的具体化工具,要使脚本的默认行为适用于大多数用户群体。作为运维工具要有明确的功能定位,作为脚本要从扩展性、实用性等多个方面去衡量利弊,软件源的选择权应该完全交给用户。
本项目站在运维工具的角度致力于开发一个通用的换源脚本,而不是一个解决软件源需求的具体化工具,要使脚本的默认行为适用于大多数用户群体。作为运维工具要有明确的功能定位,作为脚本要从扩展性、实用性等多个方面去衡量利弊,软件源的选择权应该完全交给用户。
软件源完整格式 <WEB协议>://<软件源地址(域名或IP)>/<软件源仓库(路径)>
指定软件源地址 # bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --source mirror.example.com
指定软件源仓库目录 # 这里描述的软件源仓库与系统软件仓库不同,指的是软件源(镜像站)地址后面的路径即镜像站的仓库目录,虽然名义上都是仓库但是非常容易混淆 主要使用场景:目标镜像站有对应的系统镜像仓库但是不符合本项目脚本关于软件源仓库设置的默认规则 项目对于各操作系统所使用的默认仓库名称(点击展开查看) 项目脚本为了适配大的环境不会针对某一镜像站独特的仓库名称而单独适配 SYSTEM NAMES Debian debian debian-archive Ubuntu ubuntu ubuntu-ports Kali Linux kali Linux Mint linuxmint ubuntu ubuntu-ports debian Deepin deepin Zorin OS ubuntu ubuntu-ports Armbian armbian Proxmox VE proxmox Raspberry Pi OS raspberrypi raspbian debian debian-archive Red Hat Enterprise Linux centos centos-stream centos-altarch centos-vault Fedora fedora fedora-archive CentOS centos centos-stream centos-altarch centos-vault Rocky Linux rocky AlmaLinux almalinux almalinux-vault Oracle Linux centos-stream openEuler openeuler OpenCloudOS opencloudos openKylin openkylin Anolis OS anolis openSUSE opensuse Arch Linux archlinux archlinuxarm Manjaro manjaro EndeavourOS endeavouros Alpine Linux alpine Gentoo gentoo gentoo-portage NixOS nix-channels Void Linux voidlinux 请看下面的例子 使用阿里云镜像站的 Rocky Linux 软件源 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --source mirrors.aliyun.com \ --branch rockylinux 阿里云镜像站的 Rocky Linux 仓库目录名称为 rockylinux ,不符合默认规则 rocky ,但是可以通过命令选项绕过脚本默认规则来实现。 部分系统会同时配置多个仓库的软件源,具体详见命令选项 由于软件源仓库作用在软件源地址上因此也可以使用多级路径,例如 --branch "linux/debian" -> https://mirrors.example.com/linux/debian
这里描述的软件源仓库与系统软件仓库不同,指的是软件源(镜像站)地址后面的路径即镜像站的仓库目录,虽然名义上都是仓库但是非常容易混淆
主要使用场景:目标镜像站有对应的系统镜像仓库但是不符合本项目脚本关于软件源仓库设置的默认规则
项目脚本为了适配大的环境不会针对某一镜像站独特的仓库名称而单独适配
阿里云镜像站的 Rocky Linux 仓库目录名称为 rockylinux ,不符合默认规则 rocky ,但是可以通过命令选项绕过脚本默认规则来实现。
部分系统会同时配置多个仓库的软件源,具体详见命令选项
由于软件源仓库作用在软件源地址上因此也可以使用多级路径,例如 --branch "linux/debian" -> https://mirrors.example.com/linux/debian
单独更换 EPEL 源 # EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 组织维护的一个附加软件包仓库,它主要适用于除 Fedora 操作系统以外的红帽系 Linux 发行版,配置 EPEL 仓库已成为广大用户的普遍需求,建议默认安装它 有些时候你会发现想使用的镜像站没有 EPEL 仓库,那么你可以在第一次运行脚本时不安装或更换 EPEL 源然后再单独执行下面的命令 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --only-epel 对于已经 EOL 的 EPEL 7,注意需要使用 archive 仓库,境外以及海外网络环境建议通过命令选项 --use-official-source-epel true 使用官方源
EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 组织维护的一个附加软件包仓库,它主要适用于除 Fedora 操作系统以外的红帽系 Linux 发行版,配置 EPEL 仓库已成为广大用户的普遍需求,建议默认安装它
有些时候你会发现想使用的镜像站没有 EPEL 仓库,那么你可以在第一次运行脚本时不安装或更换 EPEL 源然后再单独执行下面的命令
对于已经 EOL 的 EPEL 7,注意需要使用 archive 仓库,境外以及海外网络环境建议通过命令选项 --use-official-source-epel true 使用官方源
恢复使用官方源 # 当你不小心删除了官方源的备份时可以使用此命令来恢复,使用此命令选项后将跳过选择软件源步骤 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --use-official-source true 部分系统不存在官方源例如 Arch Linux ,届时会自动更换成兼容性较高的阿里云镜像站
当你不小心删除了官方源的备份时可以使用此命令来恢复,使用此命令选项后将跳过选择软件源步骤
部分系统不存在官方源例如 Arch Linux ,届时会自动更换成兼容性较高的阿里云镜像站
特定系统的使用示例 # 关于 CentOS 停服问题 # 脚本对于已经 EOL 的 CentOS 7/8、CentOS Stream 8 进行了适配 国内环境 正常使用脚本,没有额外操作,因为国内大部分镜像站都已同步 CentOS Vault 仓库 境外以及海外环境 建议使用 腾讯云 或 阿里云 镜像站,或者通过 --use-official-source true 命令选项使用官方源 另外 EPEL 7 也进入了 EOL,脚本同样对其进行了适配 指定 GNU/Linux Debian 操作系统的 Security 源 # 如果你想尽可能提高服务器的安全性则建议使用官方源,因为镜像同步存在延迟 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --source-security security.debian.org \ --branch-security debian-security 指定 Debian 系 Linux 操作系统的版本代号 # 大多数情况下自定义版本代号用于更换系统版本,请看下面的例子 升级 GNU/Linux Debian 至 13 "trixie" 将 GNU/Linux Debian 的版本切换到测试分支 更换版本代号 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --codename trixie \ --upgrade-software false 禁用 backports 仓库 sed -i '/backports/s/^/# /' /etc/apt/sources.list 升级系统 apt-get update apt-get dist-upgrade 在升级完成并重新引导系统后执行以下步骤 # 清空原有软件源(如有非系统软件源内容请先自行手动备份) sed -i '1,$d' /etc/apt/sources.list # 重新执行换源脚本 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --codename testing \ --upgrade-software false 若脚本无法实现指定版本代号,你也可以在执行脚本后手动替换 sed -i "s/ $( lsb_release -cs ) /指定版本代号/g" /etc/apt/sources.list 更换 Ubuntu EOL版本软件源 # EOL 为生命周期结束的缩写(End Of Life),Ubuntu 迭代速度较快一般非LTS(长期支持)版本的生命周期只有9个月。官方会定期从主仓库移除不在生命周期内的版本仓库目录,届时可能就需要使用镜像站的 Ubuntu Old Releases 仓库 具体版本支持情况详见官方 Wiki ,关于 Ubuntu Old Releases 仓库的支持情况详见各镜像站 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --source mirrors.ustc.edu.cn \ --branch ubuntu-old-releases Arch Linux 使用中文社区仓库 # 本项目脚本当前不支持该额外仓库,由于使用人数较少等原因暂不考虑适配,若想使用请参考下方的一键配置命令 SOURCE = "https://mirrors.aliyun.com/archlinuxcn" # 指定软件源地址 grep -q "\[archlinuxcn\]" /etc/pacman.conf || echo -e "[archlinuxcn]\nServer = ${ SOURCE } /\$arch" >>/etc/pacman.conf # 一键配置命令
关于 CentOS 停服问题 # 脚本对于已经 EOL 的 CentOS 7/8、CentOS Stream 8 进行了适配 国内环境 正常使用脚本,没有额外操作,因为国内大部分镜像站都已同步 CentOS Vault 仓库 境外以及海外环境 建议使用 腾讯云 或 阿里云 镜像站,或者通过 --use-official-source true 命令选项使用官方源 另外 EPEL 7 也进入了 EOL,脚本同样对其进行了适配
关于 CentOS 停服问题 #
脚本对于已经 EOL 的 CentOS 7/8、CentOS Stream 8 进行了适配
国内环境 正常使用脚本,没有额外操作,因为国内大部分镜像站都已同步 CentOS Vault 仓库
正常使用脚本,没有额外操作,因为国内大部分镜像站都已同步 CentOS Vault 仓库
境外以及海外环境 建议使用 腾讯云 或 阿里云 镜像站,或者通过 --use-official-source true 命令选项使用官方源
建议使用 腾讯云 或 阿里云 镜像站,或者通过 --use-official-source true 命令选项使用官方源
另外 EPEL 7 也进入了 EOL,脚本同样对其进行了适配
指定 GNU/Linux Debian 操作系统的 Security 源 # 如果你想尽可能提高服务器的安全性则建议使用官方源,因为镜像同步存在延迟 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --source-security security.debian.org \ --branch-security debian-security
指定 GNU/Linux Debian 操作系统的 Security 源 #
如果你想尽可能提高服务器的安全性则建议使用官方源,因为镜像同步存在延迟
指定 Debian 系 Linux 操作系统的版本代号 # 大多数情况下自定义版本代号用于更换系统版本,请看下面的例子 升级 GNU/Linux Debian 至 13 "trixie" 将 GNU/Linux Debian 的版本切换到测试分支 更换版本代号 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --codename trixie \ --upgrade-software false 禁用 backports 仓库 sed -i '/backports/s/^/# /' /etc/apt/sources.list 升级系统 apt-get update apt-get dist-upgrade 在升级完成并重新引导系统后执行以下步骤 # 清空原有软件源(如有非系统软件源内容请先自行手动备份) sed -i '1,$d' /etc/apt/sources.list # 重新执行换源脚本 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --codename testing \ --upgrade-software false 若脚本无法实现指定版本代号,你也可以在执行脚本后手动替换 sed -i "s/ $( lsb_release -cs ) /指定版本代号/g" /etc/apt/sources.list
指定 Debian 系 Linux 操作系统的版本代号 #
大多数情况下自定义版本代号用于更换系统版本,请看下面的例子
更换版本代号 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --codename trixie \ --upgrade-software false
禁用 backports 仓库 sed -i '/backports/s/^/# /' /etc/apt/sources.list
禁用 backports 仓库
升级系统 apt-get update apt-get dist-upgrade
在升级完成并重新引导系统后执行以下步骤 # 清空原有软件源(如有非系统软件源内容请先自行手动备份) sed -i '1,$d' /etc/apt/sources.list # 重新执行换源脚本 bash < ( curl -sSL https://linuxmirrors.cn/main.sh )
在升级完成并重新引导系统后执行以下步骤
更换 Ubuntu EOL版本软件源 # EOL 为生命周期结束的缩写(End Of Life),Ubuntu 迭代速度较快一般非LTS(长期支持)版本的生命周期只有9个月。官方会定期从主仓库移除不在生命周期内的版本仓库目录,届时可能就需要使用镜像站的 Ubuntu Old Releases 仓库 具体版本支持情况详见官方 Wiki ,关于 Ubuntu Old Releases 仓库的支持情况详见各镜像站 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --source mirrors.ustc.edu.cn \ --branch ubuntu-old-releases
更换 Ubuntu EOL版本软件源 #
EOL 为生命周期结束的缩写(End Of Life),Ubuntu 迭代速度较快一般非LTS(长期支持)版本的生命周期只有9个月。官方会定期从主仓库移除不在生命周期内的版本仓库目录,届时可能就需要使用镜像站的 Ubuntu Old Releases 仓库
具体版本支持情况详见官方 Wiki ,关于 Ubuntu Old Releases 仓库的支持情况详见各镜像站
Arch Linux 使用中文社区仓库 # 本项目脚本当前不支持该额外仓库,由于使用人数较少等原因暂不考虑适配,若想使用请参考下方的一键配置命令 SOURCE = "https://mirrors.aliyun.com/archlinuxcn" # 指定软件源地址 grep -q "\[archlinuxcn\]" /etc/pacman.conf || echo -e "[archlinuxcn]\nServer = ${ SOURCE } /\$arch" >>/etc/pacman.conf # 一键配置命令
Arch Linux 使用中文社区仓库 #
本项目脚本当前不支持该额外仓库,由于使用人数较少等原因暂不考虑适配,若想使用请参考下方的一键配置命令
国际化(I18n) # 脚本提供多语言支持,当前内置 简体中文 、 繁體中文 、 English 共三种显示语言,默认为 简体中文 指定语言 # bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --lang xxx 类型 值 简体中文 zh-hans zh-cn zh 繁體中文 zh-hant zh-tw zh-hk English en en-us 也可以直接作为命令选项使用 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --en --en --en-us --zh --zh-cn --zh-hans --zh-hant 通过交互进行选择 # bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --lang auto
脚本提供多语言支持,当前内置 简体中文 、 繁體中文 、 English 共三种显示语言,默认为 简体中文
指定语言 # bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --lang xxx 类型 值 简体中文 zh-hans zh-cn zh 繁體中文 zh-hant zh-tw zh-hk English en en-us 也可以直接作为命令选项使用 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --en --en --en-us --zh --zh-cn --zh-hans --zh-hant
--en --en-us --zh --zh-cn --zh-hans --zh-hant
通过交互进行选择 # bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --lang auto
无人值守(自动化) # 不通过交互完成换源操作,至少需要使用如下命令选项来实现,建议熟悉后再使用 参考命令 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) \ --source mirror.example.com \ --protocol http \ --use-intranet-source false \ --install-epel true \ --backup true \ --upgrade-software false \ --clean-cache false \ --ignore-backup-tips 如果报错 命令选项无效 那么请检查选项合法性以及空格字符编码,在示例中一行写一个选项是为了提高命令的可读性
不通过交互完成换源操作,至少需要使用如下命令选项来实现,建议熟悉后再使用
如果报错 命令选项无效 那么请检查选项合法性以及空格字符编码,在示例中一行写一个选项是为了提高命令的可读性
纯净模式 # 推出该功能是为了便于开发以及运维人员使用,启用后会精简脚本内容输出,建议搭配其它命令选项无交互使用 bash < ( curl -sSL https://linuxmirrors.cn/main.sh ) --pure-mode 滚动输出的命令日志可能存在无法预料的显示问题,不过目前暂未发现异常
推出该功能是为了便于开发以及运维人员使用,启用后会精简脚本内容输出,建议搭配其它命令选项无交互使用
滚动输出的命令日志可能存在无法预料的显示问题,不过目前暂未发现异常
额外提供一个精简版本,是主脚本的复制,面向企业产品、开源项目使用,具有以下特性:
单一显示语言 English ,无 I18n 国际化功能
默认使用官方源,去除了交互选择内置软件源功能
请熟悉本项目后再使用,不建议新手用户使用
如果你是其它项目的开发者希望通过本项目来制作专属脚本那么请参考下面提到的内容,目前已经有国内教育单位镜像站的维护者这样做了。
首先不建议修改代码的底层逻辑,应尽量与本项目源码保持同步,脚本内容执行顺序由 main 函数控制,代码逻辑清晰
你可以简单去除一些无关内容,例如将软件源列表(数组) mirror_list_(default|edu|abroad|extranet|intranet) 中的内容删除,例: mirror_list_default=()
如果你想定制脚本打印内容可直接修改 run_start run_end print_title 这三个函数中的内容
如果你想添加自定义 Shell 内容详见 main 函数中脚本执行顺序,可以在对应位置直接插入内容也可以封装函数后调用
如果你想要缩减脚本体积那么可以删除一些不必要的内容,除了上面提到的软件源列表还有一些涉及脚本工作的部分模块内容,具体如下: 首先在删除内容时应尽可能保留脚本原始结构,直接把涉及函数中的内容删除即可,使其保留为空函数 可以删除一些不使用(操作系统)的软件源原始内容 gen_repo_files_xxx ,这些内容占据了脚本 60% 以上的体积 如果你不使用某些功能那么可以删除对应功能模块函数中的内容, 命令选项 handle_command_options 、 备份原有软件源 backup_original_mirrors 、 更新软件包 upgrade_software 移除不需要的语言包,例: function msg_pack_en() { :; }
首先在删除内容时应尽可能保留脚本原始结构,直接把涉及函数中的内容删除即可,使其保留为空函数
可以删除一些不使用(操作系统)的软件源原始内容 gen_repo_files_xxx ,这些内容占据了脚本 60% 以上的体积
如果你不使用某些功能那么可以删除对应功能模块函数中的内容, 命令选项 handle_command_options 、 备份原有软件源 backup_original_mirrors 、 更新软件包 upgrade_software
移除不需要的语言包,例: function msg_pack_en() { :; }
脚本主要功能配置是由统一的变量控制的,命令选项亦是如此,这些全局变量由全大写字母构成并遵循下划线命名法,具体变量详见如下表格,你只需要将这些变量声明在脚本头部(预留注释区域)即可快速完成定制
部分变量存在默认值,未涉及的变量无需声明为空值(空字符串),另外如果对应功能配置不存在那么就可能会出现交互