oneinstack/include/check_os.sh

139 lines
4.8 KiB
Bash
Raw Normal View History

2024-07-15 13:21:08 +08:00
#!/bin/bash
# Author: yeho <lj2007331 AT gmail.com>
# BLOG: https://linuxeye.com
#
# Notes: OneinStack for CentOS/RedHat 7+ Debian 9+ and Ubuntu 16+
#
# Project home page:
# https://oneinstack.com
# https://github.com/oneinstack/oneinstack
if [ -e "/etc/os-release" ]; then
. /etc/os-release
else
echo "${CFAILURE}/etc/os-release does not exist! ${CEND}"
kill -9 $$; exit 1;
fi
# Get OS Version
Platform=${ID,,}
VERSION_MAIN_ID=${VERSION_ID%%.*}
ARCH=$(arch)
if [[ "${Platform}" =~ ^centos$|^rhel$|^almalinux$|^rocky$|^fedora$|^amzn$|^ol$|^alinux$|^anolis$|^tencentos$|^opencloudos$|^euleros$|^openeuler$|^kylin$|^uos$|^kylinsecos$ ]]; then
PM=yum
Family=rhel
RHEL_ver=${VERSION_MAIN_ID}
if [[ "${Platform}" =~ ^centos$ ]]; then
if [ "${VERSION_MAIN_ID}" == '6' ]; then
sed -i "s@centos/\$releasever@centos-vault/6.10@g" /etc/yum.repos.d/CentOS-Base.repo
sed -i 's@centos/RPM-GPG@centos-vault/RPM-GPG@g' /etc/yum.repos.d/CentOS-Base.repo
[ -e /etc/yum.repos.d/epel.repo ] && rm -f /etc/yum.repos.d/epel.repo
fi
elif [[ "${Platform}" =~ ^fedora$ ]]; then
Fedora_ver=${VERSION_MAIN_ID}
[ ${VERSION_MAIN_ID} -ge 19 ] && [ ${VERSION_MAIN_ID} -lt 28 ] && RHEL_ver=7
[ ${VERSION_MAIN_ID} -ge 28 ] && [ ${VERSION_MAIN_ID} -lt 34 ] && RHEL_ver=8
[ ${VERSION_MAIN_ID} -ge 34 ] && RHEL_ver=9
elif [[ "${Platform}" =~ ^amzn$|^alinux$|^tencentos$|^euleros$ ]]; then
[[ "${VERSION_MAIN_ID}" =~ ^2$ ]] && RHEL_ver=7
[[ "${VERSION_MAIN_ID}" =~ ^3$ ]] && RHEL_ver=8
elif [[ "${Platform}" =~ ^openeuler$ ]]; then
[[ "${RHEL_ver}" =~ ^20$ ]] && RHEL_ver=7
[[ "${RHEL_ver}" =~ ^2[1,2]$ ]] && RHEL_ver=8
elif [[ "${Platform}" =~ ^kylin$ ]]; then
[[ "${RHEL_ver}" =~ ^V10$ ]] && RHEL_ver=7
elif [[ "${Platform}" =~ ^uos$ ]]; then
[[ "${RHEL_ver}" =~ ^20$ ]] && RHEL_ver=8
elif [[ "${Platform}" =~ ^kylinsecos$ ]]; then
[[ "${VERSION_ID}" =~ ^3.4 ]] && RHEL_ver=7
[[ "${VERSION_ID}" =~ ^3.5 ]] && RHEL_ver=8
fi
elif [[ "${Platform}" =~ ^debian$|^deepin$|^kali$ ]]; then
PM=apt-get
Family=debian
Debian_ver=${VERSION_MAIN_ID}
if [[ "${Platform}" =~ ^deepin$ ]]; then
[[ "${Debian_ver}" =~ ^20$ ]] && Debian_ver=10
[[ "${Debian_ver}" =~ ^23$ ]] && Debian_ver=11
elif [[ "${Platform}" =~ ^kali$ ]]; then
[[ "${Debian_ver}" =~ ^202 ]] && Debian_ver=10
fi
elif [[ "${Platform}" =~ ^ubuntu$|^linuxmint$|^elementary$ ]]; then
PM=apt-get
Family=ubuntu
Ubuntu_ver=${VERSION_MAIN_ID}
if [[ "${Platform}" =~ ^linuxmint$ ]]; then
[[ "${VERSION_MAIN_ID}" =~ ^18$ ]] && Ubuntu_ver=16
[[ "${VERSION_MAIN_ID}" =~ ^19$ ]] && Ubuntu_ver=18
[[ "${VERSION_MAIN_ID}" =~ ^20$ ]] && Ubuntu_ver=20
[[ "${VERSION_MAIN_ID}" =~ ^21$ ]] && Ubuntu_ver=22
elif [[ "${Platform}" =~ ^elementary$ ]]; then
[[ "${VERSION_MAIN_ID}" =~ ^5$ ]] && Ubuntu_ver=18
[[ "${VERSION_MAIN_ID}" =~ ^6$ ]] && Ubuntu_ver=20
[[ "${VERSION_MAIN_ID}" =~ ^7$ ]] && Ubuntu_ver=22
fi
else
echo "${CFAILURE}Does not support this OS ${CEND}"
kill -9 $$; exit 1;
fi
# Check OS Version
if [ ${RHEL_ver} -lt 7 >/dev/null 2>&1 ] || [ ${Debian_ver} -lt 9 >/dev/null 2>&1 ] || [ ${Ubuntu_ver} -lt 16 >/dev/null 2>&1 ]; then
echo "${CFAILURE}Does not support this OS, Please install CentOS 7+,Debian 9+,Ubuntu 16+ ${CEND}"
kill -9 $$; exit 1;
fi
command -v gcc > /dev/null 2>&1 || $PM -y install gcc
gcc_ver=$(gcc -dumpversion | awk -F. '{print $1}')
[ ${gcc_ver} -lt 5 >/dev/null 2>&1 ] && redis_ver=${redis_oldver}
if uname -m | grep -Eqi "arm|aarch64"; then
armplatform="y"
if uname -m | grep -Eqi "armv7"; then
TARGET_ARCH="armv7"
elif uname -m | grep -Eqi "armv8"; then
TARGET_ARCH="arm64"
elif uname -m | grep -Eqi "aarch64"; then
TARGET_ARCH="aarch64"
else
TARGET_ARCH="unknown"
fi
fi
if [ "$(uname -r | awk -F- '{print $3}' 2>/dev/null)" == "Microsoft" ]; then
Wsl=true
fi
if [ "$(getconf WORD_BIT)" == "32" ] && [ "$(getconf LONG_BIT)" == "64" ]; then
if [ "${TARGET_ARCH}" == 'aarch64' ]; then
SYS_ARCH=arm64
SYS_ARCH_i=aarch64
SYS_ARCH_n=arm64
else
SYS_ARCH=amd64 #openjdk
SYS_ARCH_i=x86-64 #ioncube
SYS_ARCH_n=x64 #nodejs
fi
else
echo "${CWARNING}32-bit OS are not supported! ${CEND}"
kill -9 $$; exit 1;
fi
THREAD=$(grep 'processor' /proc/cpuinfo | sort -u | wc -l)
# Percona binary: https://docs.percona.com/percona-server/5.7/installation/binary-tarball.html
if [ ${Debian_ver} -lt 9 >/dev/null 2>&1 ]; then
sslLibVer=ssl100
elif [ "${RHEL_ver}" == '7' ] && [ "${Platform}" != 'fedora' ]; then
sslLibVer=ssl101
elif [ ${Debian_ver} -ge 9 >/dev/null 2>&1 ] || [ ${Ubuntu_ver} -ge 16 >/dev/null 2>&1 ]; then
sslLibVer=ssl102
elif [ ${Fedora_ver} -ge 27 >/dev/null 2>&1 ]; then
sslLibVer=ssl102
elif [ "${RHEL_ver}" == '8' ]; then
sslLibVer=ssl1:111
else
sslLibVer=unknown
fi