From ccfd17df51aca5a5cfc1ae0fdc6862b0f97c2a29 Mon Sep 17 00:00:00 2001 From: lihui Date: Fri, 22 Nov 2019 12:26:04 +0800 Subject: [PATCH] [modify packging script] --- packaging/deb/DEBIAN/preinst | 8 +- packaging/deb/DEBIAN/prerm | 4 +- packaging/deb/makedeb.sh | 3 +- packaging/release.sh | 32 +++-- packaging/rpm/tdengine.spec | 16 +-- packaging/tools/install.sh | 127 ++++++++++++++----- packaging/tools/install_client.sh | 199 +++++++++++++++++++++++++++++- packaging/tools/makeclient.sh | 79 ++++++++++++ packaging/tools/makepkg.sh | 44 ++++--- packaging/tools/post.sh | 64 ++++++---- packaging/tools/preun.sh | 46 ++++--- packaging/tools/remove.sh | 49 +++++--- packaging/tools/remove_client.sh | 75 +++++++++++ 13 files changed, 611 insertions(+), 135 deletions(-) create mode 100755 packaging/tools/makeclient.sh create mode 100755 packaging/tools/remove_client.sh diff --git a/packaging/deb/DEBIAN/preinst b/packaging/deb/DEBIAN/preinst index b313f90e90..352060556c 100644 --- a/packaging/deb/DEBIAN/preinst +++ b/packaging/deb/DEBIAN/preinst @@ -9,13 +9,13 @@ fi if pidof taosd &> /dev/null; then if pidof systemd &> /dev/null; then ${csudo} systemctl stop taosd || : - elif $(which insserv &> /dev/null); then - ${csudo} service taosd stop || : - elif $(which update-rc.d &> /dev/null); then + elif $(which service &> /dev/null); then ${csudo} service taosd stop || : else pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi fi echo "Stop taosd service success!" sleep 1 diff --git a/packaging/deb/DEBIAN/prerm b/packaging/deb/DEBIAN/prerm index 1af6a04943..d24502a1cb 100644 --- a/packaging/deb/DEBIAN/prerm +++ b/packaging/deb/DEBIAN/prerm @@ -35,6 +35,8 @@ else ${csudo} rm -f ${data_link_dir} || : pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi fi diff --git a/packaging/deb/makedeb.sh b/packaging/deb/makedeb.sh index e4c795f1b8..5766bd6836 100755 --- a/packaging/deb/makedeb.sh +++ b/packaging/deb/makedeb.sh @@ -24,8 +24,7 @@ fi mkdir -p ${pkg_dir} cd ${pkg_dir} -versioninfo=$(${script_dir}/../tools/get_version.sh ${script_dir}/../../src/util/src/version.c) -libfile="libtaos.so.${versioninfo}" +libfile="libtaos.so.${tdengine_ver}" # create install dir install_home_path="/usr/local/taos" diff --git a/packaging/release.sh b/packaging/release.sh index 2091bed220..6a00f0b79d 100755 --- a/packaging/release.sh +++ b/packaging/release.sh @@ -3,7 +3,9 @@ # Generate the deb package for ubunt, or rpm package for centos, or tar.gz package for other linux os set -e -#set -x +# set -x + +armver=$1 curr_dir=$(pwd) script_dir="$(dirname $(readlink -f $0))" @@ -110,21 +112,28 @@ echo "char gitinfo[128] = \"$(git rev-parse --verify HEAD)\";" >> ${versioninfo echo "char buildinfo[512] = \"Built by ${USER} at ${build_time}\";" >> ${versioninfo} # 2. cmake executable file -#default use debug mode -compile_mode="debug" -if [[ $1 == "Release" ]] || [[ $1 == "release" ]]; then - compile_mode="Release" -fi -compile_dir="${top_dir}/${compile_mode}" +compile_dir="${top_dir}/debug" if [ -d ${compile_dir} ]; then - ${csudo} rm -rf ${compile_dir} + ${csudo} rm -rf ${compile_dir} fi ${csudo} mkdir -p ${compile_dir} cd ${compile_dir} -${csudo} cmake -DCMAKE_BUILD_TYPE=${compile_mode} ${top_dir} -${csudo} make + +# arm only support lite ver +if [ -z "$armver" ]; then + cmake ${top_dir}/../ +elif [ "$armver" == "arm64" ]; then + cmake ${top_dir}/../ -DVERSION=lite -DARMVER=arm64 +elif [ "$armver" == "arm32" ]; then + cmake ${top_dir}/../ -DVERSION=lite -DARMVER=arm32 +else + echo "input parameter error!!!" + return +fi + +make cd ${curr_dir} @@ -153,7 +162,8 @@ ${csudo} ./makerpm.sh ${compile_dir} ${output_dir} ${version} echo "do tar.gz package for all systems" cd ${script_dir}/tools -${csudo} ./makepkg.sh ${compile_dir} ${version} "${build_time}" +${csudo} ./makepkg.sh ${compile_dir} ${version} "${build_time}" ${armver} +${csudo} ./makeclient.sh ${compile_dir} ${version} "${build_time}" ${armver} # 4. Clean up temporary compile directories #${csudo} rm -rf ${compile_dir} diff --git a/packaging/rpm/tdengine.spec b/packaging/rpm/tdengine.spec index 9ede4102e7..c0c0eacfae 100644 --- a/packaging/rpm/tdengine.spec +++ b/packaging/rpm/tdengine.spec @@ -39,8 +39,7 @@ echo topdir: %{_topdir} echo version: %{_version} echo buildroot: %{buildroot} -versioninfo=$(%{_compiledir}/../packaging/tools/get_version.sh ../../src/util/src/version.c) -libfile="libtaos.so.${versioninfo}" +libfile="libtaos.so.%{_version}" # create install path, and cp file mkdir -p %{buildroot}%{homepath}/bin @@ -80,18 +79,17 @@ fi if pidof taosd &> /dev/null; then if pidof systemd &> /dev/null; then ${csudo} systemctl stop taosd || : - elif $(which insserv &> /dev/null); then - ${csudo} service taosd stop || : - elif $(which update-rc.d &> /dev/null); then + elif $(which service &> /dev/null); then ${csudo} service taosd stop || : else pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi fi echo "Stop taosd service success!" sleep 1 fi - # if taos.cfg already softlink, remove it if [ -f %{cfg_install_dir}/taos.cfg ]; then ${csudo} rm -f %{homepath}/cfg/taos.cfg || : @@ -146,7 +144,9 @@ if [ $1 -eq 0 ];then ${csudo} rm -f ${data_link_dir} || : pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi fi fi diff --git a/packaging/tools/install.sh b/packaging/tools/install.sh index 4b653dec9c..2911452fb4 100755 --- a/packaging/tools/install.sh +++ b/packaging/tools/install.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# This file is used to install TAOS time-series database on linux systems. The operating system +# This file is used to install database on linux systems. The operating system # is required to use systemd to manage services at boot set -e @@ -41,19 +41,58 @@ if command -v sudo > /dev/null; then csudo="sudo" fi +initd_mod=0 service_mod=2 if pidof systemd &> /dev/null; then service_mod=0 -elif $(which update-rc.d &> /dev/null); then +elif $(which service &> /dev/null); then service_mod=1 - service_config_dir="/etc/init.d" + service_config_dir="/etc/init.d" + if $(which chkconfig &> /dev/null); then + initd_mod=1 + elif $(which insserv &> /dev/null); then + initd_mod=2 + elif $(which update-rc.d &> /dev/null); then + initd_mod=3 + else + service_mod=2 + fi else service_mod=2 fi + +# get the operating system type for using the corresponding init file +# ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification +#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release) +osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) +#echo "osinfo: ${osinfo}" +os_type=0 +if echo $osinfo | grep -qwi "ubuntu" ; then + echo "this is ubuntu system" + os_type=1 +elif echo $osinfo | grep -qwi "debian" ; then + echo "this is debian system" + os_type=1 +elif echo $osinfo | grep -qwi "Kylin" ; then + echo "this is Kylin system" + os_type=1 +elif echo $osinfo | grep -qwi "centos" ; then + echo "this is centos system" + os_type=2 +elif echo $osinfo | grep -qwi "fedora" ; then + echo "this is fedora system" + os_type=2 +else + echo "this is other linux system" + os_type=0 +fi + function kill_taosd() { pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 pid || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi } function install_main_path() { @@ -81,7 +120,7 @@ function install_bin() { #Make link [ -x ${install_main_dir}/bin/taos ] && ${csudo} ln -s ${install_main_dir}/bin/taos ${bin_link_dir}/taos || : - [ -x ${install_main_dir}/bin/taosd ] && ${csudo} ln -s ${install_main_dir}/bin/taosd ${bin_link_dir}/taosd || : + [ -x ${install_main_dir}/bin/taosd ] && ${csudo} ln -s ${install_main_dir}/bin/taosd ${bin_link_dir}/taosd || : [ -x ${install_main_dir}/bin/taosdump ] && ${csudo} ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || : [ -x ${install_main_dir}/bin/taosdemo ] && ${csudo} ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || : [ -x ${install_main_dir}/bin/remove.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/rmtaos || : @@ -89,7 +128,7 @@ function install_bin() { function install_lib() { # Remove links - ${csudo} rm -f ${lib_link_dir}/libtaos.* || : + ${csudo} rm -f ${lib_link_dir}/libtaos.* || : ${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/* @@ -98,7 +137,7 @@ function install_lib() { } function install_header() { - ${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h || : + ${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h || : ${csudo} cp -f ${script_dir}/inc/* ${install_main_dir}/include && ${csudo} chmod 644 ${install_main_dir}/include/* ${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 @@ -107,16 +146,17 @@ function install_header() { function install_config() { #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || : - if [ ! -f ${cfg_install_dir}/taos.cfg ]; then + 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}/* fi ${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 + ${csudo} ln -s ${cfg_install_dir}/taos.cfg ${install_main_dir}/cfg } + function install_log() { ${csudo} rm -rf ${log_dir} || : ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir} @@ -139,14 +179,26 @@ function install_examples() { } function clean_service_on_sysvinit() { - restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : + if pidof taosd &> /dev/null; then ${csudo} service taosd stop || : fi - ${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : + + if ((${initd_mod}==1)); then + ${csudo} chkconfig --del taosd || : + elif ((${initd_mod}==2)); then + ${csudo} insserv -r taosd || : + elif ((${initd_mod}==3)); then + ${csudo} update-rc.d -f taosd remove || : + fi + ${csudo} rm -f ${service_config_dir}/taosd || : - ${csudo} update-rc.d -f taosd remove || : - ${csudo} init q || : + + if $(which init &> /dev/null); then + ${csudo} init q || : + fi } function install_service_on_sysvinit() { @@ -155,14 +207,27 @@ function install_service_on_sysvinit() { sleep 1 # Install taosd service - ${csudo} cp -f ${script_dir}/init.d/taosd ${install_main_dir}/init.d - ${csudo} cp ${script_dir}/init.d/taosd ${service_config_dir} && ${csudo} chmod a+x ${service_config_dir}/taosd - restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" - - ${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab" - # TODO: for centos, change here - ${csudo} update-rc.d taosd defaults - # chkconfig mysqld on + + if ((${os_type}==1)); then + ${csudo} cp -f ${script_dir}/init.d/taosd.deb ${install_main_dir}/init.d/taosd + ${csudo} cp ${script_dir}/init.d/taosd.deb ${service_config_dir}/taosd && ${csudo} chmod a+x ${service_config_dir}/taosd + elif ((${os_type}==2)); then + ${csudo} cp -f ${script_dir}/init.d/taosd.rpm ${install_main_dir}/init.d/taosd + ${csudo} cp ${script_dir}/init.d/taosd.rpm ${service_config_dir}/taosd && ${csudo} chmod a+x ${service_config_dir}/taosd + fi + + #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab" + + if ((${initd_mod}==1)); then + ${csudo} chkconfig --add taosd || : + ${csudo} chkconfig --level 2345 taosd on || : + elif ((${initd_mod}==2)); then + ${csudo} insserv taosd || : + ${csudo} insserv -d taosd || : + elif ((${initd_mod}==3)); then + ${csudo} update-rc.d taosd defaults || : + fi } function clean_service_on_systemd() { @@ -212,7 +277,7 @@ function install_service() { elif ((${service_mod}==1)); then install_service_on_sysvinit else - # must manual start taosd + # must manual stop taosd kill_taosd fi } @@ -266,7 +331,7 @@ function update_TDengine() { echo "File taos.tar.gz does not exist" exit 1 fi - tar -zxf taos.tar.gz + tar -zxf taos.tar.gz # Check if version compatible if ! is_version_compatible; then @@ -274,7 +339,7 @@ function update_TDengine() { return 1 fi - echo -e "${GREEN}Start to update TDEngine...${NC}" + echo -e "${GREEN}Start to update TDengine...${NC}" # Stop the service if running if pidof taosd &> /dev/null; then if ((${service_mod}==0)); then @@ -306,8 +371,7 @@ function update_TDengine() { if ((${service_mod}==0)); then echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} systemctl start taosd${NC}" elif ((${service_mod}==1)); then - echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} update-rc.d taosd default ${RED} for the first time${NC}" - echo -e " : ${csudo} service taosd start ${RED} after${NC}" + echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} service taosd start${NC}" else echo -e "${GREEN_DARK}To start TDengine ${NC}: ./taosd${NC}" fi @@ -316,7 +380,7 @@ function update_TDengine() { echo echo -e "\033[44;32;1mTDengine is updated successfully!${NC}" else - install_bin $1 + install_bin install_config echo @@ -332,9 +396,9 @@ function install_TDengine() { echo "File taos.tar.gz does not exist" exit 1 fi - tar -zxf taos.tar.gz + tar -zxf taos.tar.gz - echo -e "${GREEN}Start to install TDEngine...${NC}" + echo -e "${GREEN}Start to install TDengine...${NC}" install_main_path @@ -362,10 +426,9 @@ function install_TDengine() { if ((${service_mod}==0)); then echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} systemctl start taosd${NC}" elif ((${service_mod}==1)); then - echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} update-rc.d taosd default ${RED} for the first time${NC}" - echo -e " : ${csudo} service taosd start ${RED} after${NC}" + echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} service taosd start${NC}" else - echo -e "${GREEN_DARK}To start TDengine ${NC}: ./taosd${NC}" + echo -e "${GREEN_DARK}To start TDengine ${NC}: taosd${NC}" fi echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}" diff --git a/packaging/tools/install_client.sh b/packaging/tools/install_client.sh index 39437c145e..7560ebca41 100755 --- a/packaging/tools/install_client.sh +++ b/packaging/tools/install_client.sh @@ -1,4 +1,201 @@ #!/bin/bash +# +# This file is used to install TDengine client on linux systems. The operating system +# is required to use systemd to manage services at boot +set -e +#set -x + +# -----------------------Variables definition--------------------- script_dir=$(dirname $(readlink -m "$0")) -${script_dir}/install.sh client +# Dynamic directory +data_dir="/var/lib/taos" +log_dir="/var/log/taos" + +log_link_dir="/usr/local/taos/log" + +cfg_install_dir="/etc/taos" + +bin_link_dir="/usr/bin" +lib_link_dir="/usr/lib" +inc_link_dir="/usr/include" + +#install main path +install_main_dir="/usr/local/taos" + +# old bin dir +bin_dir="/usr/local/taos/bin" + + +# 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} || : + ${csudo} mkdir -p ${install_main_dir} + ${csudo} mkdir -p ${install_main_dir}/cfg + ${csudo} mkdir -p ${install_main_dir}/bin + ${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() { + # Remove links + ${csudo} rm -f ${bin_link_dir}/taos || : + ${csudo} rm -f ${bin_link_dir}/taosdump || : + ${csudo} rm -f ${bin_link_dir}/rmtaos || : + + ${csudo} cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo} chmod 0555 ${install_main_dir}/bin/* + + #Make link + [ -x ${install_main_dir}/bin/taos ] && ${csudo} ln -s ${install_main_dir}/bin/taos ${bin_link_dir}/taos || : + [ -x ${install_main_dir}/bin/taosdump ] && ${csudo} ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || : + [ -x ${install_main_dir}/bin/remove_client.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove_client.sh ${bin_link_dir}/rmtaos || : +} + +function clean_lib() { + sudo rm -f /usr/lib/libtaos.so || : + sudo rm -rf ${lib_dir} || : +} + +function install_lib() { + # Remove links + ${csudo} rm -f ${lib_link_dir}/libtaos.* || : + + ${csudo} cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/* + + ${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 + +} + +function install_header() { + ${csudo} rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taoserror.h || : + ${csudo} cp -f ${script_dir}/inc/* ${install_main_dir}/include && ${csudo} chmod 644 ${install_main_dir}/include/* + ${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 +} + +function install_config() { + #${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || : + + 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}/* + fi + + ${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} || : + ${csudo} mkdir -p ${log_dir} && ${csudo} chmod 777 ${log_dir} + + ${csudo} ln -s ${log_dir} ${install_main_dir}/log +} + +function install_connector() { + ${csudo} cp -rf ${script_dir}/connector/* ${install_main_dir}/connector +} + +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 + + install_main_path + + install_log + install_header + install_lib + install_connector + install_examples + install_bin + install_config + + 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}" + + install_main_path + install_log + install_header + install_lib + install_connector + install_examples + install_bin + install_config + + 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 + fi + + if [ -x ${bin_dir}/taos ]; then + update_flag=1 + update_TDengine + else + install_TDengine + fi diff --git a/packaging/tools/makeclient.sh b/packaging/tools/makeclient.sh new file mode 100755 index 0000000000..0e52e0970a --- /dev/null +++ b/packaging/tools/makeclient.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# +# Generate tar.gz package for linux client +set -e +set -x + +curr_dir=$(pwd) +compile_dir=$1 +version=$2 +build_time=$3 +armver=$4 + +script_dir="$(dirname $(readlink -f $0))" +top_dir="$(readlink -m ${script_dir}/../..)" + +# create compressed install file. +build_dir="${compile_dir}/build" +code_dir="${top_dir}/src" +release_dir="${top_dir}/release" +community_dir="${script_dir}/../../../community/src" + +package_name='linux' +install_dir="${release_dir}/TDengine-client-enterprise-${version}-${package_name}-$(echo ${build_time}| tr ': ' -)" + +# Directories and files. +bin_files="${build_dir}/bin/taos ${build_dir}/bin/taosdump ${script_dir}/remove_client.sh" +lib_files="${build_dir}/lib/libtaos.so.${version}" +header_files="${community_dir}/inc/taos.h ${community_dir}/inc/taoserror.h" +cfg_dir="${top_dir}/packaging/cfg" +install_files="${script_dir}/install_client.sh" + +# make directories. +mkdir -p ${install_dir} +mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc +mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg +mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* + +cd ${install_dir} +tar -zcv -f taos.tar.gz * --remove-files || : + +cd ${curr_dir} +cp ${install_files} ${install_dir} && chmod a+x ${install_dir}/install* + +# Copy example code +mkdir -p ${install_dir}/examples +cp -r ${top_dir}/tests/examples/c ${install_dir}/examples +cp -r ${top_dir}/tests/examples/JDBC ${install_dir}/examples +cp -r ${top_dir}/tests/examples/matlab ${install_dir}/examples +cp -r ${top_dir}/tests/examples/python ${install_dir}/examples +cp -r ${top_dir}/tests/examples/R ${install_dir}/examples +cp -r ${top_dir}/tests/examples/go ${install_dir}/examples + +# Copy driver +mkdir -p ${install_dir}/driver +cp ${lib_files} ${install_dir}/driver + +# Copy connector +connector_dir="${community_dir}/connector" +mkdir -p ${install_dir}/connector +cp ${build_dir}/lib/*.jar ${install_dir}/connector +cp -r ${connector_dir}/grafana ${install_dir}/connector/ +cp -r ${connector_dir}/python ${install_dir}/connector/ +cp -r ${connector_dir}/go ${install_dir}/connector + +# Copy release note +# cp ${script_dir}/release_note ${install_dir} + +# exit 1 + +cd ${release_dir} +if [ -z "$armver" ]; then + tar -zcv -f "$(basename ${install_dir}).tar.gz" $(basename ${install_dir}) --remove-files +elif [ "$armver" == "arm64" ]; then + tar -zcv -f "$(basename ${install_dir})-arm64.tar.gz" $(basename ${install_dir}) --remove-files +elif [ "$armver" == "arm32" ]; then + tar -zcv -f "$(basename ${install_dir})-arm32.tar.gz" $(basename ${install_dir}) --remove-files +fi + +cd ${curr_dir} diff --git a/packaging/tools/makepkg.sh b/packaging/tools/makepkg.sh index 967b14cee9..24f3a0b8d1 100755 --- a/packaging/tools/makepkg.sh +++ b/packaging/tools/makepkg.sh @@ -6,6 +6,7 @@ curr_dir=$(pwd) compile_dir=$1 version=$2 build_time=$3 +armver=$4 script_dir="$(dirname $(readlink -f $0))" top_dir="$(readlink -m ${script_dir}/../..)" @@ -20,11 +21,10 @@ install_dir="${release_dir}/taos-${version}-${package_name}-$(echo ${build_time} # Directories and files. bin_files="${build_dir}/bin/taosd ${build_dir}/bin/taos ${build_dir}/bin/taosdemo ${build_dir}/bin/taosdump ${script_dir}/remove.sh" -versioninfo=$(${script_dir}/get_version.sh ${code_dir}/util/src/version.c) -lib_files="${build_dir}/lib/libtaos.so.${versioninfo}" +lib_files="${build_dir}/lib/libtaos.so.${version}" header_files="${code_dir}/inc/taos.h ${code_dir}/inc/taoserror.h" -cfg_files="${top_dir}/packaging/cfg/*.cfg" -install_files="${script_dir}/install.sh ${script_dir}/install_client.sh" +cfg_dir="${top_dir}/packaging/cfg" +install_files="${script_dir}/install.sh" # Init file #init_dir=${script_dir}/deb @@ -33,29 +33,32 @@ install_files="${script_dir}/install.sh ${script_dir}/install_client.sh" #fi #init_files=${init_dir}/taosd # temp use rpm's taosd. TODO: later modify according to os type -init_files=${script_dir}/../rpm/taosd +init_file_deb=${script_dir}/../deb/taosd +init_file_rpm=${script_dir}/../rpm/taosd # make directories. mkdir -p ${install_dir} mkdir -p ${install_dir}/inc && cp ${header_files} ${install_dir}/inc -mkdir -p ${install_dir}/cfg && cp ${cfg_files} ${install_dir}/cfg +mkdir -p ${install_dir}/cfg && cp ${cfg_dir}/taos.cfg ${install_dir}/cfg/taos.cfg mkdir -p ${install_dir}/bin && cp ${bin_files} ${install_dir}/bin && chmod a+x ${install_dir}/bin/* -mkdir -p ${install_dir}/init.d && cp ${init_files} ${install_dir}/init.d +mkdir -p ${install_dir}/init.d && cp ${init_file_deb} ${install_dir}/init.d/taosd.deb +mkdir -p ${install_dir}/init.d && cp ${init_file_rpm} ${install_dir}/init.d/taosd.rpm cd ${install_dir} -tar -zcv -f taos.tar.gz * --remove-files || : +tar -zcv -f taos.tar.gz * --remove-files || : cd ${curr_dir} cp ${install_files} ${install_dir} && chmod a+x ${install_dir}/install* # Copy example code mkdir -p ${install_dir}/examples -cp -r ${top_dir}/tests/examples/c ${install_dir}/examples -cp -r ${top_dir}/tests/examples/JDBC ${install_dir}/examples -cp -r ${top_dir}/tests/examples/matlab ${install_dir}/examples -cp -r ${top_dir}/tests/examples/python ${install_dir}/examples -cp -r ${top_dir}/tests/examples/R ${install_dir}/examples -cp -r ${top_dir}/tests/examples/go ${install_dir}/examples +examples_dir="${top_dir}/tests/examples" +cp -r ${examples_dir}/c ${install_dir}/examples +cp -r ${examples_dir}/JDBC ${install_dir}/examples +cp -r ${examples_dir}/matlab ${install_dir}/examples +cp -r ${examples_dir}/python ${install_dir}/examples +cp -r ${examples_dir}/R ${install_dir}/examples +cp -r ${examples_dir}/go ${install_dir}/examples # Copy driver mkdir -p ${install_dir}/driver @@ -64,18 +67,23 @@ cp ${lib_files} ${install_dir}/driver # Copy connector connector_dir="${code_dir}/connector" mkdir -p ${install_dir}/connector +cp ${build_dir}/lib/*.jar ${install_dir}/connector cp -r ${connector_dir}/grafana ${install_dir}/connector/ cp -r ${connector_dir}/python ${install_dir}/connector/ cp -r ${connector_dir}/go ${install_dir}/connector -cp ${build_dir}/lib/*.jar ${install_dir}/connector - # Copy release note -cp ${script_dir}/release_note ${install_dir} +# cp ${script_dir}/release_note ${install_dir} # exit 1 cd ${release_dir} -tar -zcv -f "$(basename ${install_dir}).tar.gz" $(basename ${install_dir}) --remove-files +if [ -z "$armver" ]; then + tar -zcv -f "$(basename ${install_dir}).tar.gz" $(basename ${install_dir}) --remove-files +elif [ "$armver" == "arm64" ]; then + tar -zcv -f "$(basename ${install_dir})-arm64.tar.gz" $(basename ${install_dir}) --remove-files +elif [ "$armver" == "arm32" ]; then + tar -zcv -f "$(basename ${install_dir})-arm32.tar.gz" $(basename ${install_dir}) --remove-files +fi cd ${curr_dir} diff --git a/packaging/tools/post.sh b/packaging/tools/post.sh index 11f3ab9a9b..a62f7a5eeb 100755 --- a/packaging/tools/post.sh +++ b/packaging/tools/post.sh @@ -42,14 +42,18 @@ initd_mod=0 service_mod=2 if pidof systemd &> /dev/null; then service_mod=0 -elif $(which insserv &> /dev/null); then +elif $(which service &> /dev/null); then service_mod=1 - initd_mod=1 - service_config_dir="/etc/init.d" -elif $(which update-rc.d &> /dev/null); then - service_mod=1 - initd_mod=2 - service_config_dir="/etc/init.d" + service_config_dir="/etc/init.d" + if $(which chkconfig &> /dev/null); then + initd_mod=1 + elif $(which insserv &> /dev/null); then + initd_mod=2 + elif $(which update-rc.d &> /dev/null); then + initd_mod=3 + else + service_mod=2 + fi else service_mod=2 fi @@ -57,7 +61,9 @@ fi function kill_taosd() { # ${csudo} pkill -f taosd || : pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi } function install_include() { @@ -103,20 +109,26 @@ function install_config() { } function clean_service_on_sysvinit() { - restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : + if pidof taosd &> /dev/null; then ${csudo} service taosd stop || : fi - ${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : - ${csudo} rm -f ${service_config_dir}/taosd || : - + if ((${initd_mod}==1)); then - ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} insserv -r taosd || : + ${csudo} chkconfig --del taosd || : elif ((${initd_mod}==2)); then - ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} update-rc.d -f taosd remove || : + ${csudo} insserv -r taosd || : + elif ((${initd_mod}==3)); then + ${csudo} update-rc.d -f taosd remove || : + fi + + ${csudo} rm -f ${service_config_dir}/taosd || : + + if $(which init &> /dev/null); then + ${csudo} init q || : fi -# ${csudo} update-rc.d -f taosd remove || : - ${csudo} init q || : } function install_service_on_sysvinit() { @@ -127,18 +139,24 @@ function install_service_on_sysvinit() { # Install taosd service ${csudo} cp %{init_d_dir}/taosd ${service_config_dir} && ${csudo} chmod a+x ${service_config_dir}/taosd - restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" - - ${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab" - # TODO: for centos, change here - ${csudo} update-rc.d taosd defaults - # chkconfig mysqld on + #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #${csudo} grep -q -F "$restart_config_str" /etc/inittab || ${csudo} bash -c "echo '${restart_config_str}' >> /etc/inittab" + + if ((${initd_mod}==1)); then + ${csudo} chkconfig --add taosd || : + ${csudo} chkconfig --level 2345 taosd on || : + elif ((${initd_mod}==2)); then + ${csudo} insserv taosd || : + ${csudo} insserv -d taosd || : + elif ((${initd_mod}==3)); then + ${csudo} update-rc.d taosd defaults || : + fi } function clean_service_on_systemd() { taosd_service_config="${service_config_dir}/taosd.service" - # taosd service already is stoped before install + # taosd service already is stoped before install in preinst script #if systemctl is-active --quiet taosd; then # echo "TDengine is running, stopping it..." # ${csudo} systemctl stop taosd &> /dev/null || echo &> /dev/null diff --git a/packaging/tools/preun.sh b/packaging/tools/preun.sh index a08f4e304e..0533410802 100755 --- a/packaging/tools/preun.sh +++ b/packaging/tools/preun.sh @@ -26,22 +26,27 @@ initd_mod=0 service_mod=2 if pidof systemd &> /dev/null; then service_mod=0 -elif $(which insserv &> /dev/null); then +elif $(which service &> /dev/null); then service_mod=1 - initd_mod=1 - service_config_dir="/etc/init.d" -elif $(which update-rc.d &> /dev/null); then - service_mod=1 - initd_mod=2 - service_config_dir="/etc/init.d" + service_config_dir="/etc/init.d" + if $(which chkconfig &> /dev/null); then + initd_mod=1 + elif $(which insserv &> /dev/null); then + initd_mod=2 + elif $(which update-rc.d &> /dev/null); then + initd_mod=3 + else + service_mod=2 + fi else service_mod=2 fi - function kill_taosd() { pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi } function clean_service_on_systemd() { @@ -57,20 +62,27 @@ function clean_service_on_systemd() { } function clean_service_on_sysvinit() { - restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : + if pidof taosd &> /dev/null; then + echo "TDengine taosd is running, stopping it..." ${csudo} service taosd stop || : fi - ${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : - ${csudo} rm -f ${service_config_dir}/taosd || : if ((${initd_mod}==1)); then - ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} insserv -r taosd || : + ${csudo} chkconfig --del taosd || : elif ((${initd_mod}==2)); then - ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} update-rc.d -f taosd remove || : + ${csudo} insserv -r taosd || : + elif ((${initd_mod}==3)); then + ${csudo} update-rc.d -f taosd remove || : + fi + + ${csudo} rm -f ${service_config_dir}/taosd || : + + if $(which init &> /dev/null); then + ${csudo} init q || : fi -# ${csudo} update-rc.d -f taosd remove || : - ${csudo} init q || : } function clean_service() { @@ -79,7 +91,7 @@ function clean_service() { elif ((${service_mod}==1)); then clean_service_on_sysvinit else - # must manual start taosd + # must manual stop taosd kill_taosd fi } diff --git a/packaging/tools/remove.sh b/packaging/tools/remove.sh index 6c2c6d5ea8..3c9fd6bf7f 100755 --- a/packaging/tools/remove.sh +++ b/packaging/tools/remove.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Script to stop the service and uninstall tdengine, but retain the config, data and log files. +# Script to stop the service and uninstall TDengine, but retain the config, data and log files. RED='\033[0;31m' GREEN='\033[1;32m' @@ -27,21 +27,27 @@ initd_mod=0 service_mod=2 if pidof systemd &> /dev/null; then service_mod=0 -elif $(which insserv &> /dev/null); then +elif $(which service &> /dev/null); then service_mod=1 - initd_mod=1 - service_config_dir="/etc/init.d" -elif $(which update-rc.d &> /dev/null); then - service_mod=1 - initd_mod=2 - service_config_dir="/etc/init.d" + service_config_dir="/etc/init.d" + if $(which chkconfig &> /dev/null); then + initd_mod=1 + elif $(which insserv &> /dev/null); then + initd_mod=2 + elif $(which update-rc.d &> /dev/null); then + initd_mod=3 + else + service_mod=2 + fi else service_mod=2 fi function kill_taosd() { pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') - ${csudo} kill -9 ${pid} || : + if [ -n "$pid" ]; then + ${csudo} kill -9 $pid || : + fi } function clean_bin() { @@ -87,20 +93,27 @@ function clean_service_on_systemd() { } function clean_service_on_sysvinit() { - restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" + #${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : + if pidof taosd &> /dev/null; then + echo "TDengine taosd is running, stopping it..." ${csudo} service taosd stop || : fi - ${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : - ${csudo} rm -f ${service_config_dir}/taosd || : if ((${initd_mod}==1)); then - ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} insserv -r taosd || : + ${csudo} chkconfig --del taosd || : elif ((${initd_mod}==2)); then - ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} update-rc.d -f taosd remove || : + ${csudo} insserv -r taosd || : + elif ((${initd_mod}==3)); then + ${csudo} update-rc.d -f taosd remove || : + fi + + ${csudo} rm -f ${service_config_dir}/taosd || : + + if $(which init &> /dev/null); then + ${csudo} init q || : fi -# ${csudo} update-rc.d -f taosd remove || : - ${csudo} init q || : } function clean_service() { @@ -109,7 +122,7 @@ function clean_service() { elif ((${service_mod}==1)); then clean_service_on_sysvinit else - # must manual start taosd + # must manual stop taosd kill_taosd fi } @@ -140,4 +153,4 @@ elif echo $osinfo | grep -qwi "centos" ; then ${csudo} rpm -e --noscripts tdengine || : fi -echo -e "${GREEN}TDEngine is removed successfully!${NC}" +echo -e "${GREEN}TDengine is removed successfully!${NC}" diff --git a/packaging/tools/remove_client.sh b/packaging/tools/remove_client.sh new file mode 100755 index 0000000000..206de34c1f --- /dev/null +++ b/packaging/tools/remove_client.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# Script to stop the client and uninstall database, but retain the config and log files. +set -e +# set -x + +RED='\033[0;31m' +GREEN='\033[1;32m' +NC='\033[0m' + +#install main path +install_main_dir="/usr/local/taos" + +log_link_dir="/usr/local/taos/log" +cfg_link_dir="/usr/local/taos/cfg" +bin_link_dir="/usr/bin" +lib_link_dir="/usr/lib" +inc_link_dir="/usr/include" + +csudo="" +if command -v sudo > /dev/null; then + csudo="sudo" +fi + +function kill_client() { + #pid=$(ps -ef | grep "taos" | grep -v "grep" | awk '{print $2}') + if [ -n "$(pidof taos)" ]; then + ${csudo} kill -9 $pid || : + fi +} + +function clean_bin() { + # Remove link + ${csudo} rm -f ${bin_link_dir}/taos || : + ${csudo} rm -f ${bin_link_dir}/taosump || : + ${csudo} rm -f ${bin_link_dir}/rmtaos || : +} + +function clean_lib() { + # Remove link + ${csudo} rm -f ${lib_link_dir}/libtaos.* || : +} + +function clean_header() { + # Remove link + ${csudo} rm -f ${inc_link_dir}/taos.h || : + ${csudo} rm -f ${inc_link_dir}/taoserror.h || : +} + +function clean_config() { + # Remove link + ${csudo} rm -f ${cfg_link_dir}/* || : +} + +function clean_log() { + # Remove link + ${csudo} rm -rf ${log_link_dir} || : +} + +# Stop client. +kill_client +# Remove binary file and links +clean_bin +# Remove header file. +clean_header +# Remove lib file +clean_lib +# Remove link log directory +clean_log +# Remove link configuration file +clean_config + +${csudo} rm -rf ${install_main_dir} + +echo -e "${GREEN}TDengine client is removed successfully!${NC}" -- GitLab