新增适配 Gentoo 操作系统

This commit is contained in:
SuperManito
2024-07-31 21:30:10 +08:00
parent 91e9262f67
commit 74cb06dc3f
10 changed files with 303 additions and 153 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash
## Author: SuperManito
## Modified: 2024-07-27
## Modified: 2024-07-31
## License: MIT
## GitHub: https://github.com/SuperManito/LinuxMirrors
## Website: https://linuxmirrors.cn
@@ -165,6 +165,7 @@ SYSTEM_OPENEULER="openEuler"
SYSTEM_OPENSUSE="openSUSE"
SYSTEM_ARCH="Arch"
SYSTEM_ALPINE="Alpine"
SYSTEM_GENTOO="Gentoo"
## 定义系统版本文件
File_LinuxRelease=/etc/os-release
@@ -175,6 +176,7 @@ File_OpenCloudOSRelease=/etc/opencloudos-release
File_openEulerRelease=/etc/openEuler-release
File_ArchLinuxRelease=/etc/arch-release
File_AlpineRelease=/etc/alpine-release
File_GentooRelease=/etc/gentoo-release
File_ProxmoxVersion=/etc/pve/.version
## 定义软件源相关文件或目录
@@ -190,12 +192,17 @@ File_ProxmoxSourceList=/etc/apt/sources.list.d/pve-no-subscription.list
File_ProxmoxSourceListBackup=/etc/apt/sources.list.d/pve-no-subscription.list.bak
File_LinuxMintSourceList=/etc/apt/sources.list.d/official-package-repositories.list
File_LinuxMintSourceListBackup=/etc/apt/sources.list.d/official-package-repositories.list.bak
Dir_DebianExtendSource=/etc/apt/sources.list.d
Dir_DebianExtendSourceBackup=/etc/apt/sources.list.d.bak
File_ArchLinuxMirrorList=/etc/pacman.d/mirrorlist
File_ArchLinuxMirrorListBackup=/etc/pacman.d/mirrorlist.bak
File_AlpineRepositories=/etc/apk/repositories
File_AlpineRepositoriesBackup=/etc/apk/repositories.bak
File_GentooMakeConf=/etc/portage/make.conf
File_GentooMakeConfBackup=/etc/portage/make.conf.bak
File_GentooReposConf=/etc/portage/repos.conf/gentoo.conf
File_GentooReposConfBackup=/etc/portage/repos.conf/gentoo.conf.bak
Dir_GentooReposConf=/etc/portage/repos.conf
Dir_DebianExtendSource=/etc/apt/sources.list.d
Dir_DebianExtendSourceBackup=/etc/apt/sources.list.d.bak
Dir_YumRepos=/etc/yum.repos.d
Dir_YumReposBackup=/etc/yum.repos.d.bak
Dir_openSUSERepos=/etc/zypp/repos.d
@@ -238,32 +245,34 @@ function main() {
function handle_command_options() {
## 命令帮助
function output_command_help() {
echo -e "
命令选项(参数名/含义/参数值)
echo -e "\n命令选项(参数名/含义/参数值)
--abroad 使用海外软件源 无
--edu 使用中国大陆教育网软件源 无
--source 指定软件源地址 地址
--source-security 指定 Debian 的 security 软件源地址 地址
--source-vault 指定 CentOS/AlmaLinux 的 vault 软件源地址 地址
--use-official-source 使用操作系统官方软件源
--source 指定软件源地址(域名或IP) 地址
--source-epel 指定 EPEL 附加软件包仓库的软件源地址(域名或IP) 地址
--source-security 指定 Debian 系统 security 仓库的软件源地址(域名或IP) 地址
--source-vault 指定 CentOS/AlmaLinux 系统 vault 仓库的软件源地址(域名或IP) 地址
--source-portage 指定 Gentoo 系统 portage 仓库的软件源地址(域名或IP) 地址
--branch 指定软件源分支(路径) 分支名
--branch-security 指定 Debian 的 security 软件源分支(路径) 分支名
--branch-vault 指定 CentOS/AlmaLinux 的 vault 软件源分支(路径) 分支名
--branch-epel 指定 EPEL 附加软件包仓库的软件源分支(路径) 分支名
--branch-security 指定 Debian 系统 security 仓库的软件源分支(路径) 分支名
--branch-vault 指定 CentOS/AlmaLinux 系统 vault 仓库的软件源分支(路径) 分支名
--branch-portage 指定 Gentoo 系统 portage 仓库的软件源分支(路径) 分支名
--codename 指定 Debian 系操作系统的版本代号 代号名称
--protocol 指定 WEB 协议 http 或 https
--intranet 优先使用内网地址 true 或 false
--install-epel 安装 EPEL 附加软件包 true 或 false
--install-epel 是否安装 EPEL 附加软件包 true 或 false
--close-firewall 是否关闭防火墙 true 或 false
--backup 是否备份原有软件源 true 或 false
--upgrade-software 是否更新软件包 true 或 false
--clean-cache 是否清理下载缓存 true 或 false
--use-intranet-source 优先使用内网软件源地址 无
--use-official-source 使用目标操作系统的官方软件源 无
--only-epel 仅更换 EPEL 软件源模式 无
--close-firewall 关闭防火墙 true 或 false
--backup 备份原有软件源 true 或 false
--ignore-backup-tips 忽略覆盖备份提示 无
--upgrade-software 更新软件包 true 或 false
--clean-cache 清理下载缓存 true 或 false
--print-diff 打印源文件修改前后差异 无
问题报告 https://github.com/SuperManito/LinuxMirrors/issues
"
问题报告 https://github.com/SuperManito/LinuxMirrors/issues\n"
}
## 判断参数
@@ -291,6 +300,19 @@ function handle_command_options() {
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
--source-epel)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
else
SOURCE_EPEL="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
--source-security)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
@@ -317,6 +339,19 @@ function handle_command_options() {
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
--source-portage)
if [ "$2" ]; then
echo "$2" | grep -Eq "\(|\)|\[|\]|\{|\}"
if [ $? -eq 0 ]; then
output_error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
else
SOURCE_PORTAGE="$(echo "$2" | sed -e 's,^http[s]\?://,,g' -e 's,/$,,')"
shift
fi
else
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
## 使用官方源
--use-official-source)
USE_OFFICIAL_SOURCE="true"
@@ -330,9 +365,17 @@ function handle_command_options() {
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
--branch-epel)
if [ "$2" ]; then
SOURCE_EPEL_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
--branch-security)
if [ "$2" ]; then
SOURCE_BRANCH_SECURITY="$2"
SOURCE_SECURITY_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
@@ -340,7 +383,15 @@ function handle_command_options() {
;;
--branch-vault)
if [ "$2" ]; then
SOURCE_BRANCH_VAULT="$2"
SOURCE_VAULT_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
fi
;;
--branch-portage)
if [ "$2" ]; then
SOURCE_PORTAGE_BRANCH="$2"
shift
else
output_error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
@@ -356,7 +407,11 @@ function handle_command_options() {
fi
;;
## 优先使用内网地址
--use-intranet-source)
USE_INTRANET_SOURCE="true"
;;
--intranet)
## 废弃的命令选项
if [ "$2" ]; then
case "$2" in
[Tt]rue | [Ff]alse)
@@ -543,6 +598,8 @@ function collect_system_info() {
SYSTEM_FACTIONS="${SYSTEM_ARCH}"
elif [ -f $File_AlpineRelease ]; then
SYSTEM_FACTIONS="${SYSTEM_ALPINE}"
elif [ -f $File_GentooRelease ]; then
SYSTEM_FACTIONS="${SYSTEM_GENTOO}"
elif [ -s $File_RedHatRelease ]; then
SYSTEM_FACTIONS="${SYSTEM_REDHAT}"
elif [ -s $File_OpenCloudOSRelease ]; then
@@ -632,7 +689,7 @@ function collect_system_info() {
;;
esac
;;
"${SYSTEM_KALI}" | "${SYSTEM_DEEPIN}" | "${SYSTEM_ARCH}" | "${SYSTEM_ALPINE}")
"${SYSTEM_KALI}" | "${SYSTEM_DEEPIN}" | "${SYSTEM_ARCH}" | "${SYSTEM_ALPINE}" | "${SYSTEM_GENTOO}")
# 理论全部支持或不作判断
;;
*)
@@ -739,7 +796,7 @@ function collect_system_info() {
"${SYSTEM_OPENSUSE}")
SYNC_MIRROR_TEXT="刷新软件源"
;;
"${SYSTEM_ARCH}")
"${SYSTEM_ARCH}" | "${SYSTEM_GENTOO}")
SYNC_MIRROR_TEXT="同步软件源"
;;
esac
@@ -750,18 +807,31 @@ function check_command_options() {
if [[ "${USE_ABROAD_SOURCE}" == "true" && "${USE_EDU_SOURCE}" == "true" ]]; then
output_error "两种模式不可同时使用!"
fi
if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_DEBIAN}" ]] && [[ "${SOURCE_SECURITY}" == "true" || "${SOURCE_BRANCH_SECURITY}" == "true" ]]; then
output_error "当前系统不支持使用 security 仓库相关命令选项,请确认后重试!"
fi
if [[ "${SYSTEM_FACTIONS}" != "${SYSTEM_DEBIAN}" ]] && [[ "${DEBIAN_CODENAME}" ]]; then
if [[ "${DEBIAN_CODENAME}" ]]; then
if [[ "${SYSTEM_FACTIONS}" != "${SYSTEM_DEBIAN}" ]]; then
output_error "当前系统不支持使用指定版本代号命令选项,请确认后重试!"
fi
if [[ "${SYSTEM_FACTIONS}" != "${SYSTEM_REDHAT}" || "${SYSTEM_JUDGMENT}" == "${SYSTEM_FEDORA}" ]] && [[ "${INSTALL_EPEL}" == "true" || "${ONLY_EPEL}" == "true" ]]; then
fi
if [[ "${INSTALL_EPEL}" == "true" || "${ONLY_EPEL}" == "true" ]]; then
if [[ "${SYSTEM_JUDGMENT}" == "${SYSTEM_FEDORA}" ]] || [[ "${SYSTEM_FACTIONS}" != "${SYSTEM_REDHAT}" && "${SYSTEM_FACTIONS}" && "${SYSTEM_OPENCLOUDOS}" || "${SYSTEM_FACTIONS}" && "${SYSTEM_OPENEULER}" ]]; then
output_error "当前系统不支持安装 EPEL 附件软件包故无法使用相关命令选项,请确认后重试!"
fi
if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_CENTOS}" && "${SYSTEM_JUDGMENT}" != "${SYSTEM_RHEL}" && "${SYSTEM_JUDGMENT}" != "${SYSTEM_ALMALINUX}" ]] && [[ "${SOURCE_VAULT}" == "true" || "${SOURCE_BRANCH_VAULT}" == "true" ]]; then
fi
if [[ "${SOURCE_SECURITY}" == "true" || "${SOURCE_SECURITY_BRANCH}" == "true" ]]; then
if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_DEBIAN}" ]]; then
output_error "当前系统不支持使用 security 仓库相关命令选项,请确认后重试!"
fi
fi
if [[ "${SOURCE_VAULT}" == "true" || "${SOURCE_VAULT_BRANCH}" == "true" ]]; then
if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_CENTOS}" && "${SYSTEM_JUDGMENT}" != "${SYSTEM_RHEL}" && "${SYSTEM_JUDGMENT}" != "${SYSTEM_ALMALINUX}" ]]; then
output_error "当前系统不支持使用 vault 仓库相关命令选项,请确认后重试!"
fi
fi
if [[ "${SOURCE_PORTAGE}" == "true" || "${SOURCE_PORTAGE_BRANCH}" == "true" ]]; then
if [[ "${SYSTEM_JUDGMENT}" != "${SYSTEM_GENTOO}" ]]; then
output_error "当前系统不支持使用 portage 仓库相关命令选项,请确认后重试!"
fi
fi
}
## 选择软件源
@@ -1146,6 +1216,13 @@ function backup_original_mirrors() {
# /etc/apk/repositories
backup_file $File_AlpineRepositories $File_AlpineRepositoriesBackup "repositories"
;;
"${SYSTEM_GENTOO}")
# /etc/portage/make.conf
backup_file $File_GentooMakeConf $File_GentooMakeConfBackup "make.conf"
# /etc/portage/repos.conf/gentoo.conf
[ -d "${Dir_GentooReposConf}" ] || mkdir -p "${Dir_GentooReposConf}"
backup_file $File_GentooReposConf $File_GentooReposConfBackup "gentoo.conf"
;;
esac
fi
}
@@ -1261,6 +1338,9 @@ function remove_original_mirrors() {
"${SYSTEM_ALPINE}")
[ -f $File_AlpineRepositories ] && sed -i '1,$d' $File_AlpineRepositories
;;
"${SYSTEM_GENTOO}")
[ -f $File_GentooReposConf ] && sed -i '1,$d' $File_GentooReposConf
;;
esac
}
@@ -1319,6 +1399,10 @@ function change_mirrors_main() {
"${SYSTEM_ALPINE}")
diff_file $File_AlpineRepositoriesBackup $File_AlpineRepositories
;;
"${SYSTEM_GENTOO}")
diff_file $File_GentooMakeConfBackup $File_GentooMakeConf
diff_file $File_GentooReposConfBackup $File_GentooReposConf
;;
esac
fi
}
@@ -1346,6 +1430,9 @@ function change_mirrors_main() {
"${SYSTEM_ALPINE}")
change_mirrors_Alpine
;;
"${SYSTEM_GENTOO}")
change_mirrors_Gentoo
;;
esac
## 比较差异
if [[ "${PRINT_DIFF}" == "true" ]]; then
@@ -1382,6 +1469,9 @@ function change_mirrors_main() {
"${SYSTEM_ALPINE}")
apk update -f
;;
"${SYSTEM_GENTOO}")
emerge --sync --quiet
;;
esac
if [ $? -eq 0 ]; then
echo -e "\n$SUCCESS 软件源更换完毕"
@@ -1398,12 +1488,6 @@ function change_mirrors_main() {
## 升级软件包
function upgrade_software() {
function clean_cache() {
## 跳过特殊系统
case "${SYSTEM_JUDGMENT}" in
"${SYSTEM_RHEL}" | "${SYSTEM_OPENSUSE}" | "${SYSTEM_ARCH}" | "${SYSTEM_ALPINE}")
return
;;
esac
## 交互确认
if [[ -z "${CLEAN_CACHE}" ]]; then
CLEAN_CACHE="false"
@@ -1447,16 +1531,27 @@ function upgrade_software() {
$package_manager autoremove -y >/dev/null 2>&1
$package_manager clean packages -y >/dev/null 2>&1
;;
"${SYSTEM_OPENSUSE}")
rm -rf /var/cache/zypp/* >/dev/null 2>&1
;;
"${SYSTEM_ALPINE}")
rm -rf /var/cache/apk/* >/dev/null 2>&1
;;
"${SYSTEM_GENTOO}")
eclean-dist --deep >/dev/null 2>&1
eclean-packages --deep >/dev/null 2>&1
;;
esac
echo -e "\n$COMPLETE 清理完毕"
}
## 跳过特殊系统
case "${SYSTEM_JUDGMENT}" in
"${SYSTEM_ARCH}" | "${SYSTEM_RHEL}")
"${SYSTEM_ARCH}")
return
;;
esac
## 交互确认
if [[ -z "${UPGRADE_SOFTWARE}" ]]; then
UPGRADE_SOFTWARE="false"
@@ -1505,6 +1600,9 @@ function upgrade_software() {
"${SYSTEM_ALPINE}")
apk upgrade --no-cache
;;
"${SYSTEM_GENTOO}")
emerge --update --deep --with-bdeps=y --ask=n @world
;;
esac
## 清理缓存
clean_cache
@@ -1578,7 +1676,7 @@ deb ${1} ${2}-security ${3}
echo "${tips}
$(gen_debian_source "${base_url}" "${SYSTEM_VERSION_CODENAME}" "${repository_sections}")" >>$File_DebianSourceList
# 处理 debian-security 仓库源
base_url="${WEB_PROTOCOL}://${SOURCE_SECURITY:-"${SOURCE}"}/${SOURCE_BRANCH_SECURITY:-"${SOURCE_BRANCH}-security"}"
base_url="${WEB_PROTOCOL}://${SOURCE_SECURITY:-"${SOURCE}"}/${SOURCE_SECURITY_BRANCH:-"${SOURCE_BRANCH}-security"}"
echo "$(gen_debian_security_source "${base_url}" "${SYSTEM_VERSION_CODENAME}" "${repository_sections}")" >>$File_DebianSourceList
else
echo "deb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}
@@ -1591,7 +1689,7 @@ $(gen_debian_source "${base_url}" "${SYSTEM_VERSION_CODENAME}" "${repository_sec
$(gen_ubuntu_source "${base_url}" "${SYSTEM_VERSION_CODENAME}" "${repository_sections}")" >>$File_DebianSourceList
;;
"${SYSTEM_KALI}")
repository_sections="main non-free contrib"
repository_sections="main contrib non-free non-free-firmware"
echo "${tips}
deb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}
# deb-src ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}" >>$File_DebianSourceList
@@ -1618,7 +1716,7 @@ deb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}
base_url="${WEB_PROTOCOL}://${SOURCE}/${base_system_source_branch}"
echo "$(gen_debian_source "${base_url}" "${base_system_codename}" "${repository_sections}")" >>$File_LinuxMintSourceList
# 处理 debian-security 仓库源
base_url="${WEB_PROTOCOL}://${SOURCE_SECURITY:-"${SOURCE}"}/${SOURCE_BRANCH_SECURITY:-"${base_system_source_branch}-security"}"
base_url="${WEB_PROTOCOL}://${SOURCE_SECURITY:-"${SOURCE}"}/${SOURCE_SECURITY_BRANCH:-"${base_system_source_branch}-security"}"
echo "$(gen_debian_security_source "${base_url}" "${base_system_codename}" "${repository_sections}")" >>$File_LinuxMintSourceList
else
# Ubuntu 版
@@ -1658,7 +1756,7 @@ deb ${base_url} ${SYSTEM_VERSION_CODENAME} ${repository_sections}
fi
}
## 更换基于 RedHat 系 Linux 发行版软件源
## 更换基于 RedHat 系 Linux 发行版软件源
function change_mirrors_RedHat() {
## 仅 EPEL 模式
if [[ "${ONLY_EPEL}" == "true" ]]; then
@@ -1728,13 +1826,13 @@ function change_mirrors_RedHat() {
sed -i "s|mirror.centos.org/\$contentdir|mirror.centos.org/centos-vault|g" CentOS-*
sed -i "s/\$releasever/8.5.2111/g" CentOS-*
# 单独处理 CentOS-Linux-Sources.repo
sed -i "s|vault.centos.org/\$contentdir|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"centos-vault"}|g" CentOS-Linux-Sources.repo
sed -i "s|vault.centos.org/\$contentdir|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"centos-vault"}|g" CentOS-Linux-Sources.repo
;;
7)
sed -i "s|mirror.centos.org/\$contentdir|mirror.centos.org/${SOURCE_BRANCH}|g" CentOS-*
sed -i "s/\$releasever/7/g" CentOS-*
# 单独处理 CentOS-Sources.repo
sed -i "s|vault.centos.org/centos|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"${SOURCE_BRANCH}"}|g" CentOS-Sources.repo
sed -i "s|vault.centos.org/centos|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"${SOURCE_BRANCH}"}|g" CentOS-Sources.repo
;;
esac
sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-*
@@ -1750,13 +1848,13 @@ function change_mirrors_RedHat() {
# 最终版本为 8.5.2011,从 2022-02 开始切换至 centos-vault 分支
sed -i "s|mirror.centos.org/\$contentdir|mirror.centos.org/${SOURCE_BRANCH:-"centos-vault"}|g" CentOS-*
sed -i "s/\$releasever/8.5.2111/g" CentOS-*
sed -i "s|vault.centos.org/\$contentdir|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"centos-vault"}|g" CentOS-Linux-Sources.repo # 单独处理 CentOS-Linux-Sources.repo
sed -i "s|vault.centos.org/\$contentdir|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"centos-vault"}|g" CentOS-Linux-Sources.repo # 单独处理 CentOS-Linux-Sources.repo
;;
7)
# 最终版本为 7.9.2009,从 2024-07 开始切换至 centos-vault 分支
sed -i "s|mirror.centos.org/centos|mirror.centos.org/${SOURCE_BRANCH:-"centos-vault"}|g" CentOS-*
sed -i "s/\$releasever/7.9.2009/g" CentOS-*
sed -i "s|vault.centos.org/centos|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"centos-vault"}|g" CentOS-Sources.repo # 单独处理 CentOS-Sources.repo
sed -i "s|vault.centos.org/centos|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"centos-vault"}|g" CentOS-Sources.repo # 单独处理 CentOS-Sources.repo
;;
esac
sed -i "s|mirror.centos.org|${SOURCE}|g" CentOS-*
@@ -1772,7 +1870,7 @@ function change_mirrors_RedHat() {
centos-addons.repo
;;
8)
sed -i "s|vault.centos.org/\$contentdir|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"${SOURCE_BRANCH}"}|g" CentOS-Stream-Sources.repo # 单独处理 CentOS-Stream-Sources.repo
sed -i "s|vault.centos.org/\$contentdir|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"${SOURCE_BRANCH}"}|g" CentOS-Stream-Sources.repo # 单独处理 CentOS-Stream-Sources.repo
sed -e "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" \
-e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|mirror.centos.org/\$contentdir|${SOURCE}/${SOURCE_BRANCH}|g" \
@@ -1807,7 +1905,7 @@ function change_mirrors_RedHat() {
9)
sed -e "s|^# baseurl=http|baseurl=${WEB_PROTOCOL}|g" \
-e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|repo.almalinux.org/vault|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"almalinux-vault"}|g" \
-e "s|repo.almalinux.org/vault|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"almalinux-vault"}|g" \
-e "s|repo.almalinux.org/almalinux|${SOURCE}/${SOURCE_BRANCH}|g" \
-i \
almalinux-*
@@ -1815,7 +1913,7 @@ function change_mirrors_RedHat() {
8)
sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^# baseurl=http|baseurl=${WEB_PROTOCOL}|g" \
-e "s|repo.almalinux.org/vault|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_BRANCH_VAULT:-"almalinux-vault"}|g" \
-e "s|repo.almalinux.org/vault|${SOURCE_VAULT:-"${SOURCE}"}/${SOURCE_VAULT_BRANCH:-"almalinux-vault"}|g" \
-e "s|repo.almalinux.org/almalinux|${SOURCE}/${SOURCE_BRANCH}|g" \
-i \
almalinux-ha.repo \
@@ -1861,7 +1959,7 @@ function change_mirrors_RedHat() {
change_mirrors_or_install_EPEL # EPEL 附加软件包
}
## 更换基于 OpenCloudOS 发行版软件源
## 更换 OpenCloudOS 发行版软件源
function change_mirrors_OpenCloudOS() {
## 生成官方 repo 源文件
gen_repo_files_OpenCloudOS "${SYSTEM_VERSION_NUMBER:0:1}"
@@ -1885,7 +1983,7 @@ function change_mirrors_OpenCloudOS() {
change_mirrors_or_install_EPEL # EPEL 附加软件包
}
## 更换基于 openEuler 发行版软件源
## 更换 openEuler 发行版软件源
function change_mirrors_openEuler() {
## 生成官方 repo 源文件
gen_repo_files_openEuler
@@ -1907,7 +2005,7 @@ function change_mirrors_openEuler() {
change_mirrors_or_install_EPEL # EPEL 附加软件包
}
## 更换基于 openSUSE 发行版软件源
## 更换 openSUSE 发行版软件源
function change_mirrors_openSUSE() {
## 生成官方 repo 源文件
case "${SYSTEM_ID}" in
@@ -1973,7 +2071,7 @@ function change_mirrors_openSUSE() {
esac
}
## 更换基于 Arch Linux 发行版软件源
## 更换 Arch Linux 发行版软件源
function change_mirrors_ArchLinux() {
## 使用官方源
if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
@@ -1994,7 +2092,7 @@ function change_mirrors_ArchLinux() {
esac
}
## 更换基于 Alpine Linux 发行版软件源
## 更换 Alpine Linux 发行版软件源
function change_mirrors_Alpine() {
## 使用官方源
if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
@@ -2012,6 +2110,34 @@ function change_mirrors_Alpine() {
${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}/${version_name}/community" >>$File_AlpineRepositories
}
## 更换 Gentoo 发行版软件源
function change_mirrors_Gentoo() {
## 使用官方源
if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
grep -Eq "^GENTOO_MIRRORS=" $File_GentooMakeConf
if [ $? -eq 0 ]; then
sed -i "/^GENTOO_MIRRORS=/d" $File_GentooMakeConf
fi
[ -f $File_GentooReposConf ] && rm -rf $File_GentooReposConf
return
fi
## 修改源
grep -Eq "^GENTOO_MIRRORS=" $File_GentooMakeConf
if [ $? -eq 0 ]; then
sed -i "s|^GENTOO_MIRRORS=.*|GENTOO_MIRRORS=\"${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}\"|g" $File_GentooMakeConf
else
echo -e "\nGENTOO_MIRRORS=\"${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}\"" >>$File_GentooMakeConf
fi
echo "[DEFAULT]
main-repo = gentoo
[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri = rsync://${SOURCE_PORTAGE:-"${SOURCE}"}/${SOURCE_PORTAGE_BRANCH:-"gentoo-portage"}
auto-sync = yes" >$File_GentooReposConf
}
## EPEL (Extra Packages for Enterprise Linux) 附加软件包 - 安装或更换软件源
function change_mirrors_or_install_EPEL() {
if [[ "${INSTALL_EPEL}" != "true" ]]; then
@@ -2061,12 +2187,11 @@ function change_mirrors_or_install_EPEL() {
if [[ "${USE_OFFICIAL_SOURCE}" == "true" ]]; then
return
fi
## 修改源(仓库分支名称暂时固定为 epel
local epel_branch="epel"
## 修改源
sed -e "s|^#baseurl=http\(s\)\?|baseurl=${WEB_PROTOCOL}|g" \
-e "s|^metalink=|#metalink=|g" \
-e "s|download.example/pub/epel|${SOURCE}/${epel_branch}|g" \
-e "s|download.fedoraproject.org/pub/epel|${SOURCE}/${epel_branch}|g" \
-e "s|download.example/pub/epel|${SOURCE_EPEL:-"${SOURCE}"}/${SOURCE_EPEL_BRANCH:-"epel"}|g" \
-e "s|download.fedoraproject.org/pub/epel|${SOURCE_EPEL:-"${SOURCE}"}/${SOURCE_EPEL_BRANCH:-"epel"}|g" \
-i \
$Dir_YumRepos/epel*
}

View File

@@ -9,7 +9,7 @@
</strong>
</p>
<p align="center">
GNU/Linux 更换系统软件源脚本
GNU/Linux 更换系统软件源脚本及 Docker 安装脚本
</p>
<p align="center">
<strong>
@@ -86,11 +86,15 @@
<td><a href="https://www.alpinelinux.org" target="_blank"><img src="./docs/assets/images/icon/alpine.png" width="16" height="16" style="vertical-align: -0.15em"/></a>&nbsp;Alpine Linux</td>
<td align="center">v3 / edge</td>
</tr>
<tr>
<td><a href="https://www.gentoo.org" target="_blank"><img src="./docs/assets/images/icon/gentoo.svg" width="16" height="16" style="vertical-align: -0.25em"/></a>&nbsp;Gentoo</td>
<td align="center">all</td>
</tr>
</table>
<p align="center">
<strong>
<a href="https://linuxmirrors.cn/use" style="text-decoration: none;">使用方法</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://linuxmirrors.cn/mirrors" style="text-decoration: none;">软件源</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://linuxmirrors.cn/help" style="text-decoration: none;">常见问题</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://linuxmirrors.cn/other" style="text-decoration: none;">Docker 一键安装(额外脚本)</a>
<a href="https://linuxmirrors.cn/use" style="text-decoration: none;">使用方法</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://linuxmirrors.cn/mirrors" style="text-decoration: none;">软件源</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://linuxmirrors.cn/help" style="text-decoration: none;">常见问题</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://linuxmirrors.cn/other" style="text-decoration: none;">Docker 安装(额外脚本)</a>
</strong>
</p>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -44,7 +44,7 @@ hide:
---
脚本使换源变得更简单,默认交互运行,逐步引导用户更换软件源
脚本使换源变得更简单,默认交互运行,逐步引导用户选择软件源配置
同时提供了强大的命令选项,可实现各种定制需求和无交互操作
- :material-scale-balance:{ .lg .middle } __开源MIT__
@@ -82,6 +82,7 @@ hide:
| <a href="https://www.opensuse.org" target="_blank"><img src="/assets/images/icon/opensuse.svg" width="16" height="16"></a> openSUSE | Leep 15 / Tumbleweed |
| <a href="https://archlinux.org" target="_blank"><img src="/assets/images/icon/arch-linux.ico" width="16" height="16" style="vertical-align: -0.15em"></a> Arch Linux | all |
| <a href="https://www.alpinelinux.org" target="_blank"><img src="/assets/images/icon/alpine.png" width="16" height="16" style="vertical-align: -0.15em"></a> Alpine Linux | v3 / edge |
| <a href="https://www.gentoo.org" target="_blank"><img src="/assets/images/icon/gentoo.svg" width="16" height="16" style="vertical-align: -0.2em"></a> Gentoo | all |
</div>

View File

@@ -10,7 +10,7 @@ hide:
> 下方列表中的镜像站均支持 `Debian` `Ubuntu` `CentOS` `openSUSE` `openEuler` 软件源,列表根据单位性质、地理位置、名称长度进行排序,与实际速度无关
| 镜像站 | IPv6 | Arch Linux | Kali Linux | Deepin | Rocky Linux | AlmaLinux | EPEL | Fedora | OpenCloudOS | Alpine Linux | Armbian | Proxmox | Linux Mint |
| 镜像站 | IPv6 | Arch Linux | Kali Linux | Deepin | Rocky Linux | AlmaLinux | EPEL :material-information-outline:{ title="EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 组织维护的一个附加软件包仓库,它主要适用于除 Fedora 操作系统以外的红帽系 Linux 发行版" } | Fedora | OpenCloudOS | Alpine Linux | Armbian | Proxmox | Linux Mint |
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: |
| [阿里云](https://mirrors.aliyun.com "mirrors.aliyun.com") | :supported: | :supported: | :supported: | :supported: | :incompatible: | :supported: | :supported: | :supported: | :unsupport: | :supported: | :supported: | :unsupport: | :supported: |
| [腾讯云](https://mirrors.tencent.com "mirrors.tencent.com") | :unsupport: | :supported: | :supported: | :unsupport: | :supported: | :supported: | :supported: | :supported: | :supported: | :supported: | :unsupport: | :unsupport: | :supported: |
@@ -47,7 +47,6 @@ hide:
| 浙江大学 | [mirrors.zju.edu.cn](https://mirrors.zju.edu.cn "https://mirrors.zju.edu.cn") |
| 山东大学 | [mirrors.sdu.edu.cn](https://mirrors.sdu.edu.cn "https://mirrors.sdu.edu.cn") |
| 吉林大学 | [mirrors.jlu.edu.cn](https://mirrors.jlu.edu.cn "https://mirrors.jlu.edu.cn") |
| 上海交通大学 | [mirror.sjtu.edu.cn](https://mirror.sjtu.edu.cn "https://mirror.sjtu.edu.cn") |
| 上海科技大学 | [mirrors.shanghaitech.edu.cn](https://mirrors.shanghaitech.edu.cn "https://mirrors.shanghaitech.edu.cn") |
| 南方科技大学 | [mirrors.sustech.edu.cn](https://mirrors.sustech.edu.cn "https://mirrors.sustech.edu.cn") |
| 南京邮电大学 | [mirrors.njupt.edu.cn](https://mirrors.njupt.edu.cn "https://mirrors.njupt.edu.cn") |
@@ -60,6 +59,7 @@ hide:
| 西安交通大学 | [mirrors.xjtu.edu.cn](https://mirrors.xjtu.edu.cn "https://mirrors.xjtu.edu.cn") |
| 江西理工大学 | [mirrors.jxust.edu.cn](https://mirrors.jxust.edu.cn "https://mirrors.jxust.edu.cn") |
| 重庆邮电大学 | [mirrors.cqupt.edu.cn](https://mirrors.cqupt.edu.cn "https://mirrors.cqupt.edu.cn") |
| 华中科技大学 | [mirrors.hust.edu.cn](https://mirrors.hust.edu.cn "https://mirrors.hust.edu.cn") |
| 南阳理工学院 | [mirror.nyist.edu.cn](https://mirror.nyist.edu.cn "https://mirror.nyist.edu.cn") |
| 武昌首义学院 | [mirrors.wsyu.edu.cn](https://mirrors.wsyu.edu.cn "https://mirrors.wsyu.edu.cn") |
| 荆楚理工学院 | [mirrors.jcut.edu.cn](https://mirrors.jcut.edu.cn "https://mirrors.jcut.edu.cn") |
@@ -67,6 +67,8 @@ hide:
| 中国科学技术大学 | [mirrors.ustc.edu.cn](https://mirrors.ustc.edu.cn "https://mirrors.ustc.edu.cn") |
| 西北农林科技大学 | [mirrors.nwafu.edu.cn](https://mirrors.nwafu.edu.cn "https://mirrors.nwafu.edu.cn") |
| 大连东软信息学院 | [mirrors.neusoft.edu.cn](https://mirrors.neusoft.edu.cn "https://mirrors.neusoft.edu.cn") |
| 上海交通大学(思源) | [mirror.sjtu.edu.cn](https://mirror.sjtu.edu.cn "https://mirror.sjtu.edu.cn") |
| 上海交通大学(致远) | [mirrors.sjtug.sjtu.edu.cn](https://mirrors.sjtug.sjtu.edu.cn "https://mirrors.sjtug.sjtu.edu.cn") |
## 海外地区 :flag-world-map:
@@ -78,6 +80,7 @@ hide:
| 亚洲 · 01Link · 香港 :flag-HK: | [mirror.01link.hk](https://mirror.01link.hk "https://mirror.01link.hk") |
| 亚洲 · 新加坡国立大学(NUS) · 新加坡 :flag-SG: | [download.nus.edu.sg/mirror](https://download.nus.edu.sg "https://download.nus.edu.sg") |
| 亚洲 · SG.GS · 新加坡 :flag-SG: | [mirror.sg.gs](https://mirror.sg.gs "https://mirror.sg.gs") |
| 亚洲 · xTom · 新加坡 :flag-SG: | [mirrors.xtom.sg](https://mirrors.xtom.sg "https://mirrors.xtom.sg") |
| 亚洲 · 自由软件实验室(NCHC) · 台湾 :flag-TW: | [free.nchc.org.tw](https://free.nchc.org.tw "https://free.nchc.org.tw") |
| 亚洲 · OSS Planet · 台湾 :flag-TW: | [mirror.ossplanet.net](https://mirror.ossplanet.net "https://mirror.ossplanet.net") |
| 亚洲 · 国立阳明交通大学 · 台湾 :flag-TW: | [linux.cs.nctu.edu.tw](https://linux.cs.nctu.edu.tw "https://linux.cs.nctu.edu.tw") |
@@ -174,6 +177,7 @@ hide:
| 亚洲 · 01Link · 香港 :flag-HK: | [mirror.01link.hk](https://mirror.01link.hk "https://mirror.01link.hk") |
| 亚洲 · 新加坡国立大学(NUS) · 新加坡 :flag-SG: | [download.nus.edu.sg/mirror](https://download.nus.edu.sg "https://download.nus.edu.sg") |
| 亚洲 · SG.GS · 新加坡 :flag-SG: | [mirror.sg.gs](https://mirror.sg.gs "https://mirror.sg.gs") |
| 亚洲 · xTom · 新加坡 :flag-SG: | [mirrors.xtom.sg](https://mirrors.xtom.sg "https://mirrors.xtom.sg") |
| 亚洲 · 自由软件实验室(NCHC) · 台湾 :flag-TW: | [free.nchc.org.tw](https://free.nchc.org.tw "https://free.nchc.org.tw") |
| 亚洲 · OSS Planet · 台湾 :flag-TW: | [mirror.ossplanet.net](https://mirror.ossplanet.net "https://mirror.ossplanet.net") |
| 亚洲 · 国立阳明交通大学 · 台湾 :flag-TW: | [linux.cs.nctu.edu.tw](https://linux.cs.nctu.edu.tw "https://linux.cs.nctu.edu.tw") |

View File

@@ -2,46 +2,51 @@
| - | - | :-: |
| `--abroad` | 使用海外软件源 | 无 |
| `--edu` | 使用中国大陆教育网软件源 | 无 |
| `--source` | 指定软件源地址(域名或IP) | 地址 |
| `--source-security` | 指定 Debian 的 security 软件源地址(域名或IP) | 地址 |
| `--source-vault` | 指定 CentOS/AlmaLinux 的 vault 软件源地址(域名或IP) | 地址 |
| `--use-official-source` | 使用操作系统官方软件源 | |
| `--branch` | 指定软件源分支(路径) | 分支名 |
| `--branch-security` | 指定 Debian 的 security 软件源分支(路径) | 分支名 |
| `--branch-vault` | 指定 CentOS/AlmaLinux 的 vault 软件源分支(路径) | 分支名 |
| `--source` | 指定软件源地址域名或IP | 地址 |
| `--source-epel` | 指定 EPEL 附加软件包仓库的软件源地址域名或IP | 地址 |
| `--source-security` | 指定 Debian 系统 security 仓库的软件源地址域名或IP | 地址 |
| `--source-vault` | 指定 CentOS/AlmaLinux 系统 vault 仓库的软件源地址域名或IP | 地址 |
| `--source-portage` | 指定 Gentoo 系统 portage 仓库的软件源地址域名或IP | 地址 |
| `--branch` | 指定软件源分支路径 | 分支名 |
| `--branch-epel` | 指定 EPEL 附加软件包仓库的软件源分支路径 | 分支名 |
| `--branch-security` | 指定 Debian 系统 security 仓库的软件源分支(路径) | 分支名 |
| `--branch-vault` | 指定 CentOS/AlmaLinux 系统 vault 仓库的软件源分支(路径) 分支名 | 分支名 |
| `--branch-portage` | 指定 Gentoo 系统 portage 仓库的软件源分支(路径) | 分支名 |
| `--codename` | 指定 Debian 系操作系统的版本代号 | 代号名称 |
| `--protocol` | 指定 WEB 协议 | `http``https` |
| `--intranet` | 优先使用内网地址 | `true``false` |
| `--install-epel` | 安装 EPEL 附加软件包 | `true``false` |
| `--install-epel` | 是否安装 EPEL 附加软件包 | `true``false` |
| `--close-firewall` | 是否关闭防火墙 | `true``false` |
| `--backup` | 是否备份原有软件源 | `true``false` |
| `--upgrade-software` | 是否更新软件包 | `true``false` |
| `--clean-cache` | 是否清理下载缓存 | `true``false` |
| `--print-diff` | 是否打印源文件修改前后差异 | `true``false` |
| `--use-intranet-source` | 优先使用内网软件源地址 | 无 |
| `--use-official-source` | 使用目标操作系统的官方软件源 | 无 |
| `--only-epel` | 仅更换 EPEL 软件源模式 | 无 |
| `--close-firewall` | 关闭防火墙 | `true``false` |
| `--backup` | 备份原有软件源 | `true``false` |
| `--ignore-backup-tips` | 忽略覆盖备份提示(即不覆盖备份) | 无 |
| `--upgrade-software` | 更新软件包 | `true``false` |
| `--clean-cache` | 清理下载缓存 | `true``false` |
| `--print-diff` | 打印源文件修改前后差异 | `true``false` |
| `--help` | 查看帮助菜单 | 无 |
> 软件源格式 `<指定WEB协议>://<软件源地址>/<软件源分支>`
## 示例
---
### 指定软件源地址
若不想通过交互选择默认提供的软件源,你可以使用该命令选项指定软件源地址
## 指定软件源地址
``` { .bash .no-copy }
bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
--source mirror.example.com
```
### 指定软件源分支
---
使用场景:目标镜像站有对应的系统镜像但是不符合本项目脚本关于软件源分支设置的默认规则
## 指定软件源仓库分支
项目脚本为了适配大的环境不会针对某一镜像站独特的镜像分支名称而单独适配,默认使用的分支名称如下
主要使用场景:目标镜像站有对应的系统镜像但是不符合本项目脚本关于软件源分支设置的默认规则
??? note "项目默认使用的系统分支名称"
项目脚本为了适配大的环境不会针对某一镜像站独特的镜像分支名称而单独适配
<div class="annotate" markdown>
| 系统名称 | 涉及的分支名称 |
| --- | :---: |
| <a href="https://www.debian.org" target="_blank"><img src="/assets/images/icon/debian.svg" width="16" height="16" style="vertical-align: -0.35em"></a> Debian | debian / debian-archive |
@@ -51,7 +56,7 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
| <a href="https://www.deepin.org" target="_blank"><img src="/assets/images/icon/deepin.svg" width="16" height="16" style="vertical-align: -0.25em"></a> Deepin | deepin |
| <a href="https://www.armbian.com" target="_blank"><img src="/assets/images/icon/armbian.png" width="16" height="16" style="vertical-align: -0.2em"></a> Armbian | armbian |
| <a href="https://www.proxmox.com" target="_blank"><img src="/assets/images/icon/proxmox.svg" width="16" height="16" style="vertical-align: -0.2em"></a> Proxmox | proxmox |
| <a href="https://access.redhat.com/products/red-hat-enterprise-linux" target="_blank"><img src="/assets/images/icon/redhat.svg" width="16" height="16" style="vertical-align: -0.1em"></a> Red Hat Enterprise Linux :material-information-outline:{ title="9版本使用 <code>Rocky Linux</code> 7、8版本使用<code>CentOS</code>" } | centos / centos-altarch / rocky |
| <a href="https://access.redhat.com/products/red-hat-enterprise-linux" target="_blank"><img src="/assets/images/icon/redhat.svg" width="16" height="16" style="vertical-align: -0.1em"></a> Red Hat Enterprise Linux :material-information-outline:{ title="9版本使用 <code>CentOS Stream</code> 7、8版本使用<code>CentOS</code>" } | centos / centos-stream / centos-altarch / centos-vault |
| <a href="https://fedoraproject.org/zh-Hans" target="_blank"><img src="/assets/images/icon/fedora.ico" width="16" height="16" style="vertical-align: -0.2em"></a> Fedora | fedora |
| <a href="https://www.centos.org" target="_blank"><img src="/assets/images/icon/centos.svg" width="16" height="16" style="vertical-align: -0.2em"></a> CentOS | centos / centos-stream / centos-altarch / centos-vault |
| <a href="https://rockylinux.org" target="_blank"><img src="/assets/images/icon/rocky-linux.svg" width="16" height="16" style="vertical-align: -0.25em"></a> Rocky Linux | rocky |
@@ -61,11 +66,12 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
| <a href="https://www.opensuse.org" target="_blank"><img src="/assets/images/icon/opensuse.svg" width="16" height="16"></a> openSUSE | opensuse |
| <a href="https://archlinux.org" target="_blank"><img src="/assets/images/icon/arch-linux.ico" width="16" height="16" style="vertical-align: -0.15em"></a> Arch Linux | archlinux / archlinuxarm |
| <a href="https://www.alpinelinux.org" target="_blank"><img src="/assets/images/icon/alpine.png" width="16" height="16" style="vertical-align: -0.15em"></a> Alpine Linux | alpine |
</div>
| <a href="https://www.gentoo.org" target="_blank"><img src="/assets/images/icon/gentoo.svg" width="16" height="16" style="vertical-align: -0.2em"></a> Gentoo | gentoo / gentoo-portage |
请看下面的例子
``` { .bash title="使用阿里云的 Rocky Linux 软件源" }
``` { .bash title="使用阿里云镜像站的 Rocky Linux 软件源" }
bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
--source mirrors.aliyun.com \
--branch rockylinux
@@ -73,9 +79,11 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
阿里云镜像站的 Rocky Linux 镜像分支名称为 [`rockylinux`](https://mirrors.aliyun.com/rockylinux),不符合默认规则,但是可以通过命令选项绕过脚本默认规则来实现。
什么是默认规则?参考这几个例子: `Debian GNU/Linux => debian`、`Rocky Linux => rocky`、`AlmaLinux => almalinux`
> 部分系统会同时配置多个仓库的软件源,具体详见命令选项
### 单独更换 EPEL 源
---
## 单独更换 EPEL 源
!!! info "EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 组织维护的一个附加软件包仓库,它主要适用于除 Fedora 操作系统以外的红帽系 Linux 发行版,配置 EPEL 仓库已成为广大用户的普遍需求,建议默认安装它"
@@ -85,7 +93,9 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
bash <(curl -sSL https://linuxmirrors.cn/main.sh) --only-epel
```
### 恢复使用官方源
---
## 恢复使用官方源
当你不小心删除了官方源的备份时可以使用此命令来恢复,使用此命令选项后将跳过选择软件源步骤
@@ -94,7 +104,9 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) --use-official-source
```
> 部分系统不存在官方源例如 `Arch Linux`,届时会自动更换成兼容性较高的阿里云镜像站
### 自定义 Debian Security 源
---
## 自定义 Debian Security 源
如果你想尽可能提高服务器的安全性则建议使用官方源,因为镜像同步存在延迟
@@ -104,7 +116,9 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
--branch-security debian-security
```
### 指定 Debian 系 Linux 操作系统的版本代号
---
## 指定 Debian 系 Linux 操作系统的版本代号
大多数情况下自定义版本代号用于更换系统版本,请看下面的例子
@@ -128,7 +142,9 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
sed -i "s/$(lsb_release -cs)/指定版本代号/g" /etc/apt/sources.list
```
### 更换 Ubuntu EOF版本软件源
---
## 更换 Ubuntu EOF版本软件源
!!! info "EOF 为生命周期结束的缩写End Of LifeUbuntu 迭代速度较快一般非长期支持(LTS)版本的生命周期只有9个月。官方会定期从主仓库移除不在生命周期内的版本仓库目录届时可能就需要使用镜像站的 `Ubuntu Old Releases` 分支"
@@ -140,9 +156,11 @@ bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
--branch ubuntu-old-releases
```
## 无人值守
---
不通过交互完成换源操作,需要使用大量命令选项来实现,建议熟悉后再使用
## 无人值守(自动化)
不通过交互完成换源操作,至少需要使用如下命令选项来实现,建议熟悉后再使用
``` { .bash .no-copy title="参考命令" }
bash <(curl -sSL https://linuxmirrors.cn/main.sh) \

View File

@@ -1,10 +0,0 @@
- 选择软件源 `交互`
- 检测到存在对应内网地址选择是否切换 `交互`
- 选择软件源使用的 WEB 协议 `交互`
- 检测如果是 RHEL/CentOS/Rocky 系统选择是否安装/覆盖 EPEL 扩展包软件源 `交互`
- 检测防火墙和SELINUX如果开启选择是否关闭 `交互`
- 备份原有源
- 检测如果存在重复的备份文件选择是否覆盖 `交互`
- 更换软件源
- 选择是否更新软件包 `交互`
- 选择是否清理已下载的软件包缓存 `交互`

View File

@@ -1,4 +1,3 @@
## 关于报错 Command not found
!!! quote ""
@@ -16,13 +15,11 @@
=== "RedHat 系 / OpenCloudOS / openEuler"
``` sh
yum install -y curl || dnf install -y curl
dnf install -y curl || yum install -y curl
```
> `Red Hat Enterprise Linux` &nbsp; `CentOS` &nbsp; `Rocky Linux` &nbsp; `AlmaLinux` &nbsp; `Fedora` &nbsp; `OpenCloudOS` &nbsp; `openEuler`
新装系统需要先执行一遍更新 `yum makecache`
=== "openSUSE"
``` sh
@@ -41,6 +38,12 @@
apk --no-cache add -f curl bash
```
=== "Gentoo"
``` sh
emerge --ask curl
```
## 关于开启 SSH 远程登录的方法
!!! quote ""
@@ -70,6 +73,8 @@
ps -ef | grep -q ssh ; [ $? -eq 0 ] && systemctl restart sshd || systemctl enable --now sshd
```
> 命令仅供参考,只适配了部分常见发行版
## 还原已备份的软件源
!!! quote ""
@@ -77,7 +82,7 @@
=== "Debian 系"
``` sh
cp -rvf /etc/apt/sources.list.bak /etc/apt/sources.list
cp -rf /etc/apt/sources.list.bak /etc/apt/sources.list
apt-get update
```
@@ -86,7 +91,7 @@
=== "RedHat 系 / OpenCloudOS / openEuler"
``` sh
cp -rvf /etc/yum.repos.d.bak /etc/yum.repos.d
cp -rf /etc/yum.repos.d.bak /etc/yum.repos.d
yum makecache
```
@@ -95,24 +100,32 @@
=== "openSUSE"
``` sh
cp -rvf /etc/zypp/repos.d.bak /etc/zypp/repos.d
cp -rf /etc/zypp/repos.d.bak /etc/zypp/repos.d
zypper ref
```
=== "Arch Linux"
``` sh
cp -rvf /etc/pacman.d/mirrorlist.bak /etc/pacman.d/mirrorlist
cp -rf /etc/pacman.d/mirrorlist.bak /etc/pacman.d/mirrorlist
pacman -Sy
```
=== "Alpine Linux"
``` sh
cp -rvf /etc/apk/repositories.bak /etc/apk/repositories
cp -rf /etc/apk/repositories.bak /etc/apk/repositories
apk update -f
```
=== "Gentoo"
``` sh
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
```
## 其它
!!! quote ""

View File

@@ -3,6 +3,8 @@ hide:
- feedback
---
!!! question "请在使用前检查目标镜像站是否支持您所使用的操作系统"
## 一键执行命令
=== ":material-home: 中国大陆(默认)"
@@ -11,8 +13,6 @@ hide:
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
```
!!! question "请在使用前检查目标镜像站是否支持您所使用的操作系统"
??? quote "原始执行命令"
=== ":simple-github: GitHub"
@@ -37,8 +37,6 @@ hide:
1. 通过 `--edu` 命令选项来使用中国大陆教育单位软件源
!!! question "请在使用前检查目标镜像站是否支持您所使用的操作系统"
??? quote "原始执行命令"
=== ":simple-github: GitHub"
@@ -63,8 +61,6 @@ hide:
1. 通过 `--abroad` 命令选项来使用海外软件源
!!! question "请在使用前检查目标镜像站是否支持您所使用的操作系统"
??? quote "原始执行命令"
=== ":simple-github: GitHub"
@@ -89,19 +85,19 @@ hide:
---
切换命令为 `sudo -i` 或 `su root`不同系统环境使用的命令不一样,因为有些系统没有在初始安装时为 ROOT 户设置固定密码例如Ubuntu所以需要使用 `sudo` 令来提权
切换命令为 `sudo -i` 或 `su root`不同系统使用的命令不,因为有些系统没有在初始安装时为 ROOT 户设置密码(例如 Ubuntu,故需要使用 `sudo -i` 令来切换至 ROOT
- :material-numeric-2:{style="color: #3CA7E5" .lg} __建议使用 `SSH` 远程工具__
---
如果你使用的系统终端界面不支持 `UTF-8` 编码那么将无法正常显示中文内容导致无法查看交互内容。部分系统会自动开启服务,否则请参考[启用方法](help.md#关于开启-ssh-远程登录的方法)
如果你使用的系统终端界面无法正常显示中文内容那么将导致无法查看交互内容。部分系统会自动开启 SSH 服务,否则请参考[启用方法](help.md#关于开启-ssh-远程登录的方法)
- :material-numeric-3:{style="color: #3CA7E5" .lg} __如果是在新系统上首次执行脚本__
---
当前执行方式依赖 `curl` 指令获取脚本内容并执行,所以需要先通过包管理工具来安装该软件包,则会报错 `Command not found`,安装方法详见[常见问题](help.md#关于报错-command-not-found),若无法安装就复制[源码](https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)本地新建`.sh`脚本,后通过 `bash` 手动执行
当前执行方式依赖 `curl` 指令获取脚本内容并执行,但部分操作系统没有预装此软件包,届时则会报错 `Command not found`,安装方法详见[常见问题](help.md#关于报错-command-not-found)。还可自行复制[源码](https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)本地新建任意名称的 `.sh` 脚本,粘贴源码内容后通过 `bash` 指令手动执行
</div>

View File

@@ -146,8 +146,6 @@ nav:
- "使用方法":
- "使用方法": use/index.md
- "常见问题": use/help.md
- "执行流程": use/execution-flow.md
- "高级用法":
- "命令选项": use/command-options.md
- "软件源列表": mirrors/index.md
- "其它工具": other/index.md