This commit is contained in:
Super Manito
2021-10-08 00:03:44 +08:00
commit d5549cac07
22 changed files with 2808 additions and 0 deletions

45
.gitee/issue_template.md Normal file
View File

@@ -0,0 +1,45 @@
<!-- 这是隐藏的信息
在提交前请阅读下面的内容:
⚠️如果在使用过程中遇到问题需要帮助,请严格按照模板提交反馈!
⚠️如果是意见与建议类问题则不需要使用此模板,自行清除所有模板内容!
请_完整_填写以下模板描述问题否则反馈将会被系统关闭。
请_完整_填写以下模板描述问题否则反馈将会被系统关闭。
请_完整_填写以下模板描述问题否则反馈将会被系统关闭。
(重要的事情说三遍😉)
点击编辑器上方的 Preview 图标可预览效果
-->
<!-- 👆这样括起来的信息将被隐藏,填写时注意不要写在里面。 -->
## 1. 处理器架构
<!-- 将中括号内的 "空格" 替换为 "x" ,即为选中,例:" - [x] 否 " -->
- [ ] `x86_64` `x86_32`
- [ ] `arm64` `arm/v8` `arm/v7` `arm/v6`
- [ ] `ppc64le` `s390x`
- [ ] `Other`
## 2. 使用环境
<!-- 将中括号内的 "空格" 替换为 "x" ,即为选中,例:" - [x] 是 " -->
- [ ] `Debian`
- [ ] `Ubuntu`
- [ ] `Kali Linux`
- [ ] `Red Hat Enterprise Linux`
- [ ] `CentOS`
- [ ] `Fedora`
## 3. 使用环境版本
<!-- 具体版本号 查看命令uname -a-->
A
## 4. 详细叙述您的问题
### (1) 具体问题
A
### (2) 详细的系统日志
<!-- 请在此处粘贴详细完整的日志,从执行脚本开始到结束。 -->
A

54
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,54 @@
---
name: Bug report
about: 错误提交
title: ''
labels: ''
assignees: ''
---
<!-- 这是隐藏的信息
在提交前请阅读下面的内容:
⚠️如果在使用过程中遇到问题需要帮助,请严格按照模板提交反馈!
⚠️如果是意见与建议类问题则不需要使用此模板。
请_完整_填写以下模板描述问题否则反馈将会被系统关闭。
请_完整_填写以下模板描述问题否则反馈将会被系统关闭。
请_完整_填写以下模板描述问题否则反馈将会被系统关闭。
(重要的事情说三遍😉)
点击编辑器上方的 Preview 图标可预览效果
-->
<!-- 👆这样括起来的信息将被隐藏,填写时注意不要写在里面。 -->
## 1. 处理器架构
<!-- 将中括号内的 "空格" 替换为 "x" ,即为选中,例:" - [x] 否 " -->
- [ ] `x86_64` `x86_32`
- [ ] `arm64` `arm/v8` `arm/v7` `arm/v6`
- [ ] `ppc64le` `s390x`
- [ ] `Other`
## 2. 使用环境
<!-- 将中括号内的 "空格" 替换为 "x" ,即为选中,例:" - [x] 是 " -->
- [ ] `Debian`
- [ ] `Ubuntu`
- [ ] `Kali Linux`
- [ ] `Red Hat Enterprise Linux`
- [ ] `CentOS`
- [ ] `Fedora`
## 3. 使用环境版本
<!-- 具体版本号 查看命令uname -a-->
A
## 4. 详细叙述您的问题
### (1) 具体问题
A
### (2) 详细的系统日志
<!-- 请在此处粘贴详细完整的日志,从执行脚本开始到结束。 -->
A

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1 @@
blank_issues_enabled: false

View File

@@ -0,0 +1,10 @@
---
name: Feature request
about: 意见与建议
title: ''
labels: ''
assignees: ''
---

