使用方法
如果您觉得这个项目不错对您有所帮助的话,请点击仓库右上角的 Star 并分享给更多的朋友
一键执行命令#
选项卡分别代表脚本内置软件源类型和获取脚本途径,请在使用前检查目标镜像站是否支持您所使用的操作系统,可以在软件源列表中查看具体有哪些软件源。
-
注意事项#
-
需使用
ROOT
用户执行脚本
切换命令为
sudo -i
或su root
。不同系统使用的命令不同,因为有些系统没有在初始安装时为 ROOT 账户设置密码(例如 Ubuntu),故需要使用sudo -i
命令来切换至 ROOT -
建议使用
SSH
远程工具
如果你使用的系统终端界面无法正常显示中文内容那么将导致无法查看交互内容。部分系统会自动开启 SSH 服务,否则请参考 关于开启 SSH 远程登录的方法
-
如果是在新系统上首次执行脚本
当前执行方式依赖
curl
指令获取脚本内容并执行,但部分操作系统没有预装此软件包,届时则会报错Command not found
,安装方法详见下方 关于报错 Command not found。还可自行复制源码至本地新建任意名称的.sh
脚本,粘贴源码内容后通过bash
指令手动执行
-
-
常见问题#
-
关于报错 Command not found#
此报错是因为系统没有预装
curl
软件包,下面是安装命令Debian
Ubuntu
Kali
Linux Mint
Deepin
Zorin OS
Armbian
Proxmox
openKylin
新装系统需要先执行一遍更新
apt-get update
Red Hat Enterprise Linux
CentOS
Rocky Linux
AlmaLinux
Fedora
OpenCloudOS
openEuler
Anolis OS
安装不上?(点击展开查看其它解决方法)
假如有这么一种情况:系统原有软件源是坏的安装不上
curl
软件包,那么对于 Linux 初学者来说可能会比较麻烦,这里提供两个在线获取脚本的应急方法,否则就只能手动复制粘贴源代码了之后再执行
bash linuxmirrors-main.sh
即可 -
关于开启 SSH 远程登录的方法#
-
验证是否已安装
SSH
服务如果没有这个文件夹说明系统未安装
SSH
服务,你需要通过包管理工具安装openssh
软件包 -
设置允许 Root 用户登录
-
设置密码认证
-
启动/重启
SSH
服务
命令仅供参考,只适配了部分常见发行版
-
-
还原已备份的软件源#
Debian
Ubuntu
Kali
Linux Mint
Deepin
Zorin OS
Armbian
Proxmox
openKylin
Red Hat Enterprise Linux
CentOS
Rocky Linux
AlmaLinux
Fedora
OpenCloudOS
openEuler
Anolis OS
-
其它#
- 如果提示
bash: /proc/self/fd/11: No such file or directory
,请切换至Root
用户执行,切换命令为sudo -i
或su root
- 如果提示
-
-
关于调用脚本的互联网位置#
项目利用 GitHub Action 在每次提交后自动拷贝源码到文档目录作为网站资源发布,网站托管于知名 CDN 云服务商几乎没有被劫持的风险可放心使用
当然你也可以使用代码托管仓库的原始地址来调用,这里只是想告诉你为什么会有三个不同的地址,默认的 CDN 地址更易于访问和记忆
-
关于未启用的软件源#
脚本遵循系统默认设置即没有启用的软件源(仓库)不会在运行完本脚本后被启用,但是它们也随脚本更换了目标软件源地址,如果你有使用需求请阅读下面的启用方法
默认禁用了
deb-src
源码仓库和proposed
预发布软件源,若需启用请将/etc/apt/sources.list
文件中相关内容的所在行取消注释Debian
Ubuntu
Kali
Linux Mint
Deepin
Zorin OS
Armbian
Proxmox
openKylin
部分仓库默认没有启用,若需启用请将
/etc/yum.repos.d
目录下相关 repo 文件中的enabled
值修改为1
Red Hat Enterprise Linux
CentOS
Rocky Linux
AlmaLinux
Fedora
OpenCloudOS
openEuler
Anolis OS
部分仓库默认没有启用,若需启用请将
/etc/zypp/repos.d
目录下相关 repo 文件中的enabled
值修改为1
命令选项(高级用法)#
名称 | 含义 | 选项值 |
---|---|---|
--abroad |
使用境外以及海外软件源 | 无 |
--edu |
使用中国大陆教育网软件源 | 无 |
--source |
指定软件源地址(域名或IP) | 地址 |
--source-epel |
指定 EPEL 附加软件包仓库的软件源地址(域名或IP) | 地址 |
--source-security |
指定 Debian 系统 security 仓库的软件源地址(域名或IP) | 地址 |
--source-vault |
指定 CentOS/AlmaLinux 系统 vault 仓库的软件源地址(域名或IP) | 地址 |
--source-portage |
指定 Gentoo 系统 portage 仓库的软件源地址(域名或IP) | 地址 |
--source-base-system |
指定 Linux Mint 系统底层系统的软件源地址(域名或IP) | 地址 |
--branch |
指定软件源分支(路径) | 分支名 |
--branch-epel |
指定 EPEL 附加软件包仓库的软件源分支(路径) | 分支名 |
--branch-security |
指定 Debian 系统 security 仓库的软件源分支(路径) | 分支名 |
--branch-vault |
指定 CentOS/AlmaLinux 系统 vault 仓库的软件源分支(路径) | 分支名 |
--branch-portage |
指定 Gentoo 系统 portage 仓库的软件源分支(路径) | 分支名 |
--branch-base-system |
指定 Linux Mint 系统底层系统的软件源分支(路径) | 分支名 |
--codename |
指定 Debian 系 / openKylin 操作系统的版本代号 | 代号名称 |
--protocol |
指定 WEB 协议 | http 或 https |
--use-intranet-source |
是否优先使用内网软件源地址 | true 或 false |
--use-official-source |
是否使用目标操作系统的官方软件源 | true 或 false |
--install-epel |
是否安装 EPEL 附加软件包 | true 或 false |
--backup |
是否备份原有软件源 | true 或 false |
--upgrade-software |
是否更新软件包 | true 或 false |
--clean-cache |
是否清理下载缓存 | true 或 false |
--clean-screen |
是否在运行前清除屏幕上的所有内容 | true 或 false |
--print-diff |
是否打印源文件修改前后差异 | true 或 false |
--only-epel |
仅更换 EPEL 软件源模式 | 无 |
--ignore-backup-tips |
忽略覆盖备份提示(即不覆盖备份) | 无 |
--help |
查看帮助菜单 | 无 |
软件源格式
<WEB协议>://<软件源地址>/<软件源分支>
接下来是一些高级用法的举例
-
指定软件源地址#
-
指定软件源仓库分支#
主要使用场景:目标镜像站有对应的系统镜像但是不符合本项目脚本关于软件源分支设置的默认规则
项目默认使用的系统分支名称(点击展开查看)
项目脚本为了适配大的环境不会针对某一镜像站独特的镜像分支名称而单独适配
请看下面的例子
使用阿里云镜像站的 Rocky Linux 软件源bash <(curl -sSL https://linuxmirrors.cn/main.sh) \ --source mirrors.aliyun.com \ --branch rockylinux
阿里云镜像站的 Rocky Linux 镜像分支名称为
rockylinux
,不符合默认规则,但是可以通过命令选项绕过脚本默认规则来实现。部分系统会同时配置多个仓库的软件源,具体详见命令选项
-
单独更换 EPEL 源#
EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 组织维护的一个附加软件包仓库,它主要适用于除 Fedora 操作系统以外的红帽系 Linux 发行版,配置 EPEL 仓库已成为广大用户的普遍需求,建议默认安装它
有些时候你会发现想使用的镜像站没有 epel 镜像仓库,那么你可以在第一次运行脚本时不安装或更换 epel 源然后再单独执行下面的命令
-
恢复使用官方源#
当你不小心删除了官方源的备份时可以使用此命令来恢复,使用此命令选项后将跳过选择软件源步骤
部分系统不存在官方源例如
Arch Linux
,届时会自动更换成兼容性较高的阿里云镜像站 -
自定义 Debian Security 源#
如果你想尽可能提高服务器的安全性则建议使用官方源,因为镜像同步存在延迟
-
指定 Debian 系 Linux 操作系统的版本代号#
大多数情况下自定义版本代号用于更换系统版本,请看下面的例子
更换软件源后还需要执行系统更新命令
apt-get dist-upgrade
,并且建议在更新完成并重启系统后重新执行本换源脚本,因为仅更换软件源配置中的系统版本代号可能会在后期使用时产生一些兼容性问题 -
更换 Ubuntu EOF版本软件源#
EOF 为生命周期结束的缩写(End Of Life),Ubuntu 迭代速度较快一般非长期支持(LTS)版本的生命周期只有9个月。官方会定期从主仓库移除不在生命周期内的版本仓库目录,届时可能就需要使用镜像站的
Ubuntu Old Releases
分支具体版本支持情况详见官方 Wiki,关于
Ubuntu Old Releases
分支的支持情况详见各镜像站 -
无人值守(自动化)#
不通过交互完成换源操作,至少需要使用如下命令选项来实现,建议熟悉后再使用
定制脚本#
如果你是其它项目的开发者希望通过本项目来制作专属脚本那么请参考下面提到的内容,目前已经有国内教育单位镜像站的维护者这样做了。
- 首先不建议修改代码的底层逻辑,应尽量与本项目源码保持同步,脚本内容执行顺序由
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
- 脚本主要功能配置是由统一的变量控制的,命令选项亦是如此,这些全局变量由全大写字母构成并遵循下划线命名法,具体变量详见如下表格,你只需要将这些变量声明在脚本头部(预留注释区域)即可快速完成定制
变量名 | 含义 | 值类型 |
---|---|---|
SOURCE |
指定软件源地址(域名或IP) | 地址 |
SOURCE_EPEL |
指定 EPEL 附加软件包仓库的软件源地址(域名或IP) | 地址 |
SOURCE_SECURITY |
指定 Debian 系统 security 仓库的软件源地址(域名或IP) | 地址 |
SOURCE_VAULT |
指定 CentOS/AlmaLinux 系统 vault 仓库的软件源地址(域名或IP) | 地址 |
SOURCE_PORTAGE |
指定 Gentoo 系统 portage 仓库的软件源地址(域名或IP) | 地址 |
SOURCE_BASE_SYSTEM |
指定 Linux Mint 系统底层系统的软件源地址(域名或IP) | 地址 |
SOURCE_BRANCH |
指定软件源分支(路径) | 分支名 |
SOURCE_EPEL_BRANCH |
指定 EPEL 附加软件包仓库的软件源分支(路径) | 分支名 |
SOURCE_SECURITY_BRANCH |
指定 Debian 系统 security 仓库的软件源分支(路径) | 分支名 |
SOURCE_VAULT_BRANCH |
指定 CentOS/AlmaLinux 系统 vault 仓库的软件源分支(路径) | 分支名 |
SOURCE_PORTAGE_BRANCH |
指定 Gentoo 系统 portage 仓库的软件源分支(路径) | 分支名 |
SOURCE_BASE_SYSTEM_BRANCH |
指定 Linux Mint 系统底层系统的软件源分支(路径) | 分支名 |
DEBIAN_CODENAME |
指定 Debian 系 / openKylin 操作系统的版本代号 | 代号名称 |
USE_OFFICIAL_SOURCE |
是否使用目标操作系统的官方软件源 | true 或 false |
USE_INTRANET_SOURCE |
是否优先使用内网软件源地址 | true 或 false |
WEB_PROTOCOL |
指定 WEB 协议 | http 或 https |
INSTALL_EPEL |
是否安装 EPEL 附加软件包 | true 或 false |
ONLY_EPEL |
仅更换 EPEL 软件源模式 | true 或 false |
BACKUP |
是否备份原有软件源 | true 或 false |
IGNORE_BACKUP_TIPS |
忽略覆盖备份提示(即不覆盖备份) | true 或 false |
UPGRADE_SOFTWARE |
是否更新软件包 | true 或 false |
CLEAN_CACHE |
是否清理下载缓存 | true 或 false |
CLEAN_SCREEN |
是否在运行前清除屏幕上的所有内容 | true 或 false |
PRINT_DIFF |
是否打印源文件修改前后差异 | true 或 false |
部分变量存在默认值,未涉及的变量无需声明为空值(空字符串),另外如果对应功能配置不存在那么就可能会出现交互