Update
45
.gitee/issue_template.md
Normal 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
@@ -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
@@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
10
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: 意见与建议
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
29
.github/workflows/auto-sync.yml
vendored
Normal 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
678
DockerInstallation.sh
Normal 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
339
LICENSE
Normal 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
@@ -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>
|
||||
<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> 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> 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> 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> 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> 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> 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
@@ -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
|
After Width: | Height: | Size: 5.0 KiB |
1
icon/debian.svg
Normal 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
|
After Width: | Height: | Size: 4.2 KiB |
17
icon/gitee.svg
Normal file
|
After Width: | Height: | Size: 14 KiB |
1
icon/github-1.svg
Normal 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
@@ -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
@@ -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
@@ -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
@@ -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
|
After Width: | Height: | Size: 188 KiB |
1
icon/ubuntu.svg
Normal 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 |