29
.github/workflows/auto-sync.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
# 通过 Github actions 在 Github 仓库的每一次 commit 后自动同步到 Gitee 上
name: Github > Gitee
on:
push:
branches:
- main
jobs:
repo-sync:
env:
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
gitee_user: ${{ secrets.GITEE_USER }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- name: sync github -> gitee
uses: Yikun/hub-mirror-action@master
if: env.dst_key && env.dst_token && env.gitee_user
with:
src: github/SuperManito
dst: gitee/SuperManito
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
static_list: "LinuxMirrors"
force_update: true

1483
ChangeMirrors.sh Normal file

File diff suppressed because it is too large Load Diff

678
DockerInstallation.sh Normal file
View File

@@ -0,0 +1,678 @@
#!/bin/bash
## Author: SuperManito
## Modified: 2021-09-21
## License: GPL-2.0
## https://github.com/SuperManito/LinuxMirrors
## https://gitee.com/SuperManito/LinuxMirrors
function AuthorSignature() {
if [ ${SYSTEM_FACTIONS} = ${SYSTEM_DEBIAN} ]; then
apt-get install -y figlet toilet >/dev/null 2>&1
elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then
yum install -y figlet toilet >/dev/null 2>&1
fi
if [[ $? -eq 0 ]]; then
echo -e "\n$(toilet -f slant -F border --gay SuperManito)\n"
else
echo -e '\n\033[35m _____ __ ___ _ __ \033[0m'
echo -e '\033[31m / ___/__ ______ ___ _____/ |/ /___ _____ (_) /_____ \033[0m'
echo -e '\033[33m \__ \/ / / / __ \/ _ \/ ___/ /|_/ / __ `/ __ \/ / __/ __ \ \033[0m'
echo -e '\033[32m ___/ / /_/ / /_/ / __/ / / / / / /_/ / / / / / /_/ /_/ / \033[0m'
echo -e '\033[36m /____/\__,_/ .___/\___/_/ /_/ /_/\__,_/_/ /_/_/\__/\____/ \033[0m'
echo -e '\033[34m /_/ \033[0m\n'
fi
}
## 定义系统判定变量
DebianRelease=lsb_release
Arch=$(uname -m)
SYSTEM_DEBIAN="Debian"
SYSTEM_UBUNTU="Ubuntu"
SYSTEM_KALI="Kali"
SYSTEM_REDHAT="RedHat"
SYSTEM_RHEL="RedHat"
SYSTEM_CENTOS="CentOS"
SYSTEM_FEDORA="Fedora"
## 定义目录和文件
LinuxRelease=/etc/os-release
RedHatRelease=/etc/redhat-release
DebianSourceList=/etc/apt/sources.list
DebianExtendListDir=/etc/apt/sources.list.d
RedHatReposDir=/etc/yum.repos.d
SelinuxConfig=/etc/selinux/config
## 定义 Docker 相关变量
DockerSourceList=$DebianExtendListDir/docker.list
DockerRepo=$RedHatReposDir/download.docker.com_linux_*.repo
DockerDir=/etc/docker
DockerConfig=$DockerDir/daemon.json
DockerConfigBackup=$DockerDir/daemon.json.bak
DockerCompose=/usr/local/bin/docker-compose
DockerVersionFile=docker-version.txt
DockerCEVersionFile=docker-ce-version.txt
DockerCECLIVersionFile=docker-ce-cli-version.txt
PROXY_URL=https://ghproxy.com/
DOCKER_COMPOSE_VERSION=1.29.2
DOCKER_COMPOSE_DOWNLOAD_URL=https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-x86_64
## 组合函数
function Combin_Function() {
PermissionJudgment
NetWorkJudgment && clear
EnvJudgment
ChooseMirrors
InstallationEnvironment
ConfigureDockerCEMirror
DockerEngine
DockerCompose
ShowVersion
AuthorSignature
}
## 系统判定变量
function EnvJudgment() {
## 判定当前系统基于 Debian or RedHat
if [ -f $RedHatRelease ]; then
SYSTEM_FACTIONS=${SYSTEM_REDHAT}
else
SYSTEM_FACTIONS=${SYSTEM_DEBIAN}
fi
## 定义系统名称
SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME" | awk -F '\"' '{print$2}')
## 定义系统版本号
SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID" | awk -F '\"' '{print$2}')
## 判定系统名称、版本、版本号
case ${SYSTEM_FACTIONS} in
Debian)
SYSTEM_JUDGMENT=$(${DebianRelease} -is)
SYSTEM_VERSION=$(${DebianRelease} -cs)
;;
RedHat)
SYSTEM_JUDGMENT=$(cat $RedHatRelease | sed 's/ //g' | cut -c1-6)
if [[ ${SYSTEM_JUDGMENT} = ${SYSTEM_CENTOS} || ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]]; then
CENTOS_VERSION=$(echo ${SYSTEM_VERSION_NUMBER} | cut -c1)
else
CENTOS_VERSION=""
fi
;;
esac
## 判定系统处理器架构
case $Arch in
x86_64)
SYSTEM_ARCH=x86_64
SOURCE_ARCH=amd64
;;
aarch64)
SYSTEM_ARCH=ARM64
SOURCE_ARCH=arm64
;;
armv7l)
SYSTEM_ARCH=ARMv7
SOURCE_ARCH=armhf
;;
armv6l)
SYSTEM_ARCH=ARMv6
SOURCE_ARCH=armhf
;;
i686)
SYSTEM_ARCH=x86_32
echo -e '\n\033[31m---------- Docker Engine 不支持安装在 x86_32 架构的环境上 ----------\033[0m'
exit 1
;;
*)
SYSTEM_ARCH=$Arch
SOURCE_ARCH=armhf
;;
esac
## 定义软件源分支名称
if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]; then
SOURCE_BRANCH="centos"
else
SOURCE_BRANCH=${SYSTEM_JUDGMENT,,}
fi
## 定义软件源同步/更新文字
case ${SYSTEM_FACTIONS} in
Debian)
SYNC_TXT="更新"
;;
RedHat)
SYNC_TXT="同步"
;;
esac
}
## 基础环境判断
function PermissionJudgment() {
if [ $UID -ne 0 ]; then
echo -e '\033[31m ---------- Permission no enough, please use user ROOT! ---------- \033[0m'
exit
fi
}
function NetWorkJudgment() {
ping -c 1 www.baidu.com >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "\033[31m ----- Network connection error, please check the network environment and try again later! ----- \033[0m"
exit
fi
}
## 关闭防火墙
function TurnOffFirewall() {
systemctl status firewalld | grep running -q
if [ $? -eq 0 ]; then
systemctl disable --now firewalld >/dev/null 2>&1
[ -s $SelinuxConfig ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" $SelinuxConfig && setenforce 0 >/dev/null 2>&1
fi
}
## 安装环境包
function InstallationEnvironment() {
case ${SYSTEM_FACTIONS} in
Debian)
sed -i '/docker-ce/d' $DebianSourceList
rm -rf $DockerSourceList
;;
RedHat)
rm -rf $DockerRepo
;;
esac
case ${SYSTEM_FACTIONS} in
Debian)
apt-get update
;;
RedHat)
yum makecache
;;
esac
VERIFICATION_SOURCESYNC=$?
if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then
echo -e "\n\033[31m ---------- 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用 ---------- \033[0m\n"
exit 1
fi
case ${SYSTEM_FACTIONS} in
Debian)
apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
;;
RedHat)
yum install -y yum-utils device-mapper-persistent-data lvm2
;;
esac
}
## 卸载旧版本的 Docker Engine
function RemoveOldVersion() {
systemctl disable --now docker >/dev/null 2>&1
sleep 2s
case ${SYSTEM_FACTIONS} in
Debian)
apt-get remove -y docker-ce docker-ce-cli containerd.io runc >/dev/null 2>&1
apt-get autoremove -y >/dev/null 2>&1
;;
RedHat)
yum remove -y docker-ce docker-ce-cli containerd.io podman* runc >/dev/null 2>&1
yum autoremove -y >/dev/null 2>&1
;;
esac
}
## 查看可供安装的 Docker Engine 版本清单
function DockerEngineVersionList() {
case ${SYSTEM_FACTIONS} in
Debian)
apt-cache madison docker-ce | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCEVersionFile
apt-cache madison docker-ce-cli | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile
grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
;;
RedHat)
yum list docker-ce --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCEVersionFile
yum list docker-ce-cli --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile
grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
;;
esac
rm -rf $DockerCEVersionFile $DockerCECLIVersionFile
}
## 配置 Docker CE 源
function ConfigureDockerCEMirror() {
if [ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]; then
SOURCE_JUDGMENT=${SOURCE}
else
SOURCE_JUDGMENT="download.docker.com"
fi
case ${SYSTEM_FACTIONS} in
Debian)
if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_KALI} ]; then
curl -fsSL https://${SOURCE_JUDGMENT}/linux/debian/gpg | apt-key add - >/dev/null 2>&1
else
curl -fsSL https://${SOURCE_JUDGMENT}/linux/${SOURCE_BRANCH}/gpg | apt-key add - >/dev/null 2>&1
fi
echo "deb [arch=${SOURCE_ARCH}] https://${SOURCE_JUDGMENT}/linux/${SOURCE_BRANCH} ${SYSTEM_VERSION} stable" | tee $DockerSourceList >/dev/null 2>&1
if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_KALI} ]; then
sed -i "s/${SYSTEM_VERSION}/buster/g" $DockerSourceList
sed -i "s/${SOURCE_BRANCH}/debian/g" $DockerSourceList
fi
apt-get update >/dev/null 2>&1
;;
RedHat)
yum-config-manager -y --add-repo https://${SOURCE_JUDGMENT}/linux/${SOURCE_BRANCH}/docker-ce.repo
yum makecache >/dev/null 2>&1
;;
esac
}
## 安装 Docker Engine
function DockerEngine() {
case ${SYSTEM_FACTIONS} in
Debian)
dpkg -l | grep docker-ce-cli -q
;;
RedHat)
rpm -qa | grep docker-ce-cli -q
;;
esac
if [ $? -eq 0 ]; then
DockerEngineVersionList
DOCKER_INSTALLED_VERSION=$(docker -v | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}")
DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1)
if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then
if [ ${DOCKER_VERSION_INSTALL_LATEST} = "True" ]; then
echo -e '\n\033[32m---------- 检测到已安装最新版本的 Docker Engine跳过安装 ----------\033[0m'
ConfigureImageAccelerator
systemctl status docker | grep running -q
if [ $? -eq 0 ]; then
systemctl restart docker
fi
echo ''
systemctl enable --now docker >/dev/null 2>&1
DockerCompose
ShowVersion
AuthorSignature
exit
else
CHOICE_E=$(echo -e '\n\033[37m└ 检测到已安装最新版本的 Docker Engine是否继续安装其它版本 [ Y/n ]\033[0m')
fi
else
if [ ${DOCKER_VERSION_INSTALL_LATEST} = "True" ]; then
CHOICE_E=$(echo -e '\n\033[37m└ 检测到已安装旧版本的 Docker Engine是否覆盖安装为最新版本 [ Y/n ]\033[0m')
else
CHOICE_E=$(echo -e '\n\033[37m└ 检测到已安装旧版本的 Docker Engine是否继续安装其它版本 [ Y/n ]\033[0m')
fi
fi
read -p "${CHOICE_E}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy]*)
echo -en '\n[\033[34m*\033[0m] 正在卸载之前的版本... '
RemoveOldVersion
echo -e '\n\n[\033[32mOK\033[0m] 卸载完毕\n'
DockerEngineInstall
;;
[Nn]*) ;;
*)
echo -e '\n\033[33m---------- 输入错误,默认不覆盖安装 ----------\033[0m\n'
;;
esac
rm -rf $DockerVersionFile
else
RemoveOldVersion
DockerEngineInstall
fi
ConfigureImageAccelerator
systemctl stop docker >/dev/null 2>&1
systemctl enable --now docker >/dev/null 2>&1
}
function DockerEngineInstall() {
if [ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]; then
case ${SYSTEM_FACTIONS} in
Debian)
apt-get install -y docker-ce docker-ce-cli containerd.io
;;
RedHat)
yum install -y docker-ce docker-ce-cli containerd.io
;;
esac
else
DockerEngineVersionList
echo -e '\n\033[32m --------- 请选择你要安装的版本19.03.15 ---------- \033[0m\n'
cat $DockerVersionFile
echo -e '\n注以上可供选择的安装版本由官方源提供若系统过新可能无法安装较旧的版本'
while true; do
CHOICE_F=$(echo -e '\n\033[37m└ 请根据上面的列表,输入你想要安装的具体版本号:\033[0m\n')
read -p "${CHOICE_F}" DOCKER_VERSION
echo ''
cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo ${DOCKER_VERSION} | grep -Ew '[1,2][0,8,9].[0,1][0-9].[0-9]{1,2}' >/dev/null 2>&1
if [ $? -eq 0 ]; then
rm -rf $DockerVersionFile
break
else
echo -e '\033[33m ---------- 请输入正确的版本号 ---------- \033[0m'
fi
else
echo -e '\033[33m ---------- 输入错误请重新输入 ---------- \033[0m'
fi
done
case ${SYSTEM_FACTIONS} in
Debian)
CheckVersion=$(echo ${DOCKER_VERSION} | cut -c1-2)
CheckSubversion=$(echo ${DOCKER_VERSION} | cut -c4-5)
case ${CheckVersion} in
21 | 20 | 19)
INSTALL_JUDGMENT="5:"
;;
18)
if [ ${CheckSubversion} == "09" ]; then
INSTALL_JUDGMENT="5:"
else
INSTALL_JUDGMENT=""
fi
;;
*)
INSTALL_JUDGMENT=""
;;
esac
apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io
;;
RedHat)
yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io
;;
esac
fi
}
## 修改 Docker Hub 源
function ConfigureImageAccelerator() {
if [ ${REGISTRY_SOURCE_OFFICIAL} = "False" ]; then
if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
if [ -e $DockerConfigBackup ]; then
CHOICE_BACKUP=$(echo -e "\n\033[37m└ 检测到已备份的 Docker 配置文件,是否覆盖备份 [ Y/n ]\033[0m")
read -p "${CHOICE_BACKUP}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy]*)
cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1
;;
[Nn]*) ;;
*)
echo -e '\n\033[33m------------ 输入错误,默认不覆盖 ------------\033[0m '
;;
esac
else
cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1
echo -e "\n\033[37m└ 已备份原有 Docker 配置文件至 $DockerConfigBackup ...... \033[0m"
fi
sleep 2s
else
mkdir -p $DockerDir >/dev/null 2>&1
touch $DockerConfig
fi
echo -e '{\n "registry-mirrors": ["https://SOURCE"]\n}' >$DockerConfig
sed -i "s/SOURCE/$REGISTRY_SOURCE/g" $DockerConfig
systemctl daemon-reload
fi
}
## 安装 Docker Compose
function DockerCompose() {
if [ ${DOCKER_COMPOSE} == "True" ]; then
[ -e $DockerCompose ] && rm -rf $DockerCompose
if [ ${Arch} = "x86_64" ]; then
echo -e ''
if [ ${DOCKER_COMPOSE_DOWNLOAD_PROXY} = "True" ]; then
curl -L ${PROXY_URL}${DOCKER_COMPOSE_DOWNLOAD_URL} -o $DockerCompose
else
curl -L ${DOCKER_COMPOSE_DOWNLOAD_URL} -o $DockerCompose
fi
chmod +x $DockerCompose
else
echo -e '\n[*] 正在通过 pip 安装 Docker Compose ......\n'
if [ ${SYSTEM_FACTIONS} = ${SYSTEM_DEBIAN} ]; then
apt-get install -y python3-pip python3-dev gcc libffi-dev openssl >/dev/null 2>&1
elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then
yum install -y python3-pip python3-devel gcc libffi-devel openssl-devel >/dev/null 2>&1
fi
pip3 install --upgrade pip
if [ ${DOCKER_COMPOSE_DOWNLOAD_PROXY} = "True" ]; then
pip3 install -i https://mirrors.aliyun.com/pypi/simple docker-compose
else
pip3 install docker-compose
fi
[ $? -ne 0 ] && echo -e "\n\033[31m---------- Docker Compose 安装失败,检测到当前处理器为 ${Arch} 架构无法保证 100% 安装成功,自行查看 pip 报错原因 ----------\033[0m\n"
fi
echo -e ''
else
echo -e ''
fi
}
## 查看版本并验证安装结果
function ShowVersion() {
echo -e '\033[32m---------- 验证安装版本 ----------\033[0m\n'
docker -v
VERIFICATION_DOCKER=$?
[ ${DOCKER_COMPOSE} = "True" ] && docker-compose -v
if [ ${VERIFICATION_DOCKER} -eq 0 ]; then
echo -e '\n\033[32m---------- 安装完成 ----------\033[0m'
else
echo -e '\n\033[31m---------- 安装失败 ----------\033[0m'
exit
fi
systemctl status docker | grep running -q
if [[ $? -ne 0 ]]; then
sleep 2
systemctl disable --now docker >/dev/null 2>&1
sleep 2
systemctl enable --now docker >/dev/null 2>&1
sleep 2
systemctl status docker | grep running -q
if [[ $? -ne 0 ]]; then
echo -e '\n\033[31m [ERROR] 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致\033[0m'
echo -e '\n\033[31m 请执行 systemctl start docker 或 service docker start 命令尝试启动\033[0m'
echo -e '\n\033[31m 官方安装文档https://docs.docker.com/engine/install\033[0m'
fi
fi
}
function ChooseMirrors() {
echo -e '+---------------------------------------------------+'
echo -e '| |'
echo -e '| ============================================= |'
echo -e '| |'
echo -e '| 欢迎使用 Docker 一键安装脚本 |'
echo -e '| |'
echo -e '| ============================================= |'
echo -e '| |'
echo -e '+---------------------------------------------------+'
echo -e ''
echo -e '#####################################################'
echo -e ''
echo -e ' 提供以下 Docker CE 和 Docker Hub 源可供选择:'
echo -e ''
echo -e '#####################################################'
echo -e ''
echo -e ' Docker CE'
echo -e ''
echo -e ' ❖ 阿里云 1)'
echo -e ' ❖ 腾讯云 2)'
echo -e ' ❖ 华为云 3)'
echo -e ' ❖ Azure 4)'
echo -e ' ❖ 网易 5)'
echo -e ' ❖ 清华大学 6)'
echo -e ' ❖ 中科大 7)'
echo -e ' ❖ 官方 8)'
echo -e ''
echo -e ' Docker Hub'
echo -e ''
echo -e ' ❖ 阿里云(北京) 1)'
echo -e ' ❖ 阿里云(杭州) 2)'
echo -e ' ❖ 阿里云(成都) 3)'
echo -e ' ❖ 阿里云(广州) 4)'
echo -e ' ❖ 阿里云(香港) 5)'
echo -e ' ❖ 腾讯云 6)'
echo -e ' ❖ 华为云 7)'
echo -e ' ❖ Azure 8)'
echo -e ' ❖ DaoCloud 9)'
echo -e ' ❖ 中科大 10)'
echo -e ' ❖ 谷歌云 11)'
echo -e ' ❖ 官方 12)'
echo -e ''
echo -e '#####################################################'
echo -e ''
echo -e " 运行环境 ${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER} ${SYSTEM_ARCH}"
echo -e " 系统时间 $(date "+%Y-%m-%d %H:%M:%S")"
echo -e ''
echo -e '#####################################################'
CHOICE_A=$(echo -e '\n\033[37m└ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]\033[0m')
read -p "${CHOICE_A}" INPUT
case $INPUT in
1)
SOURCE="mirrors.aliyun.com/docker-ce"
;;
2)
SOURCE="mirrors.cloud.tencent.com/docker-ce"
;;
3)
SOURCE="repo.huaweicloud.com/docker-ce"
;;
4)
SOURCE="mirror.azure.cn/docker-ce"
;;
5)
SOURCE="mirrors.163.com/docker-ce"
;;
6)
SOURCE="mirrors.tuna.tsinghua.edu.cn/docker-ce"
;;
7)
SOURCE="mirrors.ustc.edu.cn/docker-ce"
;;
8)
SOURCE="download.docker.com"
;;
*)
SOURCE="mirrors.aliyun.com/docker-ce"
echo -e '\n\033[33m---------- 输入错误,默认使用阿里云 ----------\033[0m'
sleep 1s
;;
esac
## 是否手动选择安装版本
CHOICE_C=$(echo -e '\n\033[37m └ 是否安装最新版本的 Docker Engine [ Y/n ]\033[0m')
read -p "${CHOICE_C}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy]*)
DOCKER_VERSION_INSTALL_LATEST="True"
;;
[Nn]*)
DOCKER_VERSION_INSTALL_LATEST="False"
if [ ${SOURCE} != "download.docker.com" ]; then
echo -e "\n\033[33m ---------- Docker CE 源已替换成官方源 ---------- \033[0m"
fi
;;
*)
DOCKER_VERSION_INSTALL_LATEST="True"
echo -e '\n\033[33m---------- 输入错误,默认安装最新版本 ----------\033[0m'
;;
esac
CHOICE_B=$(echo -e '\n\033[37m└ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]\033[0m')
read -p "${CHOICE_B}" INPUT
case $INPUT in
1)
REGISTRY_SOURCE="registry.cn-beijing.aliyuncs.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
2)
REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
3)
REGISTRY_SOURCE="registry.cn-chengdu.aliyuncs.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
4)
REGISTRY_SOURCE="registry.cn-guangzhou.aliyuncs.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
5)
REGISTRY_SOURCE="registry.cn-hongkong.aliyuncs.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
6)
REGISTRY_SOURCE="mirror.ccs.tencentyun.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
7)
REGISTRY_SOURCE="0bab0ef02500f24b0f31c00db79ffa00.mirror.swr.myhuaweicloud.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
8)
REGISTRY_SOURCE="dockerhub.azk8s.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
9)
REGISTRY_SOURCE="f1361db2.m.daocloud.io"
REGISTRY_SOURCE_OFFICIAL="False"
;;
10)
REGISTRY_SOURCE="docker.mirrors.ustc.edu.cn"
REGISTRY_SOURCE_OFFICIAL="False"
;;
11)
REGISTRY_SOURCE="gcr.io"
REGISTRY_SOURCE_OFFICIAL="False"
;;
12)
REGISTRY_SOURCE="registry.docker-cn.com"
REGISTRY_SOURCE_OFFICIAL="True"
;;
*)
REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com"
REGISTRY_SOURCE_OFFICIAL="False"
echo -e '\n\033[33m---------- 输入错误,默认使用阿里云(杭州) ----------\033[0m'
sleep 1s
;;
esac
if [ -x $DockerCompose ]; then
CHOICE_D=$(echo -e '\n\033[37m└ 检测到已安装 Docker Compose ,是否覆盖安装 [ Y/n ]\033[0m')
else
CHOICE_D=$(echo -e '\n\033[37m└ 是否安装 Docker Compose [ Y/n ]\033[0m')
fi
read -p "${CHOICE_D}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy]*)
DOCKER_COMPOSE="True"
CHOICE_D1=$(echo -e '\n\033[37m └ 是否使用国内代理进行下载 [ Y/n ]\033[0m')
read -p "${CHOICE_D1}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy]*)
DOCKER_COMPOSE_DOWNLOAD_PROXY="True"
;;
[Nn]*)
DOCKER_COMPOSE_DOWNLOAD_PROXY="False"
;;
*)
DOCKER_COMPOSE_DOWNLOAD_PROXY="False"
echo -e '\n\033[33m---------- 输入错误,默认不使用 ----------\033[0m\n'
;;
esac
;;
[Nn]*)
DOCKER_COMPOSE="False"
;;
*)
DOCKER_COMPOSE="False"
echo -e '\n\033[33m---------- 输入错误,默认不安装 ----------\033[0m\n'
;;
esac
echo -e ''
[ ${SYSTEM_FACTIONS} == ${SYSTEM_REDHAT} ] && TurnOffFirewall
}
Combin_Function

