From ee95a08b68f16a2b2c89488cd8a7da788bd6c972 Mon Sep 17 00:00:00 2001 From: Super Manito <68613938+SuperManito@users.noreply.github.com> Date: Sun, 17 Oct 2021 09:09:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=20&=20=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeMirrors.sh | 73 +++++++++++++++++++++++-------------------- DockerInstallation.sh | 40 ++++++++++++++---------- README.md | 10 +++--- 3 files changed, 67 insertions(+), 56 deletions(-) diff --git a/ChangeMirrors.sh b/ChangeMirrors.sh index e27232a..58b29bc 100644 --- a/ChangeMirrors.sh +++ b/ChangeMirrors.sh @@ -1,6 +1,6 @@ #!/bin/env bash ## Author: SuperManito -## Modified: 2021-10-08 +## Modified: 2021-10-17 ## License: GPL-2.0 ## https://github.com/SuperManito/LinuxMirrors ## https://gitee.com/SuperManito/LinuxMirrors @@ -21,6 +21,8 @@ function AuthorSignature() { echo -e '\033[36m /____/\__,_/ .___/\___/_/ /_/ /_/\__,_/_/ /_/_/\__/\____/ \033[0m' echo -e '\033[34m /_/ \033[0m\n' fi + echo -e " Github: https://github.com/SuperManito/LinuxMirrors" + echo -e " Gitee: https://gitee.com/SuperManito/LinuxMirrors\n" } ## 定义系统判定变量 @@ -37,6 +39,7 @@ SYSTEM_FEDORA="Fedora" ## 定义目录和文件 LinuxRelease=/etc/os-release RedHatRelease=/etc/redhat-release +DebianVersion=/etc/debian_version DebianSourceList=/etc/apt/sources.list DebianSourceListBackup=/etc/apt/sources.list.bak DebianExtendListDir=/etc/apt/sources.list.d @@ -62,8 +65,11 @@ function EnvJudgment() { ## 判定当前系统基于 Debian or RedHat if [ -f $RedHatRelease ]; then SYSTEM_FACTIONS=${SYSTEM_REDHAT} - else + elif [ -f $DebianVersion ]; then SYSTEM_FACTIONS=${SYSTEM_DEBIAN} + else + echo -e '\n\033[31m -------- 无法判断当前运行环境,请先确认脚本是否已适配当前系统! ------------ \033[0m\n' + exit fi ## 定义系统名称 SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME" | awk -F '\"' '{print$2}') @@ -347,51 +353,50 @@ function UpgradeSoftware() { function DebianMirrors() { ## 修改国内源 if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_UBUNTU} ]; then - echo "## 默认注释了源码仓库,如有需要可自行取消注释" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main restricted universe multiverse" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main restricted universe multiverse" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-security main restricted universe multiverse" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-security main restricted universe multiverse" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main restricted universe multiverse" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main restricted universe multiverse" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main restricted universe multiverse" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main restricted universe multiverse" >>$DebianSourceList - echo '' >>$DebianSourceList - echo "## 预发布软件源,不建议启用" >>$DebianSourceList - echo "# deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-proposed main restricted universe multiverse" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-proposed main restricted universe multiverse" >>$DebianSourceList + echo "## 默认禁用源码镜像以提高速度,如需启用请自行取消注释 +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main restricted universe multiverse +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main restricted universe multiverse +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-security main restricted universe multiverse +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-security main restricted universe multiverse +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main restricted universe multiverse +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main restricted universe multiverse +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main restricted universe multiverse +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main restricted universe multiverse + +## 预发布软件源(不建议启用) +# deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-proposed main restricted universe multiverse +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-proposed main restricted universe multiverse" >>$DebianSourceList elif [ ${SYSTEM_JUDGMENT} = ${SYSTEM_DEBIAN} ]; then - echo "## 默认注释了源码仓库,如有需要可自行取消注释" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main contrib non-free" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main contrib non-free" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main contrib non-free" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main contrib non-free" >>$DebianSourceList - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main contrib non-free" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main contrib non-free" >>$DebianSourceList - echo '' >>$DebianSourceList - echo "## 预发布软件源,不建议启用" >>$DebianSourceList - echo "# deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}-security ${SYSTEM_VERSION}/updates main contrib non-free" >>$DebianSourceList - echo "# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}-security ${SYSTEM_VERSION}/updates main contrib non-free" >>$DebianSourceList + echo "## 默认禁用源码镜像以提高速度,如需启用请自行取消注释 +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main contrib non-free +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main contrib non-free +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main contrib non-free +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-updates main contrib non-free +deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main contrib non-free +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION}-backports main contrib non-free + +## 预发布软件源(不建议启用) +# deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}-security ${SYSTEM_VERSION}/updates main contrib non-free +# deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH}-security ${SYSTEM_VERSION}/updates main contrib non-free" >>$DebianSourceList elif [ ${SYSTEM_JUDGMENT} = ${SYSTEM_KALI} ]; then - echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main non-free contrib" >>$DebianSourceList - echo "deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main non-free contrib" >>$DebianSourceList + echo "deb ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main non-free contrib +deb-src ${WEB_PROTOCOL}://${SOURCE}/${SOURCE_BRANCH} ${SYSTEM_VERSION} main non-free contrib" >>$DebianSourceList fi } ## 更换基于 RedHat 系 Linux 发行版的国内源 function RedHatMirrors() { ## 生成基于 RedHat 发行版和及其衍生发行版的官方 repo 源文件 - ## 由于 RedHat 系 Linux 源文件各不相同且不易判断,故通过在删除原有源后重新创建官方源的方式更换国内源 cd $RedHatReposDir case ${SYSTEM_JUDGMENT} in RedHat | CentOS) - CentOSReposCreate + CreateCentOSRepoFiles ;; Fedora) - FedoraReposCreate + CreateReposRepoFiles ;; esac - ## 修改国内源 + ## 修改源 if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_CENTOS} -o ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]; then sed -i 's|^mirrorlist=|#mirrorlist=|g' $RedHatReposDir/${SYSTEM_CENTOS}-* [ ${CENTOS_VERSION} -eq "8" ] && sed -i 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=http://mirror.centos.org/centos|g' $RedHatReposDir/${SYSTEM_CENTOS}-* @@ -589,7 +594,7 @@ function ChooseMirrors() { } ## 生成 CentOS 官方 repo 源文件 -function CentOSReposCreate() { +function CreateCentOSRepoFiles() { if [ ${CENTOS_VERSION} -eq "8" ]; then CentOS8_RepoFiles='CentOS-Linux-AppStream.repo CentOS-Linux-BaseOS.repo CentOS-Linux-ContinuousRelease.repo CentOS-Linux-Debuginfo.repo CentOS-Linux-Devel.repo CentOS-Linux-Extras.repo CentOS-Linux-FastTrack.repo CentOS-Linux-HighAvailability.repo CentOS-Linux-Media.repo CentOS-Linux-Plus.repo CentOS-Linux-PowerTools.repo CentOS-Linux-Sources.repo' for REPOS in $CentOS8_RepoFiles; do @@ -1025,7 +1030,7 @@ EOF } ## 生成 Fedora 官方 repo 源文件 -function FedoraReposCreate() { +function CreateReposRepoFiles() { Fedora_RepoFiles='fedora-cisco-openh264.repo fedora.repo fedora-updates.repo fedora-modular.repo fedora-updates-modular.repo fedora-updates-testing.repo fedora-updates-testing-modular.repo' for REPOS in $Fedora_RepoFiles; do touch $REPOS diff --git a/DockerInstallation.sh b/DockerInstallation.sh index 4e09b6f..f186a70 100644 --- a/DockerInstallation.sh +++ b/DockerInstallation.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2021-10-08 +## Modified: 2021-10-17 ## License: GPL-2.0 ## https://github.com/SuperManito/LinuxMirrors ## https://gitee.com/SuperManito/LinuxMirrors @@ -11,7 +11,7 @@ function AuthorSignature() { elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then yum install -y figlet toilet >/dev/null 2>&1 fi - if [[ $? -eq 0 ]]; then + if [ $? -eq 0 ]; then echo -e "\n$(toilet -f slant -F border --gay SuperManito)\n" else echo -e '\n\033[35m _____ __ ___ _ __ \033[0m' @@ -21,6 +21,8 @@ function AuthorSignature() { echo -e '\033[36m /____/\__,_/ .___/\___/_/ /_/ /_/\__,_/_/ /_/_/\__/\____/ \033[0m' echo -e '\033[34m /_/ \033[0m\n' fi + echo -e " Github: https://github.com/SuperManito/LinuxMirrors" + echo -e " Gitee: https://gitee.com/SuperManito/LinuxMirrors\n" } ## 定义系统判定变量 @@ -37,6 +39,7 @@ SYSTEM_FEDORA="Fedora" ## 定义目录和文件 LinuxRelease=/etc/os-release RedHatRelease=/etc/redhat-release +DebianVersion=/etc/debian_version DebianSourceList=/etc/apt/sources.list DebianExtendListDir=/etc/apt/sources.list.d RedHatReposDir=/etc/yum.repos.d @@ -75,8 +78,11 @@ function EnvJudgment() { ## 判定当前系统基于 Debian or RedHat if [ -f $RedHatRelease ]; then SYSTEM_FACTIONS=${SYSTEM_REDHAT} - else + elif [ -f $DebianVersion ]; then SYSTEM_FACTIONS=${SYSTEM_DEBIAN} + else + echo -e '\n\033[31m -------- 无法判断当前运行环境,请先确认脚本是否已适配当前系统! ------------ \033[0m\n' + exit fi ## 定义系统名称 SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME" | awk -F '\"' '{print$2}') @@ -236,7 +242,7 @@ function DockerEngineVersionList() { ## 配置 Docker CE 源 function ConfigureDockerCEMirror() { - if [ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]; then + if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then SOURCE_JUDGMENT=${SOURCE} else SOURCE_JUDGMENT="download.docker.com" @@ -278,7 +284,7 @@ function DockerEngine() { 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 + if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then echo -e '\n\033[32m---------- 检测到已安装最新版本的 Docker Engine,跳过安装 ----------\033[0m' ConfigureImageAccelerator systemctl status docker | grep running -q @@ -295,7 +301,7 @@ function DockerEngine() { CHOICE_E=$(echo -e '\n\033[1m└ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本 [ Y/n ]:\033[0m') fi else - if [ ${DOCKER_VERSION_INSTALL_LATEST} = "True" ]; then + if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then CHOICE_E=$(echo -e '\n\033[1m└ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本 [ Y/n ]:\033[0m') else CHOICE_E=$(echo -e '\n\033[1m└ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本 [ Y/n ]:\033[0m') @@ -325,7 +331,7 @@ function DockerEngine() { systemctl enable --now docker >/dev/null 2>&1 } function DockerEngineInstall() { - if [ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]; then + if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then case ${SYSTEM_FACTIONS} in Debian) apt-get install -y docker-ce docker-ce-cli containerd.io @@ -386,7 +392,7 @@ function DockerEngineInstall() { ## 修改 Docker Hub 源 function ConfigureImageAccelerator() { - if [ ${REGISTRY_SOURCE_OFFICIAL} = "False" ]; then + if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then if [ -d $DockerDir ] && [ -e $DockerConfig ]; then if [ -e $DockerConfigBackup ]; then CHOICE_BACKUP=$(echo -e "\n\033[1m└ 检测到已备份的 Docker 配置文件,是否覆盖备份 [ Y/n ]:\033[0m") @@ -418,30 +424,30 @@ function ConfigureImageAccelerator() { ## 安装 Docker Compose function DockerCompose() { - if [ ${DOCKER_COMPOSE} == "True" ]; then + if [[ ${DOCKER_COMPOSE} == "True" ]]; then [ -e $DockerCompose ] && rm -rf $DockerCompose - if [ ${Arch} = "x86_64" ]; then + if [[ ${Arch} == "x86_64" ]]; then echo -e '' - if [ ${DOCKER_COMPOSE_DOWNLOAD_PROXY} = "True" ]; then + 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' + echo -e '\n[*] 由于本机非 x86架构,开始通过 pip3 安装 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 + 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" + [ $? -ne 0 ] && echo -e "\n\033[31m---------- Docker Compose 安装失败 ----------\033[0m\n\n检测到当前处理器架构为 ${Arch} ,无法保证安装结果,自行查看 pip 报错原因" fi echo -e '' else @@ -454,7 +460,7 @@ function ShowVersion() { echo -e '\033[32m---------- 验证安装版本 ----------\033[0m\n' docker -v VERIFICATION_DOCKER=$? - [ ${DOCKER_COMPOSE} = "True" ] && docker-compose -v + [[ ${DOCKER_COMPOSE} == "True" ]] && docker-compose -v if [ ${VERIFICATION_DOCKER} -eq 0 ]; then echo -e '\n\033[32m---------- 安装完成 ----------\033[0m' else @@ -462,14 +468,14 @@ function ShowVersion() { exit fi systemctl status docker | grep running -q - if [[ $? -ne 0 ]]; then + 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 + 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' diff --git a/README.md b/README.md index 5d3182c..a503376 100644 --- a/README.md +++ b/README.md @@ -29,15 +29,15 @@