install_client.sh 9.8 KB
Newer Older
H
hzcheng 已提交
1
#!/bin/bash
L
lihui 已提交
2 3 4
#
# This file is used to install TDengine client on linux systems. The operating system
# is required to use systemd to manage services at boot
H
hzcheng 已提交
5

L
lihui 已提交
6 7 8 9
set -e
#set -x

# -----------------------Variables definition---------------------
S
slguan 已提交
10 11

osType=Linux
L
lihui 已提交
12
pagMode=full
S
slguan 已提交
13 14 15 16 17 18 19 20 21 22 23

if [ "$osType" != "Darwin" ]; then
    script_dir=$(dirname $(readlink -f "$0"))
    # Dynamic directory
    data_dir="/var/lib/taos"
    log_dir="/var/log/taos"
else
    script_dir=`dirname $0`
    cd ${script_dir}
    script_dir="$(pwd)"
    data_dir="/var/lib/taos"
S
TD-2837  
slguan 已提交
24
    log_dir=~/TDengine/log
S
slguan 已提交
25
fi
L
lihui 已提交
26 27 28 29 30

log_link_dir="/usr/local/taos/log"

cfg_install_dir="/etc/taos"

S
slguan 已提交
31 32 33
if [ "$osType" != "Darwin" ]; then
    bin_link_dir="/usr/bin"
    lib_link_dir="/usr/lib"
H
Hui Li 已提交
34
    lib64_link_dir="/usr/lib64"
S
slguan 已提交
35 36 37 38 39 40
    inc_link_dir="/usr/include"
else
    bin_link_dir="/usr/local/bin"
    lib_link_dir="/usr/local/lib"
    inc_link_dir="/usr/local/include"
fi
L
lihui 已提交
41 42 43 44 45 46 47

#install main path
install_main_dir="/usr/local/taos"

# old bin dir
bin_dir="/usr/local/taos/bin"

S
slguan 已提交
48
# v1.5 jar dir
H
Hui Li 已提交
49
#v15_java_app_dir="/usr/local/lib/taos"
L
lihui 已提交
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

# Color setting
RED='\033[0;31m'
GREEN='\033[1;32m'
GREEN_DARK='\033[0;32m'
GREEN_UNDERLINE='\033[4;32m'
NC='\033[0m'

csudo=""
if command -v sudo > /dev/null; then
    csudo="sudo"
fi

update_flag=0

function kill_client() {
  pid=$(ps -ef | grep "taos" | grep -v "grep" | awk '{print $2}')
  if [ -n "$pid" ]; then
    ${csudo} kill -9 $pid   || :
  fi
}

function install_main_path() {
    #create install main dir and all sub dir
    ${csudo} rm -rf ${install_main_dir}    || :
S
slguan 已提交
75
    ${csudo} mkdir -p ${install_main_dir}
L
lihui 已提交
76
    ${csudo} mkdir -p ${install_main_dir}/cfg
S
slguan 已提交
77
    ${csudo} mkdir -p ${install_main_dir}/bin
L
lihui 已提交
78 79 80 81 82 83 84
    ${csudo} mkdir -p ${install_main_dir}/connector
    ${csudo} mkdir -p ${install_main_dir}/driver
    ${csudo} mkdir -p ${install_main_dir}/examples
    ${csudo} mkdir -p ${install_main_dir}/include
}