BIN
DockerInstallation.x Normal file

Binary file not shown.

339
LICENSE Normal file
View File

@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

144
README.md Normal file
View File

@@ -0,0 +1,144 @@
# LinuxMirrors
<a href="https://github.com/SuperManito/LinuxMirrors"><img src="./icon/github-1.svg" width="34" height="42"></a>
<a href="https://github.com/SuperManito/LinuxMirrors"><img src="./icon/github-2.svg" width="70" height="52"></a>
<a href="https://gitee.com/SuperManito/LinuxMirrors"><img src="./icon/gitee.svg" width="100" height="50"/></a>
&nbsp;<a href="https://blog.csdn.net/u013246692/article/details/113124295"><img src="./icon/csdn.png" width="100" height="50"/></a>
- __`GNU/Linux` 一键更换国内软件源脚本__
- __本项目旨在为从事计算机相关行业的朋友们提供便利__
- __理论支持所有架构的环境`arm64` 环境已经过测试__
> 🏷️点击上方图标可快速跳转至本项目所发布在的其它仓库或博客
### 更新日志
- __2021 / 06 / 05__
ㅤ新增对于 Red Hat Enterprise Linux 的全面适配。
- __2021 / 05 / 30__
ㅤ新增选择软件源的 WEB 协议功能,修复了一些错误。
- __2021 / 05 / 05__
ㅤ新增关闭防火墙功能。
- __2021 / 04 / 24__
ㅤ新增基于 CentOS 的添加 EPEL 扩展源功能,修复了一些错误。
- __2021 / 04 / 22__
ㅤ重新定义了备份原有源功能,可以通过检测判断是否执行覆盖备份操作。
***
### 已适配的 GNU/Linux 发行版 <img src="./icon/linux.svg" width="16" height="16" alt="Linux Logo"/>
<table>
<tr>
<td rowspan="7"> 支持<br/>版本<br/>
</tr>
<tr>
<td><a href="https://www.debian.org"><img src="./icon/debian.svg" width="16" height="16"/></a>&nbsp;Debian</td>
<td align="center">8.0 ~ 11.0</td>
</tr>
<tr>
<td><a href="https://cn.ubuntu.com"><img src="./icon/ubuntu.svg" width="16" height="16"/></a>&nbsp;Ubuntu</td>
<td align="center">16.04 ~ 21.04</td>
</tr>
<tr>
<td><a href="https://www.kali.org"><img src="./icon/kali.svg" width="16" height="16"/></a>&nbsp;Kali Linux</td>
<td align="center">2.0 ~ 2021.2</td>
</tr>
<tr>
<td><a href="https://www.redhat.com/zhtechnologies/linux-platforms/enterprise-linux"><img src="./icon/redhat.svg" width="16" height="16"/></a>&nbsp;RHEL</td>
<td align="center">7.0 ~ 8.4</td>
</tr>
<tr>
<td><a href="https://www.centos.org"><img src="./icon/centos.svg" width="16" height="16"/></a>&nbsp;CentOS</td>
<td align="center">7.0 ~ 8.4</td>
</tr>
<tr>
<td><a href="https://getfedora.org/zh_Hans_CN"><img src="./icon/fedora.ico" width="16" height="16"/></a>&nbsp;Fedora</td>
<td align="center">28 ~ 34</td>
</tr>
</table>
> 目前仅支持上述基于 Debian 与 Redhat 系的发行版和及其部分衍生版本 \
> 同样支持上述版本中拥有相同底层核心的其它发行版,例如 [`Armbian`](https://www.armbian.com) [`Kubuntu`](https://kubuntu.org) [`Oracle Linux`](https://www.oracle.com/cn/technical-resources) 等
### 脚本当前使用的开源镜像站
| | 镜像站名称 | 镜像站地址 | IPv6 | Kali Linux | Fedora | EPEL |
| :------: | :------: | :------: | :------: | :------: | :------: | :------: |
| 1 | 阿里云 | [mirrors.aliyun.com](https://developer.aliyun.com/special/mirrors/notice) | √ | √ | √ | √ |
| 2 | 腾讯云 | [mirrors.cloud.tencent.com](https://mirrors.cloud.tencent.com) | √ | √ | √ | √ |
| 3 | 华为云 | [mirrors.huaweicloud.com](https://mirrors.huaweicloud.com) | √ | √ | √ | √ |
| 4 | 网易 | [mirrors.163.com](https://mirrors.163.com) | | | √ | |
| 5 | 搜狐 | [mirrors.sohu.com](https://mirrors.sohu.com) | | | | |
| 6 | 清华大学 | [mirrors.tuna.tsinghua.edu.cn](https://mirrors.tuna.tsinghua.edu.cn) | √ | √ | √ | √ |
| 7 | 浙江大学 | [mirrors.zju.edu.cn](https://mirrors.zju.edu.cn) | | √ | √ | √ |
| 8 | 南京大学 | [mirrors.nju.edu.cn](https://mirrors.nju.edu.cn) | | √ | √ | √ |
| 9 | 重庆大学 | [mirrors.cqu.edu.cn](https://mirrors.cqu.edu.cn) | | √ | √ | √ |
| 10 | 兰州大学 | [mirror.lzu.edu.cn](https://mirror.lzu.edu.cn) | √ | | √ | √ |
| 11 | 上海交通大学 | [mirror.sjtu.edu.cn](https://mirror.sjtu.edu.cn) | √ | √ | √ | √ |
| 12 | 哈尔滨工业大学 | [mirrors.hit.edu.cn](https://mirrors.hit.edu.cn) | √ | √ | | √ |
| 13 | 中国科学技术大学 | [mirrors.ustc.edu.cn](https://mirrors.ustc.edu.cn) | √ | √ | √ | √ |
> 所有镜像站均支持 `Debian` `Ubuntu` `CentOS` 软件源,建议优先选择由企业提供的软件源\
> 如果使用过程中脚本不能正常输出中文内容则可对照此列表使用,顺序与脚本一致
### 脚本执行流程
- └ 选择国内源 `交互`
- └ 检测如果是 RHEL或CentOS 系统选择是否安装/覆盖 EPEL 扩展国内源 `交互`
- └ 选择软件源使用的 WEB 协议 `交互`
- └ 检测 防火墙 和 SELINUX 如果开启并且系统是 RHEL或CentOS 选择是否关闭 `交互`
- └ 备份原有源
- └ 检测如果存在重复的备份文件选择是否覆盖 `交互`
- └ 更换国内源
- └ 选择是否更新软件包 `交互`
- └ 选择是否清理已下载的软件包缓存 `交互`
***
### 如何使用
> 1. 完整复制下面的命令到终端按回车键即可执行,若无法安装 `curl` 软件包可复制源码到本地后手动执行。
> 2. 为了适配所有环境,建议使用 `Root` 用户执行脚本,切换命令为 `sudo -i` ,如遇报错请查看常见问题与帮助。
> 3. 如果您使用的环境没有安装或不支持简体中文环境,请通过 `SSH客户端工具` 使用,否则将无法正确选择交互内容。
> 4. 执行脚本过程中会自动备份原有源无需手动备份,期间会在终端输出多个主观选择交互内容,可按回车键快速确认。
> 5. 脚本支持在原有源配置错误或者不存在的情况下使用,并且可以重复使用;脚本变更的软件源默认使用 `Http 协议`。
- `GNU/Linux` 一键更换国内软件源脚本
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
> __注意__
> - _Debian 系 Linux 默认注释了源码仓库和预发布软件源,若需启用可将 list 源文件中相关内容的所在行 `取消注释`。_
> - _RedHat 系 Linux 配置了所有可以配置的仓库,但有一些仓库默认没有启用,若需启用可将 repo 源文件中的 `enabled=0`修改成 `enabled=1`。_
***
### 其它脚本
- `Docker` 一键安装脚本
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
> `Docker CE`Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\
> `Docker Hub`Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,简称镜像加速器。
> _注意脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本和下载源,还可手动选择镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用。_
***
### 常见问题与帮助
- 1. 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包,安装命令如下:
sudo apt install -y curl 或 sudo yum install -y curl
- 2. 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包,安装命令如下:
sudo apt install -y wget 或 sudo yum install -y wget
- 3. 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行。
***
### 捐助作者
<img src="./icon/thanks.jpg" width="250" height="250" alt="微信赞赏码"/><br/>
> 项目已设立开源许可协议,传播时需在显著位置标注来源和作者,请尊重本人的知识成果\
> 建议通过命令直接调用脚本,如有意见与建议您可以提交至 __Issues__谢谢
***
### License
Copyright © 2021, [SuperManito](https://github.com/SuperManito). Released under the [GPL-2.0](https://github.com/SuperManito/LinuxMirrors/blob/main/LICENSE).
***
__如果您觉得这个项目不错的话可以在右上角给颗⭐吗方便分享给更多的朋友吗__

1
icon/centos.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="2500" height="2500" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M107.86 118.641l9.229 9.177-9.229 9.175H42.901v30.571L3.286 127.818l39.615-39.08v29.903h64.96zm28.554-78.068h78.929v78.93h-78.929v-78.93z" fill="#932279"/><path d="M137.275 107.86l-9.175 9.229-9.175-9.229V42.901H88.352L128.1 3.286l39.077 39.615h-29.902v64.96zm-.86 28.554h78.928v78.93h-78.929v-78.93z" fill="#EFA724"/><path d="M148.057 137.275l-9.23-9.175 9.23-9.175h64.958V88.352l39.617 39.748-39.617 39.077v-29.902h-64.958zm-107.484-.86h78.929v78.93H40.573v-78.93z" fill="#262577"/><path d="M118.641 148.057l9.175-9.23 9.177 9.23v64.96h30.571l-39.748 39.615-39.076-39.615h29.901v-64.96zM40.573 40.573h78.929v78.93H40.573v-78.93z" fill="#9CCD2A"/><path d="M37.754 37.754h84.567v84.567H37.754V37.754zm5.637 78.93h73.291V43.393H43.391v73.291zm90.206-78.93h84.567v84.567h-84.567V37.754zm5.637 78.93h73.291V43.393h-73.291v73.291zm-5.637 16.913h84.567v84.569h-84.567v-84.57zm5.637 78.928h73.291v-73.291h-73.291v73.291zm-101.48-78.928h84.567v84.569H37.754v-84.57zm5.637 78.928h73.291v-73.291H43.391v73.291z" fill="#FFF"/><path d="M60.188 187.758l-59.8-59.8L60.187 68.16l59.8 59.798-59.798 59.8zm-51.826-59.8l51.826 51.826 51.824-51.826-51.826-51.824-51.824 51.824zm119.596-7.972L68.16 60.188l59.798-59.8 59.798 59.8-59.798 59.798zM76.134 60.188l51.824 51.824 51.826-51.824-51.826-51.826-51.824 51.826zm119.596 127.57l-59.798-59.8L195.73 68.16l59.798 59.798-59.798 59.8zm-51.826-59.8l51.826 51.826 51.824-51.826-51.824-51.824-51.826 51.824zm-15.946 127.57L68.16 195.73l59.798-59.798 59.798 59.798-59.798 59.798zM76.134 195.73l51.824 51.824 51.826-51.824-51.826-51.824-51.824 51.824z" fill="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
icon/csdn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

1
icon/debian.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="2019" height="2500" viewBox="0 0 256 317" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><g fill="#A80030"><path d="M152.797 167.425c-5.251.073.993 2.706 7.848 3.761a70.171 70.171 0 0 0 5.143-4.43c-4.269 1.046-8.614 1.07-12.991.67M180.98 160.4c3.127-4.315 5.406-9.04 6.21-13.926-.702 3.483-2.593 6.49-4.372 9.663-9.815 6.18-.923-3.67-.006-7.413-10.554 13.284-1.45 7.966-1.832 11.677M191.382 133.33c.635-9.455-1.86-6.466-2.7-2.857.98.508 1.754 6.665 2.7 2.858M132.886 4.088c2.802.503 6.054.888 5.598 1.557 3.066-.672 3.761-1.291-5.598-1.557M138.484 5.645l-1.98.41 1.843-.164.137-.246"/><path d="M225.866 136.916c.312 8.492-2.484 12.612-5.006 19.905l-4.538 2.268c-3.714 7.211.36 4.579-2.3 10.315-5.797 5.154-17.593 16.13-21.368 17.132-2.756-.062 1.867-3.253 2.472-4.503-7.761 5.33-6.227 8-18.097 11.238l-.347-.771c-29.274 13.771-69.937-13.52-69.402-50.76-.313 2.364-.889 1.774-1.537 2.73-1.511-19.16 8.848-38.405 26.319-46.262 17.088-8.46 37.122-4.988 49.362 6.42-6.724-8.808-20.107-18.144-35.968-17.27-15.536.245-30.07 10.12-34.921 20.837-7.96 5.012-8.883 19.318-12.352 21.936-4.666 34.296 8.778 49.114 31.52 66.544 3.58 2.414 1.009 2.78 1.494 4.617-7.557-3.539-14.476-8.88-20.165-15.42 3.018 4.419 6.276 8.714 10.487 12.089-7.124-2.414-16.641-17.264-19.42-17.868 12.281 21.988 49.827 38.562 69.486 30.34-9.096.335-20.653.186-30.874-3.592-4.293-2.209-10.13-6.785-9.088-7.641 26.83 10.023 54.546 7.591 77.762-11.02 5.906-4.599 12.358-12.424 14.222-12.532-2.808 4.222.48 2.03-1.677 5.76 5.885-9.491-2.557-3.864 6.083-16.39l3.191 4.394c-1.186-7.878 9.783-17.444 8.67-29.904 2.516-3.81 2.808 4.1.137 12.866 3.706-9.725.976-11.288 1.929-19.312 1.029 2.697 2.379 5.564 3.071 8.41-2.414-9.398 2.478-15.826 3.688-21.288-1.193-.528-3.726 4.156-4.305-6.945.085-4.822 1.342-2.528 1.827-3.714-.947-.544-3.43-4.24-4.941-11.33 1.095-1.665 2.927 4.32 4.418 4.565-.959-5.637-2.61-9.935-2.677-14.26-4.354-9.099-1.54 1.213-5.073-3.906-4.634-14.456 3.846-3.355 4.419-9.924 7.024 10.178 11.03 25.951 12.868 32.485-1.402-7.966-3.67-15.683-6.437-23.149 2.133.897-3.436-16.39 2.773-4.94-6.633-24.406-28.388-47.21-48.401-57.91 2.449 2.24 5.54 5.055 4.43 5.496-9.953-5.926-8.202-6.388-9.628-8.892-8.109-3.299-8.64.266-14.012.006-15.282-8.106-18.227-7.244-32.291-12.322l.64 2.99c-10.125-3.373-11.797 1.279-22.74.01-.666-.52 3.507-1.881 6.94-2.38-9.789 1.29-9.33-1.93-18.909.356 2.361-1.657 4.857-2.753 7.376-4.161-7.983.485-19.058 4.646-15.64.862-13.02 5.809-36.145 13.964-49.122 26.132l-.41-2.727c-5.945 7.14-25.93 21.32-27.522 30.565l-1.59.371c-3.094 5.24-5.096 11.177-7.55 16.568-4.047 6.896-5.932 2.654-5.356 3.735-7.96 16.138-11.914 29.7-15.33 40.821 2.435 3.638.059 21.9.98 36.517-3.998 72.187 50.662 142.275 110.41 158.458 8.757 3.132 21.78 3.012 32.858 3.334-13.07-3.738-14.76-1.981-27.49-6.42-9.185-4.325-11.198-9.263-17.702-14.908l2.574 4.55c-12.758-4.515-7.42-5.588-17.798-8.875l2.75-3.591c-4.135-.313-10.953-6.97-12.817-10.654l-4.523.178c-5.435-6.706-8.331-11.54-8.12-15.282l-1.462 2.603c-1.657-2.843-19.995-25.15-10.481-19.957-1.768-1.616-4.117-2.63-6.665-7.259l1.937-2.215c-4.579-5.89-8.427-13.441-8.135-15.957 2.443 3.299 4.138 3.915 5.815 4.48-11.563-28.69-12.211-1.581-20.969-29.204l1.853-.149c-1.42-2.139-2.282-4.462-3.425-6.74l.807-8.037c-8.325-9.625-2.33-40.926-1.128-58.093.832-6.98 6.948-14.412 11.6-26.065l-2.834-.488c5.417-9.45 30.933-37.952 42.75-36.485 5.724-7.19-1.137-.026-2.256-1.838 12.573-13.012 16.527-9.193 25.013-11.533 9.151-5.432-7.855 2.118-3.516-2.072 15.82-4.041 11.212-9.187 31.85-11.238 2.178 1.239-5.051 1.914-6.866 3.521 13.181-6.449 41.712-4.982 60.244 3.58 21.504 10.049 45.663 39.754 46.616 67.704l1.084.292c-.55 11.11 1.7 23.958-2.198 35.76l2.654-5.587"/><path d="M95.483 174.634l-.736 3.682c3.45 4.687 6.189 9.765 10.595 13.43-3.17-6.19-5.525-8.746-9.859-17.112M103.642 174.313c-1.827-2.02-2.908-4.45-4.117-6.873 1.157 4.257 3.526 7.916 5.733 11.636l-1.616-4.763M248.003 142.936l-.771 1.934c-1.414 10.046-4.468 19.987-9.15 29.203 5.173-9.725 8.519-20.36 9.921-31.137M133.923 1.57c3.55-1.301 8.728-.714 12.495-1.57-4.91.412-9.795.657-14.62 1.28l2.125.29M9.282 67.847c.819 7.574-5.698 10.514 1.444 5.52 3.828-8.623-1.496-2.381-1.444-5.52M.89 102.9c1.645-5.049 1.943-8.082 2.572-11.004C-1.085 97.708 1.37 98.946.89 102.9"/></g></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
icon/fedora.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

17
icon/gitee.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

1
icon/github-1.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="2500" height="2432" viewBox="0 0 256 249" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><g fill="#161614"><path d="M127.505 0C57.095 0 0 57.085 0 127.505c0 56.336 36.534 104.13 87.196 120.99 6.372 1.18 8.712-2.766 8.712-6.134 0-3.04-.119-13.085-.173-23.739-35.473 7.713-42.958-15.044-42.958-15.044-5.8-14.738-14.157-18.656-14.157-18.656-11.568-7.914.872-7.752.872-7.752 12.804.9 19.546 13.14 19.546 13.14 11.372 19.493 29.828 13.857 37.104 10.6 1.144-8.242 4.449-13.866 8.095-17.05-28.32-3.225-58.092-14.158-58.092-63.014 0-13.92 4.981-25.295 13.138-34.224-1.324-3.212-5.688-16.18 1.235-33.743 0 0 10.707-3.427 35.073 13.07 10.17-2.826 21.078-4.242 31.914-4.29 10.836.048 21.752 1.464 31.942 4.29 24.337-16.497 35.029-13.07 35.029-13.07 6.94 17.563 2.574 30.531 1.25 33.743 8.175 8.929 13.122 20.303 13.122 34.224 0 48.972-29.828 59.756-58.22 62.912 4.573 3.957 8.648 11.717 8.648 23.612 0 17.06-.148 30.791-.148 34.991 0 3.393 2.295 7.369 8.759 6.117 50.634-16.879 87.122-64.656 87.122-120.973C255.009 57.085 197.922 0 127.505 0"/><path d="M47.755 181.634c-.28.633-1.278.823-2.185.389-.925-.416-1.445-1.28-1.145-1.916.275-.652 1.273-.834 2.196-.396.927.415 1.455 1.287 1.134 1.923M54.027 187.23c-.608.564-1.797.302-2.604-.589-.834-.889-.99-2.077-.373-2.65.627-.563 1.78-.3 2.616.59.834.899.996 2.08.36 2.65M58.33 194.39c-.782.543-2.06.034-2.849-1.1-.781-1.133-.781-2.493.017-3.038.792-.545 2.05-.055 2.85 1.07.78 1.153.78 2.513-.019 3.069M65.606 202.683c-.699.77-2.187.564-3.277-.488-1.114-1.028-1.425-2.487-.724-3.258.707-.772 2.204-.555 3.302.488 1.107 1.026 1.445 2.496.7 3.258M75.01 205.483c-.307.998-1.741 1.452-3.185 1.028-1.442-.437-2.386-1.607-2.095-2.616.3-1.005 1.74-1.478 3.195-1.024 1.44.435 2.386 1.596 2.086 2.612M85.714 206.67c.036 1.052-1.189 1.924-2.705 1.943-1.525.033-2.758-.818-2.774-1.852 0-1.062 1.197-1.926 2.721-1.951 1.516-.03 2.758.815 2.758 1.86M96.228 206.267c.182 1.026-.872 2.08-2.377 2.36-1.48.27-2.85-.363-3.039-1.38-.184-1.052.89-2.105 2.367-2.378 1.508-.262 2.857.355 3.049 1.398"/></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

1
icon/github-2.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="2500" height="676" viewBox="-0.122 175.062 480.244 129.875"><g fill="#121110"><path d="M92.375 230.65H52.019a1.887 1.887 0 0 0-1.886 1.886v19.731a1.89 1.89 0 0 0 1.886 1.889h15.743v24.513s-3.535 1.206-13.308 1.206c-11.53 0-27.637-4.214-27.637-39.632 0-35.425 16.772-40.087 32.518-40.087 13.63 0 19.502 2.401 23.238 3.556 1.174.36 2.26-.808 2.26-1.851l4.502-19.063c0-.487-.165-1.075-.721-1.474-1.517-1.082-10.774-6.262-34.16-6.262-26.941 0-54.576 11.463-54.576 66.562 0 55.103 31.64 63.313 58.302 63.313 22.076 0 35.468-9.434 35.468-9.434.552-.306.612-1.077.612-1.431v-61.537c0-1.04-.844-1.885-1.885-1.885M300.354 181.664a1.88 1.88 0 0 0-1.873-1.896h-22.724a1.889 1.889 0 0 0-1.882 1.896l.006 43.913h-35.419v-43.913a1.882 1.882 0 0 0-1.875-1.896h-22.722a1.887 1.887 0 0 0-1.877 1.896v118.904c0 1.048.843 1.901 1.877 1.901h22.722c1.039 0 1.875-.854 1.875-1.901v-50.86h35.419l-.062 50.86c0 1.048.844 1.901 1.883 1.901h22.777c1.041 0 1.873-.854 1.875-1.901V181.664M135.254 197.268c0-8.183-6.56-14.795-14.653-14.795-8.085 0-14.65 6.612-14.65 14.795 0 8.173 6.565 14.802 14.65 14.802 8.093 0 14.653-6.629 14.653-14.802M133.629 275.486V220.6a1.89 1.89 0 0 0-1.88-1.895h-22.651c-1.039 0-1.969 1.072-1.969 2.115v78.634c0 2.312 1.44 2.998 3.304 2.998h20.408c2.239 0 2.788-1.1 2.788-3.034v-23.932M386.71 218.884h-22.549c-1.034 0-1.876.852-1.876 1.901v58.302s-5.729 4.192-13.859 4.192c-8.13 0-10.287-3.689-10.287-11.65v-50.844c0-1.049-.841-1.901-1.875-1.901h-22.886c-1.032 0-1.879.852-1.879 1.901v54.693c0 23.646 13.179 29.431 31.31 29.431 14.873 0 26.864-8.216 26.864-8.216s.571 4.329.829 4.843c.259.512.932 1.029 1.659 1.029l14.56-.064c1.032 0 1.879-.854 1.879-1.898l-.008-79.817c0-1.05-.843-1.902-1.882-1.902M439.445 283.207c-7.821-.238-13.126-3.788-13.126-3.788v-37.653s5.233-3.208 11.654-3.782c8.12-.727 15.944 1.726 15.944 21.095.001 20.426-3.53 24.457-14.472 24.128zm8.894-66.993c-12.807 0-21.518 5.714-21.518 5.714v-40.263c0-1.05-.839-1.897-1.875-1.897h-22.787a1.887 1.887 0 0 0-1.878 1.897v118.903c0 1.048.842 1.901 1.881 1.901h15.811c.711 0 1.25-.367 1.648-1.009.393-.639.96-5.482.96-5.482s9.318 8.83 26.957 8.83c20.708 0 32.584-10.504 32.584-47.154 0-36.651-18.967-41.44-31.783-41.44M198.936 218.695h-17.045l-.026-22.519c0-.852-.439-1.278-1.424-1.278h-23.228c-.903 0-1.388.398-1.388 1.265v23.271s-11.64 2.809-12.427 3.037a1.886 1.886 0 0 0-1.361 1.812v14.623c0 1.052.84 1.898 1.879 1.898h11.909v35.178c0 26.13 18.328 28.697 30.696 28.697 5.651 0 12.411-1.814 13.527-2.228.675-.248 1.067-.947 1.067-1.705l.019-16.086c0-1.05-.886-1.897-1.884-1.897-.993 0-3.534.404-6.15.404-8.372 0-11.209-3.893-11.209-8.932l-.001-33.432h17.046c1.039 0 1.88-.847 1.88-1.898v-18.317a1.884 1.884 0 0 0-1.88-1.893"/></g></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

1
icon/kali.svg Normal file
View File

@@ -0,0 +1 @@
<svg viewBox="0 0 519.36 293.65" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="m478.2 30.541c-1.708-.45694-3.4119-.54087-5.1767-.54087h-427.93c-6.4231.050078-12.061 4.1054-14.195 10.144-.69747 1.9633-.90029 3.9505-.90029 6.0098v202.42c.23751 8.4346 6.8365 15.012 15.194 15.033 17.519.0232 53.594-.0631 53.594-.0631l-.06358-15.665h-52.62c-.27926-1.6828-.20829-199.78.06358-200.69 1.6119-.225 425.79-.1438 426.72.07426.25653 1.5279.1824 199.65-.0982 200.69h-354.74v15.667s1.3845 0 2.0182.0232h354.25c6.3531-.0631 11.982-4.0483 14.147-10.038.69741-1.9079.89785-3.8747.89785-5.886v-202.8c-.13354-6.6996-4.6932-12.585-11.143-14.365zm-360.14 174.01v-40.513c0-.91374.25653-1.5554 1.0028-2.1347 3.129-2.4743 6.2158-5.019 9.3034-7.5448.30803-.22871.60752-.43189.99168-.71223.33308.4305.61322.78284.87185 1.1699 5.2486 7.5722 10.501 15.136 15.746 22.696 6.4361 9.3128 12.883 18.583 19.306 27.852.35674.53803.68407.94598 1.475.94598 6.7627-.0232 13.519-.0232 20.273-.0232.22361 0 .4537-.0743.80993-.15494-14.956-21.781-29.85-43.412-44.79-65.174 3.0057-3.4891 5.9134-6.8472 8.8178-10.288 2.912-3.3691 5.8136-6.7497 8.7208-10.142 2.9029-3.3839 5.7849-6.7734 8.6954-10.161 2.9045-3.3952 5.8136-6.7826 8.6851-10.168 2.8915-3.3601 5.7622-6.7219 8.8271-10.347h-1.704c-6.1202 0-12.237.03707-18.358-.0232-1.1253 0-1.835.32611-2.5775 1.1995-15.036 17.806-30.108 35.614-45.178 53.399-.19994.22776-.45973.43188-.89398.83223v-44.294c0-3.6662.0631-7.3435 0-11.012h-18.909v116.15c1.5011.2635 17.926.20969 18.939-.0631v-1.4778zm100.96 1.681c.15215-.43977.32612-.81748.45878-1.2267 3.0557-8.6814 6.1147-17.348 9.1787-26.037.50973-1.3965 1.0166-2.8008 1.4772-4.2031.18231-.58535.48083-.89161 1.0981-.81748.19994.0232.43236 0 .6355 0h43.136c3.8993 10.803 7.7716 21.529 11.629 32.255h20.193c-14.567-39.029-29.072-77.903-43.549-116.77h-20.649c-.1327.25469-.2301.44024-.28254.61435-14.377 38.551-28.737 77.119-43.109 115.66-.0631.0631-.0631.18231-.0631.25654v.1234c0 .0501.0631.0743.0743.1322h19.734zm17.457-50.036c3.9768-11.515 8.0101-22.979 11.885-34.526 1.5549-4.6404 2.7269-9.4269 4.0507-14.159.11181-.3586.18231-.7185.33309-1.2583.19994.30524.35627.49141.41055.69246 3.1587 11.794 7.4766 23.237 11.398 34.807 1.6288 4.8139 3.3157 9.5985 4.9739 14.415.12618.43097.25097.86203.40405 1.3949h-33.882c.15123-.50194.27927-.93364.42586-1.3654zm102.24-57.278c0-3.0077.11083-5.988-.0868-8.9671h-18.675c-.31545 1.4523-.23845 115.33.0631 116.29h68.021v-16.18h-32.812c-2.7584 0-5.5385.0232-8.2848 0-2.7069-.0232-5.4025.0993-8.2101-.0631v-91.058zm81.201-8.2513c0-.18045 0-.33029-.0626-.51752 0-.05008-.0626-.06309-.0626-.09881 0-.0232-.0749-.06309-.0749-.06309h-18.739v116.22h18.838c.0626-.19531.11047-.29922.11047-.43097v-115.11z" fill="#367bf0" fill-rule="evenodd" stroke-width="1.2274"/></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

1
icon/linux.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="31" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M29.06 18.938c.599 1.054 1.15 2.133 1.577 3.269.2.532.158 1.048-.218 1.495-.368.439-.845.364-1.327.237a90.272 90.272 0 0 0-.888-.228 54.323 54.323 0 0 1-1.492-.392c-.276-.078-.369-.026-.431.257-.32 1.46-.909 2.813-1.827 3.994-2.336 3.007-5.343 4.459-8.936 4.43-3.594.029-6.6-1.423-8.937-4.43-.919-1.181-1.506-2.533-1.827-3.994-.062-.283-.155-.335-.43-.257-.495.14-.994.266-1.493.392-.296.075-.592.15-.888.228-.482.127-.958.202-1.327-.237-.376-.446-.42-.963-.218-1.495.428-1.136.978-2.214 1.576-3.269a32.87 32.87 0 0 1 5.42-7.118c.165-.164.276-.354.367-.566.496-1.165.72-2.397.946-3.63.036-.193.07-.387.107-.58.201-1.067.423-2.129.88-3.122C10.878 1.34 12.93.088 15.119.002h.135c.088-.002.176-.003.264 0 .087-.003.175-.002.263 0h.135c2.189.087 4.24 1.338 5.426 3.92.455.994.677 2.056.879 3.123l.11.591c.224 1.229.45 2.458.944 3.619.09.21.201.401.367.565a32.906 32.906 0 0 1 5.419 7.118zM15.519 28.52c1.654-.004 3.2-.469 4.576-1.474 2.327-1.7 3.318-4.055 3.087-6.882-.237-2.89-1.456-5.348-3.611-7.315a6.995 6.995 0 0 0-2.352-1.414s-.084-.032-.228-.077c.131-.078.265-.153.4-.224l.687-.445c.457-.297.914-.593 1.373-.887.265-.169.435-.392.411-.713-.023-.318-.213-.526-.503-.651-2.532-1.093-5.07-1.195-7.619-.058-.306.136-.544.32-.569.684-.025.362.187.575.47.755.482.305.96.616 1.438.927l.592.384c.135.07.267.144.397.222-.157.048-.25.083-.25.083a6.995 6.995 0 0 0-2.352 1.414c-2.155 1.967-3.374 4.424-3.61 7.315-.232 2.826.76 5.182 3.086 6.882 1.376 1.005 2.922 1.469 4.577 1.474z" fill="#041027"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

1
icon/redhat.svg Normal file
View File

@@ -0,0 +1 @@
<svg viewBox="0 0 190.35000000000002 144" xmlns="http://www.w3.org/2000/svg" width="2500" height="1891"><path d="M126.97 83c12.5 0 30.6-2.6 30.6-17.47a14 14 0 0 0-.3-3.42l-7.45-32.35c-1.72-7.12-3.23-10.35-15.73-16.6C124.4 8.2 103.25 0 97 0c-5.8 0-7.5 7.5-14.44 7.5-6.68 0-11.64-5.6-17.9-5.6-6 0-9.9 4.1-12.92 12.5 0 0-8.4 23.72-9.5 27.16a6.43 6.43 0 0 0-.2 1.94c0 9.22 36.3 39.45 84.93 39.45m32.53-11.38c1.73 8.2 1.73 9.05 1.73 10.13 0 14-15.74 21.77-36.43 21.77C78.04 103.5 37.08 76.1 37.08 58a18.45 18.45 0 0 1 1.5-7.34C21.8 51.5 0 54.5 0 73.72 0 105.2 74.6 144 133.65 144c45.28 0 56.7-20.48 56.7-36.65 0-12.72-11-27.16-30.83-35.78" fill="#e00"/><path d="M159.5 71.57c1.73 8.2 1.73 9.05 1.73 10.13 0 14-15.74 21.77-36.43 21.77C78.04 103.5 37.08 76.1 37.08 58a18.45 18.45 0 0 1 1.5-7.34l3.67-9.06a6.43 6.43 0 0 0-.22 1.9c0 9.22 36.3 39.45 84.94 39.45 12.5 0 30.6-2.58 30.6-17.46a14 14 0 0 0-.3-3.43z"/></svg>

After

Width:  |  Height:  |  Size: 909 B

BIN
icon/thanks.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

1
icon/ubuntu.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="2500" height="2500" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M255.637 127.683c0 70.514-57.165 127.68-127.683 127.68C57.434 255.363.27 198.197.27 127.683.27 57.165 57.436 0 127.954 0c70.519 0 127.683 57.165 127.683 127.683z" fill="#DD4814"/><path d="M41.133 110.633c-9.419 0-17.05 7.631-17.05 17.05 0 9.414 7.631 17.046 17.05 17.046 9.415 0 17.046-7.632 17.046-17.046 0-9.419-7.631-17.05-17.046-17.05zm121.715 77.478c-8.153 4.71-10.95 15.13-6.24 23.279 4.705 8.154 15.125 10.949 23.279 6.24 8.153-4.705 10.949-15.125 6.24-23.28-4.705-8.148-15.131-10.943-23.279-6.239zm-84.686-60.428c0-16.846 8.368-31.73 21.171-40.742L86.87 66.067c-14.914 9.97-26.012 25.204-30.624 43.047 5.382 4.39 8.826 11.075 8.826 18.568 0 7.489-3.444 14.174-8.826 18.565C60.852 164.094 71.95 179.33 86.87 189.3l12.463-20.88c-12.803-9.007-21.171-23.89-21.171-40.737zm49.792-49.797c26.013 0 47.355 19.944 49.595 45.38l24.29-.358c-1.194-18.778-9.398-35.636-22.002-48.032-6.482 2.449-13.97 2.074-20.44-1.656-6.483-3.741-10.548-10.052-11.659-16.902a74.26 74.26 0 0 0-19.785-2.69 73.787 73.787 0 0 0-32.819 7.663l11.845 21.227a49.596 49.596 0 0 1 20.975-4.632zm0 99.59a49.601 49.601 0 0 1-20.974-4.632l-11.845 21.225a73.712 73.712 0 0 0 32.82 7.671 74.04 74.04 0 0 0 19.784-2.697c1.111-6.85 5.177-13.155 11.658-16.902 6.476-3.737 13.959-4.105 20.44-1.656 12.605-12.396 20.808-29.254 22.004-48.032l-24.297-.358c-2.235 25.443-23.576 45.38-49.59 45.38zm34.888-110.231c8.154 4.708 18.575 1.92 23.279-6.234 4.71-8.154 1.92-18.575-6.234-23.285-8.154-4.704-18.574-1.91-23.285 6.244-4.703 8.15-1.908 18.57 6.24 23.275z" fill="#FFF"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB