check_os.sh 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RedHat 7+ Debian 9+ 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. yum -y install openeuler-lsb
  22. elif [ -e "/etc/anolis-release" ]; then
  23. yum -y install system-lsb-core
  24. else
  25. yum -y install redhat-lsb-core 2>/dev/null
  26. fi
  27. clear
  28. fi
  29. elif [ -e "/usr/bin/apt-get" ]; then
  30. PM=apt-get
  31. if ! command -v lsb_release >/dev/null 2>&1; then
  32. apt-get -y update > /dev/null
  33. apt-get -y install lsb-release
  34. clear
  35. fi
  36. fi
  37. # Get OS Version
  38. Platform=$(lsb_release -is 2>/dev/null)
  39. ARCH=$(arch)
  40. if [[ "${Platform}" =~ ^CentOS$|^CentOSStream$|^RedHat$|^RedHatEnterprise$|^Rocky$|^AlmaLinux$|^Fedora$|^Amazon$|^AlibabaCloud$|^AlibabaCloud\(AliyunLinux\)$|^AnolisOS$|^EulerOS$|^openEuler$|^Oracle$ ]]; then
  41. Family=rhel
  42. RHEL_ver=$(lsb_release -rs 2>/dev/null | awk -F. '{print $1}' | awk '{print $1}' 2>/dev/null)
  43. [[ "${Platform}" =~ ^Fedora$ ]] && [ ${RHEL_ver} -ge 19 >/dev/null 2>&1 ] && { RHEL_ver=7; Fedora_ver=$(lsb_release -rs); }
  44. [[ "${Platform}" =~ ^Amazon$|^EulerOS$|^openEuler$ ]] && RHEL_ver=7
  45. [[ "${Platform}" =~ ^openEuler$ ]] && [[ "${RHEL_ver}" =~ ^21$ ]] && RHEL_ver=8
  46. [[ "${Platform}" =~ ^AlibabaCloud$|^AlibabaCloud\(AliyunLinux\)$ ]] && [[ "${RHEL_ver}" =~ ^2$ ]] && RHEL_ver=7
  47. [[ "${Platform}" =~ ^AlibabaCloud$|^AlibabaCloud\(AliyunLinux\)$ ]] && [[ "${RHEL_ver}" =~ ^3$ ]] && RHEL_ver=8
  48. elif [[ "${Platform}" =~ ^Debian$|^Deepin$|^Uos$|^Kali$ ]]; then
  49. Family=debian
  50. Debian_ver=$(lsb_release -rs 2>/dev/null | awk -F. '{print $1}' | awk '{print $1}')
  51. [[ "${Platform}" =~ ^Deepin$|^Uos$ ]] && [[ "${Debian_ver}" =~ ^20$ ]] && Debian_ver=10
  52. [[ "${Platform}" =~ ^Kali$ ]] && [[ "${Debian_ver}" =~ ^202 ]] && Debian_ver=10
  53. elif [[ "${Platform}" =~ ^Ubuntu$|^LinuxMint$|^elementary$ ]]; then
  54. Family=ubuntu
  55. Ubuntu_ver=$(lsb_release -rs 2>/dev/null | awk -F. '{print $1}' | awk '{print $1}')
  56. if [[ "${Platform}" =~ ^LinuxMint$ ]]; then
  57. [[ "${Ubuntu_ver}" =~ ^18$ ]] && Ubuntu_ver=16
  58. [[ "${Ubuntu_ver}" =~ ^19$ ]] && Ubuntu_ver=18
  59. [[ "${Ubuntu_ver}" =~ ^20$ ]] && Ubuntu_ver=20
  60. fi
  61. if [[ "${Platform}" =~ ^elementary$ ]]; then
  62. [[ "${Ubuntu_ver}" =~ ^5$ ]] && Ubuntu_ver=18
  63. [[ "${Ubuntu_ver}" =~ ^6$ ]] && Ubuntu_ver=20
  64. fi
  65. elif [ -e "/etc/almalinux-release" ]; then
  66. Family=rhel
  67. Platform=AlmaLinux
  68. grep -Eqi "release 9." /etc/almalinux-release && RHEL_ver=9
  69. elif [ -e "/etc/rocky-release" ]; then
  70. Family=rhel
  71. Platform=Rocky
  72. grep -Eqi "release 9." /etc/rocky-release && RHEL_ver=9
  73. else
  74. command -v lsb_release >/dev/null 2>&1 || { echo "${CFAILURE}${PM} source failed! ${CEND}"; kill -9 $$; exit 1; }
  75. fi
  76. # Check OS Version
  77. 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
  78. echo "${CFAILURE}Does not support this OS, Please install CentOS 7+,Debian 9+,Ubuntu 16+ ${CEND}"
  79. kill -9 $$; exit 1;
  80. fi
  81. command -v gcc > /dev/null 2>&1 || $PM -y install gcc
  82. gcc_ver=$(gcc -dumpversion | awk -F. '{print $1}')
  83. [ ${gcc_ver} -lt 5 >/dev/null 2>&1 ] && redis_ver=${redis_oldver}
  84. if uname -m | grep -Eqi "arm|aarch64"; then
  85. armplatform="y"
  86. if uname -m | grep -Eqi "armv7"; then
  87. TARGET_ARCH="armv7"
  88. elif uname -m | grep -Eqi "armv8"; then
  89. TARGET_ARCH="arm64"
  90. elif uname -m | grep -Eqi "aarch64"; then
  91. TARGET_ARCH="aarch64"
  92. else
  93. TARGET_ARCH="unknown"
  94. fi
  95. fi
  96. if [ "$(uname -r | awk -F- '{print $3}' 2>/dev/null)" == "Microsoft" ]; then
  97. Wsl=true
  98. fi
  99. if [ "$(getconf WORD_BIT)" == "32" ] && [ "$(getconf LONG_BIT)" == "64" ]; then
  100. if [ "${TARGET_ARCH}" == 'aarch64' ]; then
  101. SYS_ARCH=arm64
  102. SYS_ARCH_i=aarch64
  103. SYS_ARCH_n=arm64
  104. else
  105. SYS_ARCH=amd64 #openjdk
  106. SYS_ARCH_i=x86-64 #ioncube
  107. SYS_ARCH_n=x64 #nodejs
  108. fi
  109. else
  110. echo "${CWARNING}32-bit OS are not supported! ${CEND}"
  111. kill -9 $$; exit 1;
  112. fi
  113. THREAD=$(grep 'processor' /proc/cpuinfo | sort -u | wc -l)
  114. # Percona binary: https://www.percona.com/doc/percona-server/5.7/installation.html#installing-percona-server-from-a-binary-tarball
  115. if [ ${Debian_ver} -lt 9 >/dev/null 2>&1 ]; then
  116. sslLibVer=ssl100
  117. elif [ "${RHEL_ver}" == '7' ] && [ "${Platform}" != 'Fedora' ]; then
  118. sslLibVer=ssl101
  119. elif [ ${Debian_ver} -ge 9 >/dev/null 2>&1 ] || [ ${Ubuntu_ver} -ge 16 >/dev/null 2>&1 ]; then
  120. sslLibVer=ssl102
  121. elif [ ${Fedora_ver} -ge 27 >/dev/null 2>&1 ]; then
  122. sslLibVer=ssl102
  123. elif [ "${RHEL_ver}" == '8' ]; then
  124. sslLibVer=ssl1:111
  125. else
  126. sslLibVer=unknown
  127. fi