check_sw.sh 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #!/bin/bash
  2. # Author: Alpha Eva <kaneawk AT gmail.com>
  3. #
  4. # Notes: OneinStack for CentOS/RedHat 6+ Debian 8+ and Ubuntu 14+
  5. #
  6. # Project home page:
  7. # https://oneinstack.com
  8. # https://github.com/oneinstack/oneinstack
  9. installDepsDebian() {
  10. echo "${CMSG}Removing the conflicting packages...${CEND}"
  11. if [[ "${apache_option}" =~ ^[1-2]$ ]]; then
  12. killall apache2
  13. pkgList="apache2 apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-doc apache2-mpm-worker php5 php5-common php5-cgi php5-cli php5-mysql php5-curl php5-gd"
  14. for Package in ${pkgList};do
  15. apt-get -y purge ${Package}
  16. done
  17. dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
  18. fi
  19. if [[ "${db_option}" =~ ^[1-9]$|^1[0-3]$ ]]; then
  20. pkgList="mysql-client mysql-server mysql-common mysql-server-core-5.5 mysql-client-5.5 mariadb-client mariadb-server mariadb-common"
  21. for Package in ${pkgList};do
  22. apt-get -y purge ${Package}
  23. done
  24. dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
  25. fi
  26. echo "${CMSG}Installing dependencies packages...${CEND}"
  27. apt-get -y update
  28. apt-get -y autoremove
  29. apt-get -yf install
  30. export DEBIAN_FRONTEND=noninteractive
  31. # critical security updates
  32. grep security /etc/apt/sources.list > /tmp/security.sources.list
  33. apt-get -y upgrade -o Dir::Etc::SourceList=/tmp/security.sources.list
  34. # Install needed packages
  35. case "${Debian_ver}" in
  36. 8)
  37. pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg8 libjpeg62-turbo-dev libjpeg-dev libpng12-0 libpng12-dev libpng3 libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libxslt-dev libicu-dev locales libcloog-ppl0 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates nss"
  38. ;;
  39. 9|10)
  40. pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg62-turbo-dev libjpeg-dev libpng-dev libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev bison re2c libsasl2-dev libxslt1-dev libicu-dev locales libcloog-ppl1 patch vim zip unzip tmux htop bc dc expect libexpat1-dev rsync git lsof lrzsz iptables rsyslog cron logrotate ntpdate libsqlite3-dev psmisc wget sysv-rc ca-certificates nss"
  41. ;;
  42. *)
  43. echo "${CFAILURE}Your system Debian ${Debian_ver} are not supported!${CEND}"
  44. kill -9 $$
  45. ;;
  46. esac
  47. for Package in ${pkgList}; do
  48. apt-get --no-install-recommends -y install ${Package}
  49. done
  50. }
  51. installDepsCentOS() {
  52. [ -e '/etc/yum.conf' ] && sed -i 's@^exclude@#exclude@' /etc/yum.conf
  53. # Uninstall the conflicting packages
  54. echo "${CMSG}Removing the conflicting packages...${CEND}"
  55. if [ "${CentOS_ver}" == '8' ]; then
  56. yum -y install chronyd
  57. systemctl enable chronyd
  58. elif [ "${CentOS_ver}" == '7' ]; then
  59. yum -y groupremove "Basic Web Server" "MySQL Database server" "MySQL Database client"
  60. systemctl mask firewalld.service
  61. if [ "${iptables_flag}" == 'y' ]; then
  62. yum -y install iptables-services
  63. systemctl enable iptables.service
  64. systemctl enable ip6tables.service
  65. fi
  66. elif [ "${CentOS_ver}" == '6' ]; then
  67. yum -y groupremove "FTP Server" "PostgreSQL Database client" "PostgreSQL Database server" "MySQL Database server" "MySQL Database client" "Web Server"
  68. fi
  69. echo "${CMSG}Installing dependencies packages...${CEND}"
  70. # Install needed packages
  71. pkgList="deltarpm gcc gcc-c++ make cmake autoconf libjpeg libjpeg-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel krb5-devel libc-client libc-client-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel libaio numactl numactl-libs readline-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel libxslt-devel libicu-devel libevent-devel libtool libtool-ltdl bison gd-devel vim-enhanced pcre-devel libmcrypt libmcrypt-devel mhash mhash-devel mcrypt zip unzip ntpdate sqlite-devel sysstat patch bc expect expat-devel rsync rsyslog git lsof lrzsz psmisc wget which libatomic tmux nss"
  72. for Package in ${pkgList}; do
  73. yum -y install ${Package}
  74. done
  75. yum -y update bash openssl glibc
  76. }
  77. installDepsUbuntu() {
  78. # Uninstall the conflicting software
  79. echo "${CMSG}Removing the conflicting packages...${CEND}"
  80. if [[ "${apache_option}" =~ ^[1-2]$ ]]; then
  81. killall apache2
  82. pkgList="apache2 apache2-doc apache2-utils apache2.2-common apache2.2-bin apache2-mpm-prefork apache2-doc apache2-mpm-worker php5 php5-common php5-cgi php5-cli php5-mysql php5-curl php5-gd"
  83. for Package in ${pkgList};do
  84. apt-get -y purge ${Package}
  85. done
  86. dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
  87. fi
  88. if [[ "${db_option}" =~ ^[1-9]$|^1[0-3]$ ]]; then
  89. pkgList="mysql-client mysql-server mysql-common mysql-server-core-5.5 mysql-client-5.5 mariadb-client mariadb-server mariadb-common"
  90. for Package in ${pkgList};do
  91. apt-get -y purge ${Package}
  92. done
  93. dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
  94. fi
  95. echo "${CMSG}Installing dependencies packages...${CEND}"
  96. apt-get -y update
  97. apt-get -y autoremove
  98. apt-get -yf install
  99. export DEBIAN_FRONTEND=noninteractive
  100. # critical security updates
  101. grep security /etc/apt/sources.list > /tmp/security.sources.list
  102. apt-get -y upgrade -o Dir::Etc::SourceList=/tmp/security.sources.list
  103. # Install needed packages
  104. pkgList="debian-keyring debian-archive-keyring build-essential gcc g++ make cmake autoconf libjpeg8 libjpeg8-dev libpng-dev libpng12-0 libpng12-dev libpng3 libxml2 libxml2-dev zlib1g zlib1g-dev libc6 libc6-dev libc-client2007e-dev libglib2.0-0 libglib2.0-dev bzip2 libzip-dev libbz2-1.0 libncurses5 libncurses5-dev libaio1 libaio-dev numactl libreadline-dev curl libcurl3-gnutls libcurl4-gnutls-dev libcurl4-openssl-dev e2fsprogs libkrb5-3 libkrb5-dev libltdl-dev libidn11 libidn11-dev openssl libssl-dev libtool libevent-dev re2c libsasl2-dev libxslt1-dev libicu-dev libsqlite3-dev libcloog-ppl1 bison patch vim zip unzip tmux htop bc dc expect libexpat1-dev iptables rsyslog rsync git lsof lrzsz ntpdate psmisc wget sysv-rc nss"
  105. export DEBIAN_FRONTEND=noninteractive
  106. for Package in ${pkgList}; do
  107. apt-get --no-install-recommends -y install ${Package}
  108. done
  109. if [[ "${Ubuntu_ver}" =~ ^14$|^15$ ]]; then
  110. apt-get -y remove bison
  111. fi
  112. }
  113. installDepsBySrc() {
  114. pushd ${oneinstack_dir}/src > /dev/null
  115. if [ "${OS}" == 'Ubuntu' ]; then
  116. if [[ "${Ubuntu_ver}" =~ ^14$|^15$ ]]; then
  117. # Install bison on ubt 14.x 15.x
  118. tar xzf bison-${bison_ver}.tar.gz
  119. pushd bison-${bison_ver} > /dev/null
  120. ./configure
  121. make -j ${THREAD} && make install
  122. popd > /dev/null
  123. rm -rf bison-${bison_ver}
  124. fi
  125. elif [ "${OS}" == 'CentOS' ]; then
  126. # install htop
  127. if ! command -v htop >/dev/null 2>&1; then
  128. tar xzf htop-${htop_ver}.tar.gz
  129. pushd htop-${htop_ver} > /dev/null
  130. ./configure
  131. make -j ${THREAD} && make install
  132. popd > /dev/null
  133. rm -rf htop-${htop_ver}
  134. fi
  135. # upgrade autoconf for CentOS6
  136. [ "${CentOS_ver}" == '6' ] && rpm -Uvh autoconf-2.69-12.2.noarch.rpm
  137. else
  138. echo "No need to install software from source packages."
  139. fi
  140. if ! command -v icu-config > /dev/null 2>&1 || icu-config --version | grep '^3.'; then
  141. tar xzf icu4c-${icu4c_ver}-src.tgz
  142. pushd icu/source > /dev/null
  143. ./configure --prefix=/usr
  144. make -j ${THREAD} && make install
  145. popd > /dev/null
  146. rm -rf icu
  147. fi
  148. if command -v lsof >/dev/null 2>&1; then
  149. echo 'already initialize' > ~/.oneinstack
  150. else
  151. echo "${CFAILURE}${PM} config error parsing file failed${CEND}"
  152. kill -9 $$
  153. fi
  154. popd > /dev/null
  155. }