function install_bin() {
S
slguan 已提交
85 86
  # Remove links
  ${csudo} rm -f ${bin_link_dir}/taos         || :
87
  if [ "$osType" != "Darwin" ]; then
H
Hui Li 已提交
88
      ${csudo} rm -f ${bin_link_dir}/taosdemo || :
89
      ${csudo} rm -f ${bin_link_dir}/taosdump || :
S
slguan 已提交
90 91
  fi
  ${csudo} rm -f ${bin_link_dir}/rmtaos       || :
H
Hui Li 已提交
92
  ${csudo} rm -f ${bin_link_dir}/set_core     || :
L
lihui 已提交
93

S
slguan 已提交
94
  ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/*
L
lihui 已提交
95

H
Hui Li 已提交
96
  #Make link
S
slguan 已提交
97
  [ -x ${install_main_dir}/bin/taos ] && ${csudo} ln -s ${install_main_dir}/bin/taos ${bin_link_dir}/taos                 || :
98
  if [ "$osType" != "Darwin" ]; then
H
Hui Li 已提交
99
      [ -x ${install_main_dir}/bin/taosdemo ] && ${csudo} ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || :
100
      [ -x ${install_main_dir}/bin/taosdump ] && ${csudo} ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || :
S
slguan 已提交
101 102
  fi
  [ -x ${install_main_dir}/bin/remove_client.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_client.sh ${bin_link_dir}/rmtaos || :
H
Hui Li 已提交
103
  [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo} ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
L
lihui 已提交
104 105 106
}

function clean_lib() {
S
slguan 已提交
107
    sudo rm -f /usr/lib/libtaos.* || :
L
lihui 已提交
108 109 110 111 112 113
    sudo rm -rf ${lib_dir} || :
}

function install_lib() {
    # Remove links
    ${csudo} rm -f ${lib_link_dir}/libtaos.*         || :
H
Hui Li 已提交
114 115
    ${csudo} rm -f ${lib64_link_dir}/libtaos.*       || :
    #${csudo} rm -rf ${v15_java_app_dir}              || :
S
slguan 已提交
116 117

    ${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/*
L
lihui 已提交
118

S
slguan 已提交
119 120 121
    if [ "$osType" != "Darwin" ]; then
        ${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.so.1
        ${csudo} ln -s ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so
122

H
Hui Li 已提交
123
        if [ -d "${lib64_link_dir}" ]; then
124 125 126
            ${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib64_link_dir}/libtaos.so.1       || :
            ${csudo} ln -s ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so               || :
        fi
S
slguan 已提交
127 128 129 130
    else
        ${csudo} ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.1.dylib
        ${csudo} ln -s ${lib_link_dir}/libtaos.1.dylib ${lib_link_dir}/libtaos.dylib
    fi
131

H
Hui Li 已提交
132
    ${csudo} ldconfig
L
lihui 已提交
133 134 135 136
}

function install_header() {
    ${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h    || :
S
slguan 已提交
137
    ${csudo} cp -f ${script_dir}/inc/* ${install_main_dir}/include && ${csudo} chmod 644 ${install_main_dir}/include/*
L
lihui 已提交
138 139 140 141
    ${csudo} ln -s ${install_main_dir}/include/taos.h ${inc_link_dir}/taos.h
    ${csudo} ln -s ${install_main_dir}/include/taoserror.h ${inc_link_dir}/taoserror.h
}

142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
function install_jemalloc() {
    jemalloc_dir=${script_dir}/jemalloc

    if [ -d ${jemalloc_dir} ]; then
        ${csudo} /usr/bin/install -c -d /usr/local/bin

        if [ -f ${jemalloc_dir}/bin/jemalloc-config ]; then
            ${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc-config /usr/local/bin
        fi
        if [ -f ${jemalloc_dir}/bin/jemalloc.sh ]; then
            ${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc.sh /usr/local/bin
        fi
        if [ -f ${jemalloc_dir}/bin/jeprof ]; then
            ${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jeprof /usr/local/bin
        fi
        if [ -f ${jemalloc_dir}/include/jemalloc/jemalloc.h ]; then
            ${csudo} /usr/bin/install -c -d /usr/local/include/jemalloc
            ${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/include/jemalloc/jemalloc.h /usr/local/include/jemalloc
        fi
        if [ -f ${jemalloc_dir}/lib/libjemalloc.so.2 ]; then
            ${csudo} /usr/bin/install -c -d /usr/local/lib
            ${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.so.2 /usr/local/lib
            ${csudo} ln -sf libjemalloc.so.2 /usr/local/lib/libjemalloc.so
            ${csudo} /usr/bin/install -c -d /usr/local/lib
            if [ -f ${jemalloc_dir}/lib/libjemalloc.a ]; then
                ${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.a /usr/local/lib
            fi
            if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
                ${csudo} /usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc_pic.a /usr/local/lib
            fi
            if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
                ${csudo} /usr/bin/install -c -d /usr/local/lib/pkgconfig
                ${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/lib/pkgconfig/jemalloc.pc /usr/local/lib/pkgconfig
            fi
        fi
        if [ -f ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html ]; then
            ${csudo} /usr/bin/install -c -d /usr/local/share/doc/jemalloc
            ${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html /usr/local/share/doc/jemalloc
        fi
        if [ -f ${jemalloc_dir}/share/man/man3/jemalloc.3 ]; then
            ${csudo} /usr/bin/install -c -d /usr/local/share/man/man3
            ${csudo} /usr/bin/install -c -m 644 ${jemalloc_dir}/share/man/man3/jemalloc.3 /usr/local/share/man/man3
        fi
185 186 187 188 189 190 191

        if [ -d /etc/ld.so.conf.d ]; then
            ${csudo} echo "/usr/local/lib" > /etc/ld.so.conf.d/jemalloc.conf
            ${csudo} ldconfig
        else
            echo "/etc/ld.so.conf.d not found!"
        fi
192 193 194
    fi
}

L
lihui 已提交
195 196
function install_config() {
    #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg     || :
S
slguan 已提交
197

L
lihui 已提交
198 199 200 201
    if [ ! -f ${cfg_install_dir}/taos.cfg ]; then
        ${csudo} mkdir -p ${cfg_install_dir}
        [ -f ${script_dir}/cfg/taos.cfg ] && ${csudo} cp ${script_dir}/cfg/taos.cfg ${cfg_install_dir}
        ${csudo} chmod 644 ${cfg_install_dir}/*
S
slguan 已提交
202 203
    fi

L
lihui 已提交
204 205 206 207 208 209 210
    ${csudo} cp -f ${script_dir}/cfg/taos.cfg ${install_main_dir}/cfg/taos.cfg.org
    ${csudo} ln -s ${cfg_install_dir}/taos.cfg ${install_main_dir}/cfg
}


function install_log() {
    ${csudo} rm -rf ${log_dir}  || :
S
slguan 已提交
211 212 213 214 215 216

    if [ "$osType" != "Darwin" ]; then
        ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
    else
        mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir}
    fi
L
lihui 已提交
217 218 219 220
    ${csudo} ln -s ${log_dir} ${install_main_dir}/log
}

function install_connector() {
221
    ${csudo} cp -rf ${script_dir}/connector/ ${install_main_dir}/
L
lihui 已提交
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
}

function install_examples() {
    if [ -d ${script_dir}/examples ]; then
        ${csudo} cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
    fi
}

function update_TDengine() {
    # Start to update
    if [ ! -e taos.tar.gz ]; then
        echo "File taos.tar.gz does not exist"
        exit 1
    fi
    tar -zxf taos.tar.gz

    echo -e "${GREEN}Start to update TDengine client...${NC}"
    # Stop the client shell if running
    if pidof taos &> /dev/null; then
        kill_client
        sleep 1
    fi
S
slguan 已提交
244

L
lihui 已提交
245 246 247 248 249
    install_main_path

    install_log
    install_header
    install_lib
250
    install_jemalloc
L
lihui 已提交
251 252 253
    if [ "$pagMode" != "lite" ]; then
      install_connector
    fi
L
lihui 已提交
254 255 256
    install_examples
    install_bin
    install_config
S
slguan 已提交
257

L
lihui 已提交
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
    echo
    echo -e "\033[44;32;1mTDengine client is updated successfully!${NC}"

    rm -rf $(tar -tf taos.tar.gz)
}

function install_TDengine() {
    # Start to install
    if [ ! -e taos.tar.gz ]; then
        echo "File taos.tar.gz does not exist"
        exit 1
    fi
    tar -zxf taos.tar.gz

    echo -e "${GREEN}Start to install TDengine client...${NC}"
S
slguan 已提交
273

274
    install_main_path
S
slguan 已提交
275
    install_log
L
lihui 已提交
276 277
    install_header
    install_lib
278
    install_jemalloc
L
lihui 已提交
279 280 281
    if [ "$pagMode" != "lite" ]; then
      install_connector
    fi
L
lihui 已提交
282 283 284
    install_examples
    install_bin
    install_config
S
slguan 已提交
285

L
lihui 已提交
286 287 288 289 290 291 292 293 294 295 296 297 298
    echo
    echo -e "\033[44;32;1mTDengine client is installed successfully!${NC}"

    rm -rf $(tar -tf taos.tar.gz)
}


## ==============================Main program starts from here============================
# Install or updata client and client
# if server is already install, don't install client
  if [ -e ${bin_dir}/taosd ]; then
      echo -e "\033[44;32;1mThere are already installed TDengine server, so don't need install client!${NC}"
      exit 0
S
slguan 已提交
299 300
  fi

L
lihui 已提交
301 302 303 304 305 306
  if [ -x ${bin_dir}/taos ]; then
      update_flag=1
      update_TDengine
  else
      install_TDengine
  fi