check_os.sh 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RedHat 7+ Debian 8+ and Ubuntu 16+
  6. #
  7. # Project home page:
  8. # https://oneinstack.com
  9. # https://github.com/oneinstack/oneinstack
  10. if [ -e "/usr/bin/yum" ]; then
  11. PM=yum
  12. if [ -e /etc/yum.repos.d/CentOS-Base.repo ] && grep -Eqi "release 6." /etc/redhat-release; then
  13. sed -i "s@centos/\$releasever@centos-vault/6.10@g" /etc/yum.repos.d/CentOS-Base.repo
  14. sed -i 's@centos/RPM-GPG@centos-vault/RPM-GPG@g' /etc/yum.repos.d/CentOS-Base.repo
  15. [ -e /etc/yum.repos.d/epel.repo ] && rm -f /etc/yum.repos.d/epel.repo
  16. fi
  17. if ! command -v lsb_release >/dev/null 2>&1; then
  18. if [ -e "/etc/euleros-release" ]; then
  19. yum -y install euleros-lsb
  20. elif [ -e "/etc/openEuler-release" -o -e "/etc/openeuler-release" ]; then
  21. if [ -n "$(grep -w '"20.03"' /etc/os-release)" ]; then
  22. rpm -Uvh https://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/aarch64/Packages/openeuler-lsb-5.0-1.oe1.aarch64.rpm
  23. else
  24. yum -y install openeuler-lsb
  25. fi
  26. else
  27. yum -y install redhat-lsb-core
  28. fi
  29. clear
  30. fi
  31. fi
  32. if [ -e "/usr/bin/apt-get" ]; then
  33. PM=apt-get
  34. command -v lsb_release >/dev/null 2>&1 || { apt-get -y update > /dev/null; apt-get -y install lsb-release; clear; }
  35. fi
  36. command -v lsb_release >/dev/null 2>&1 || { echo "${CFAILURE}${PM} source failed! ${CEND}"; kill -9 $$; }
  37. # Get OS Version
  38. OS=$(lsb_release -is)
  39. if [[ "${OS}" =~ ^CentOS$|^CentOSStream$|^RedHat$|^Rocky$|^Fedora$|^Amazon$|^AlibabaCloud\(AliyunLinux\)$|^EulerOS$|^openEuler$ ]]; then
  40. LikeOS=CentOS
  41. CentOS_ver=$(lsb_release -rs | awk -F. '{print $1}' | awk '{print $1}')
  42. [[ "${OS}" =~ ^Fedora$ ]] && [ ${CentOS_ver} -ge 19 >/dev/null 2>&1 ] && { CentOS_ver=7; Fedora_ver=$(lsb_release -rs); }
  43. [[ "${OS}" =~ ^Amazon$|^EulerOS$|^openEuler$ ]] && CentOS_ver=7
  44. [[ "${OS}" =~ ^AlibabaCloud\(AliyunLinux\)$ ]] && [[ "${CentOS_ver}" =~ ^2$ ]] && CentOS_ver=7
  45. [[ "${OS}" =~ ^AlibabaCloud\(AliyunLinux\)$ ]] && [[ "${CentOS_ver}" =~ ^3$ ]] && CentOS_ver=8
  46. elif [[ "${OS}" =~ ^Debian$|^Deepin$|^Uos$|^Kali$ ]]; then
  47. LikeOS=Debian
  48. Debian_ver=$(lsb_release -rs | awk -F. '{print $1}' | awk '{print $1}')
  49. [[ "${OS}" =~ ^Deepin$|^Uos$ ]] && [[ "${Debian_ver}" =~ ^20$ ]] && Debian_ver=10
  50. [[ "${OS}" =~ ^Kali$ ]] && [[ "${Debian_ver}" =~ ^202 ]] && Debian_ver=10
  51. elif [[ "${OS}" =~ ^Ubuntu$|^LinuxMint$|^elementary$ ]]; then
  52. LikeOS=Ubuntu
  53. Ubuntu_ver=$(lsb_release -rs | awk -F. '{print $1}' | awk '{print $1}')
  54. if [[ "${OS}" =~ ^LinuxMint$ ]]; then
  55. [[ "${Ubuntu_ver}" =~ ^18$ ]] && Ubuntu_ver=16
  56. [[ "${Ubuntu_ver}" =~ ^19$ ]] && Ubuntu_ver=18
  57. [[ "${Ubuntu_ver}" =~ ^20$ ]] && Ubuntu_ver=20
  58. fi
  59. if [[ "${OS}" =~ ^elementary$ ]]; then
  60. [[ "${Ubuntu_ver}" =~ ^5$ ]] && Ubuntu_ver=18
  61. [[ "${Ubuntu_ver}" =~ ^6$ ]] && Ubuntu_ver=20
  62. fi
  63. fi
  64. # Check OS Version
  65. if [ ${CentOS_ver} -lt 6 >/dev/null 2>&1 ] || [ ${Debian_ver} -lt 8 >/dev/null 2>&1 ] || [ ${Ubuntu_ver} -lt 16 >/dev/null 2>&1 ]; then
  66. echo "${CFAILURE}Does not support this OS, Please install CentOS 6+,Debian 8+,Ubuntu 16+ ${CEND}"
  67. kill -9 $$
  68. fi
  69. command -v gcc > /dev/null 2>&1 || $PM -y install gcc
  70. gcc_ver=$(gcc -dumpversion | awk -F. '{print $1}')
  71. [ ${gcc_ver} -lt 5 >/dev/null 2>&1 ] && redis_ver=${redis_oldver}
  72. if uname -m | grep -Eqi "arm|aarch64"; then
  73. armplatform="y"
  74. if uname -m | grep -Eqi "armv7"; then
  75. TARGET_ARCH="armv7"
  76. elif uname -m | grep -Eqi "armv8"; then
  77. TARGET_ARCH="arm64"
  78. elif uname -m | grep -Eqi "aarch64"; then
  79. TARGET_ARCH="aarch64"
  80. else
  81. TARGET_ARCH="unknown"
  82. fi
  83. fi
  84. if [ "$(uname -r | awk -F- '{print $3}' 2>/dev/null)" == "Microsoft" ]; then
  85. Wsl=true
  86. fi
  87. if [ "$(getconf WORD_BIT)" == "32" ] && [ "$(getconf LONG_BIT)" == "64" ]; then
  88. OS_BIT=64
  89. SYS_BIT_j=x64 #jdk
  90. SYS_BIT_a=x86_64 #mariadb
  91. SYS_BIT_b=x86_64 #mariadb
  92. SYS_BIT_c=x86_64 #ZendGuardLoader
  93. SYS_BIT_d=x86-64 #ioncube
  94. SYS_BIT_n=x64 #node
  95. [ "${TARGET_ARCH}" == 'aarch64' ] && { SYS_BIT_j=aarch64; SYS_BIT_c=aarch64; SYS_BIT_d=aarch64; SYS_BIT_n=arm64; }
  96. else
  97. OS_BIT=32
  98. SYS_BIT_j=i586
  99. SYS_BIT_a=x86
  100. SYS_BIT_b=i686
  101. SYS_BIT_c=i386
  102. SYS_BIT_d=x86
  103. SYS_BIT_n=x86
  104. [ "${TARGET_ARCH}" == 'armv7' ] && { SYS_BIT_j=arm32-vfp-hflt; SYS_BIT_c=armhf; SYS_BIT_d=armv7l; SYS_BIT_n=armv7l; }
  105. fi
  106. THREAD=$(grep 'processor' /proc/cpuinfo | sort -u | wc -l)
  107. # Percona binary: https://www.percona.com/doc/percona-server/5.7/installation.html#installing-percona-server-from-a-binary-tarball
  108. if [ ${Debian_ver} -lt 9 >/dev/null 2>&1 ]; then
  109. sslLibVer=ssl100
  110. elif [[ "${CentOS_ver}" =~ ^[6-7]$ ]] && [ "${OS}" != 'Fedora' ]; then
  111. sslLibVer=ssl101
  112. elif [ ${Debian_ver} -ge 9 >/dev/null 2>&1 ] || [ ${Ubuntu_ver} -ge 16 >/dev/null 2>&1 ]; then
  113. sslLibVer=ssl102
  114. elif [ ${Fedora_ver} -ge 27 >/dev/null 2>&1 ]; then
  115. sslLibVer=ssl102
  116. elif [ "${CentOS_ver}" == '8' ]; then
  117. sslLibVer=ssl1:111
  118. else
  119. sslLibVer=unknown
  120. fi