diff --git a/packaging/deb/DEBIAN/preinst b/packaging/deb/DEBIAN/preinst index d31129ba2cbe7d3d2d41dc0176e4a3bd43bde60d..472d853637d8f39f02de2f872555794e3e026d5b 100644 --- a/packaging/deb/DEBIAN/preinst +++ b/packaging/deb/DEBIAN/preinst @@ -5,20 +5,15 @@ if command -v sudo > /dev/null; then csudo="sudo" fi -function is_using_systemd() { - if pidof systemd &> /dev/null; then - return 0 - else - return 1 - fi -} - # Stop the service if running if pidof taosd &> /dev/null; then - if is_using_systemd; then + if pidof systemd &> /dev/null; then ${csudo} systemctl stop taosd || : - else + elif $(which insserv &> /dev/null); then ${csudo} service taosd stop || : + else + pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') + ${csudo} kill -9 ${pid} || : fi echo "Stop taosd service success!" sleep 1 @@ -29,5 +24,7 @@ cfg_install_dir="/etc/taos" install_main_dir="/usr/local/taos" if [ -f ${cfg_install_dir}/taos.cfg ]; then ${csudo} rm -f ${install_main_dir}/cfg/taos.cfg || : -fi +fi +# there can not libtaos.so*, otherwise ln -s error +${csudo} rm -f ${install_main_dir}/driver/libtaos* || : diff --git a/packaging/deb/DEBIAN/prerm b/packaging/deb/DEBIAN/prerm index e5a7c027a30ba1a7790e25ad03999462a6bdf30d..1af6a0494331774a12fd297979dc98914490ce97 100644 --- a/packaging/deb/DEBIAN/prerm +++ b/packaging/deb/DEBIAN/prerm @@ -7,6 +7,34 @@ if command -v sudo > /dev/null; then csudo="sudo" fi -${csudo} chmod -R 744 ${insmetaPath} -cd ${insmetaPath} -${csudo} ./preun.sh +${csudo} chmod -R 744 ${insmetaPath} || : +#cd ${insmetaPath} +#${csudo} ./preun.sh +if [ -f ${insmetaPath}/preun.sh ]; then + cd ${insmetaPath} + ${csudo} ./preun.sh +else + bin_link_dir="/usr/bin" + lib_link_dir="/usr/lib" + inc_link_dir="/usr/include" + + data_link_dir="/usr/local/taos/data" + log_link_dir="/usr/local/taos/log" + cfg_link_dir="/usr/local/taos/cfg" + + # Remove all links + ${csudo} rm -f ${bin_link_dir}/taos || : + ${csudo} rm -f ${bin_link_dir}/taosd || : + ${csudo} rm -f ${bin_link_dir}/taosdemo || : + ${csudo} rm -f ${bin_link_dir}/taosdump || : + ${csudo} rm -f ${cfg_link_dir}/* || : + ${csudo} rm -f ${inc_link_dir}/taos.h || : + ${csudo} rm -f ${lib_link_dir}/libtaos.* || : + + ${csudo} rm -f ${log_link_dir} || : + ${csudo} rm -f ${data_link_dir} || : + + pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') + ${csudo} kill -9 ${pid} || : +fi + diff --git a/packaging/rpm/tdengine.spec b/packaging/rpm/tdengine.spec index 42f67a37f7c75502b7f9f2677c3aef0eebd7b923..7b0a1afd6e75b68719a190848e0c50b2c170ef0d 100644 --- a/packaging/rpm/tdengine.spec +++ b/packaging/rpm/tdengine.spec @@ -1,5 +1,6 @@ %define homepath /usr/local/taos %define cfg_install_dir /etc/taos +%define __strip /bin/true Name: tdengine Version: %{_version} @@ -98,6 +99,9 @@ if [ -f %{cfg_install_dir}/taos.cfg ]; then ${csudo} rm -f %{homepath}/cfg/taos.cfg || : fi +# there can not libtaos.so*, otherwise ln -s error +${csudo} rm -f %{homepath}/driver/libtaos* || : + #Scripts executed after installation %post csudo="" @@ -115,8 +119,36 @@ if command -v sudo > /dev/null; then fi # only remove package to call preun.sh, not but update(2) if [ $1 -eq 0 ];then - cd %{homepath}/script - ${csudo} ./preun.sh + #cd %{homepath}/script + #${csudo} ./preun.sh + + if [ -f %{homepath}/script/preun.sh ]; then + cd %{homepath}/script + ${csudo} ./preun.sh + else + bin_link_dir="/usr/bin" + lib_link_dir="/usr/lib" + inc_link_dir="/usr/include" + + data_link_dir="/usr/local/taos/data" + log_link_dir="/usr/local/taos/log" + cfg_link_dir="/usr/local/taos/cfg" + + # Remove all links + ${csudo} rm -f ${bin_link_dir}/taos || : + ${csudo} rm -f ${bin_link_dir}/taosd || : + ${csudo} rm -f ${bin_link_dir}/taosdemo || : + ${csudo} rm -f ${bin_link_dir}/taosdump || : + ${csudo} rm -f ${cfg_link_dir}/* || : + ${csudo} rm -f ${inc_link_dir}/taos.h || : + ${csudo} rm -f ${lib_link_dir}/libtaos.* || : + + ${csudo} rm -f ${log_link_dir} || : + ${csudo} rm -f ${data_link_dir} || : + + pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') + ${csudo} kill -9 ${pid} || : + fi fi # Scripts executed after uninstall diff --git a/packaging/tools/make_install.sh b/packaging/tools/make_install.sh index 4bb4a6495a0c6b0c14d718b47d482a5e11e652e2..19e7cc4efea60aa1990baeb46097d718eb3cbfc7 100755 --- a/packaging/tools/make_install.sh +++ b/packaging/tools/make_install.sh @@ -26,7 +26,7 @@ inc_link_dir="/usr/include" #install main path install_main_dir="/usr/local/taos" -# old bin +# old bin dir bin_dir="/usr/local/taos/bin" service_config_dir="/etc/systemd/system" @@ -43,18 +43,27 @@ if command -v sudo > /dev/null; then csudo="sudo" fi -function is_using_systemd() { - if pidof systemd &> /dev/null; then - return 0 - else - return 1 - fi -} - -if ! is_using_systemd; then +initd_mod=0 +service_mod=2 +if pidof systemd &> /dev/null; then + service_mod=0 +elif $(which insserv &> /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" +else + service_mod=2 fi +function kill_taosd() { + pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') + ${csudo} kill -9 ${pid} || : +} + function install_main_path() { #create install main dir and all sub dir ${csudo} rm -rf ${install_main_dir} || : @@ -65,35 +74,32 @@ function install_main_path() { ${csudo} mkdir -p ${install_main_dir}/driver ${csudo} mkdir -p ${install_main_dir}/examples ${csudo} mkdir -p ${install_main_dir}/include - ${csudo} mkdir -p ${install_main_dir}/init.d + ${csudo} mkdir -p ${install_main_dir}/init.d } function install_bin() { # Remove links ${csudo} rm -f ${bin_link_dir}/taos || : ${csudo} rm -f ${bin_link_dir}/taosd || : - ${csudo} rm -f ${bin_link_dir}/taosdump || : ${csudo} rm -f ${bin_link_dir}/taosdemo || : + ${csudo} rm -f ${bin_link_dir}/taosdump || : ${csudo} rm -f ${bin_link_dir}/rmtaos || : - ${csudo} cp -r ${binary_dir}/build/bin/taos ${install_main_dir}/bin - ${csudo} cp -r ${binary_dir}/build/bin/taosd ${install_main_dir}/bin - ${csudo} cp -r ${binary_dir}/build/bin/taosdemo ${install_main_dir}/bin - ${csudo} cp -r ${binary_dir}/build/bin/taosdump ${install_main_dir}/bin - ${csudo} cp -r ${script_dir}/remove.sh ${install_main_dir}/bin + ${csudo} cp -r ${binary_dir}/build/bin/* ${install_main_dir}/bin + ${csudo} cp -r ${script_dir}/remove.sh ${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/taosd ] && ${csudo} ln -s ${install_main_dir}/bin/taosd ${bin_link_dir}/taosd || : - [ -x ${install_main_dir}/bin/taosdemo ] && ${csudo} ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || : - [ -x ${install_main_dir}/bin/taosdump ] && ${csudo} ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || : - [ -x ${install_main_dir}/bin/remove.sh ] && ${csudo} ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/rmtaos || : + [ -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/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 || : } function install_lib() { # Remove links - ${csudo} rm -f ${lib_link_dir}/libtaos.so || : + ${csudo} rm -f ${lib_link_dir}/libtaos.* || : versioninfo=$(${script_dir}/get_version.sh) ${csudo} cp ${binary_dir}/build/lib/libtaos.so.${versioninfo} ${install_main_dir}/driver && ${csudo} chmod 777 ${install_main_dir}/driver/* @@ -152,7 +158,13 @@ function clean_service_on_sysvinit() { fi ${csudo} sed -i "\|${restart_config_str}|d" /etc/inittab || : ${csudo} rm -f ${service_config_dir}/taosd || : - ${csudo} update-rc.d -f taosd remove || : + + if ((${initd_mod}==1)); then + ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} insserv -r taosd || : + elif ((${initd_mod}==2)); then + ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} update-rc.d -f taosd remove || : + fi +# ${csudo} update-rc.d -f taosd remove || : ${csudo} init q || : } @@ -162,12 +174,18 @@ function install_service_on_sysvinit() { sleep 1 # Install taosd service - ${csudo} cp ${script_dir}/../rpm/init.d/taosd ${service_config_dir} && ${csudo} chmod a+x ${service_config_dir}/taosd + ${csudo} cp -f ${script_dir}/../deb/init.d/taosd ${install_main_dir}/init.d + ${csudo} cp ${script_dir}/../deb/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 + if ((${initd_mod}==1)); then + ${csudo} insserv taosd || : + elif ((${initd_mod}==2)); then + ${csudo} update-rc.d taosd defaults || : + fi +# ${csudo} update-rc.d taosd defaults # chkconfig mysqld on } @@ -213,10 +231,13 @@ function install_service_on_systemd() { } function install_service() { - if is_using_systemd; then + if ((${service_mod}==0)); then install_service_on_systemd - elif $(which update-rc.d &> /dev/null); then + elif ((${service_mod}==1)); then install_service_on_sysvinit + else + # must manual start taosd + kill_taosd fi } @@ -224,37 +245,40 @@ function update_TDengine() { echo -e "${GREEN}Start to update TDEngine...${NC}" # Stop the service if running if pidof taosd &> /dev/null; then - if is_using_systemd; then + if ((${service_mod}==0)); then ${csudo} systemctl stop taosd || : - else + elif ((${service_mod}==1)); then ${csudo} service taosd stop || : + else + kill_taosd fi sleep 1 fi - + install_main_path install_log install_header install_lib - install_bin - # install_service - install_config install_connector install_examples + install_bin + install_service + install_config - echo - echo -e "\033[44;32;1mTDengine is updated successfully!${NC}" - echo - echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg" - # if is_using_systemd; then - # echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} systemctl start taosd${NC}" - # else - # 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}" - # fi - - # echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}" + echo + echo -e "\033[44;32;1mTDengine is updated successfully!${NC}" + echo + echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg" + 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} service taosd start${NC}" + else + 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}" echo echo -e "\033[44;32;1mTDengine is updated successfully!${NC}" } @@ -267,26 +291,27 @@ function install_TDengine() { install_data install_log install_header - install_bin install_lib - # install_service - install_config install_connector install_examples + install_bin + install_service + install_config # Ask if to start the service echo echo -e "\033[44;32;1mTDengine is installed successfully!${NC}" echo echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg" - # if is_using_systemd; then - # echo -e "${GREEN_DARK}To start TDengine ${NC}: ${csudo} systemctl start taosd${NC}" - # else - # 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}" - #3 fi - - # echo -e "${GREEN_DARK}To access TDengine ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}" + 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} service taosd start${NC}" + else + 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}" echo echo -e "\033[44;32;1mTDengine is installed successfully!${NC}" } diff --git a/packaging/tools/post.sh b/packaging/tools/post.sh index a143e085320479998f2164420d0ba3cf9aefe5db..7dd64306602ee1c4d28a6622f3f96d7ed37377cf 100755 --- a/packaging/tools/post.sh +++ b/packaging/tools/post.sh @@ -66,7 +66,7 @@ function install_include() { } function install_lib() { - ${csudo} rm -f ${lib_link_dir}/libtaos.so || : + ${csudo} rm -f ${lib_link_dir}/libtaos* || : ${csudo} ln -s ${lib_dir}/libtaos.* ${lib_link_dir}/libtaos.so.1 ${csudo} ln -s ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so diff --git a/packaging/tools/preun.sh b/packaging/tools/preun.sh index b245d7bd833a4d07da267ead9e96e314bf166b7b..4566db1b5afd185c415238f6501277da3638fcdc 100755 --- a/packaging/tools/preun.sh +++ b/packaging/tools/preun.sh @@ -22,18 +22,28 @@ if command -v sudo > /dev/null; then csudo="sudo" fi -function is_using_systemd() { - if pidof systemd &> /dev/null; then - return 0 - else - return 1 - fi -} - -if ! is_using_systemd; then +initd_mod=0 +service_mod=2 +if pidof systemd &> /dev/null; then + service_mod=0 +elif $(which insserv &> /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" +else + service_mod=2 fi + +function kill_taosd() { + pid=$(ps -ef | grep "taosd" | grep -v "grep" | awk '{print $2}') + ${csudo} kill -9 ${pid} || : +} + function clean_service_on_systemd() { taosd_service_config="${service_config_dir}/${taos_service_name}.service" @@ -48,23 +58,29 @@ function clean_service_on_systemd() { function clean_service_on_sysvinit() { restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start" - 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 || : - ${csudo} update-rc.d -f taosd remove || : + + if ((${initd_mod}==1)); then + ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} insserv -r taosd || : + elif ((${initd_mod}==2)); then + ${csudo} grep -q -F "taos" /etc/inittab && ${csudo} update-rc.d -f taosd remove || : + fi +# ${csudo} update-rc.d -f taosd remove || : ${csudo} init q || : } function clean_service() { - if is_using_systemd; then + if ((${service_mod}==0)); then clean_service_on_systemd - else + elif ((${service_mod}==1)); then clean_service_on_sysvinit + else + # must manual start taosd + kill_taosd fi } @@ -83,4 +99,8 @@ ${csudo} rm -f ${lib_link_dir}/libtaos.* || : ${csudo} rm -f ${log_link_dir} || : ${csudo} rm -f ${data_link_dir} || : +if ((${service_mod}==2)); then + kill_taosd +fi + echo -e "${GREEN}TDEngine is removed successfully!${NC}" diff --git a/src/os/linux/src/os.c b/src/os/linux/src/os.c index 41dee256593256a216730c7851ea5f26a6e8e79f..7b6be057c801f6b9be5d48d82b4772514815bd5f 100644 --- a/src/os/linux/src/os.c +++ b/src/os/linux/src/os.c @@ -278,7 +278,7 @@ ssize_t tsendfile(int dfd, int sfd, off_t *offset, size_t size) { ssize_t twrite(int fd, void *buf, size_t n) { size_t nleft = n; ssize_t nwritten = 0; - char *tbuf = (char *)buf + char *tbuf = (char *)buf; while (nleft > 0) { nwritten = write(fd, (void *)tbuf, nleft); diff --git a/src/system/src/dnodeService.c b/src/system/src/dnodeService.c index c3eab50048ace2078a7a938b04a4f804d51c6ce7..8249c51faa658e16347d51e3948f827670ea5b23 100644 --- a/src/system/src/dnodeService.c +++ b/src/system/src/dnodeService.c @@ -67,6 +67,8 @@ int main(int argc, char *argv[]) { } } else if (strcmp(argv[i], "-V") == 0) { printf("%s %s\n", version, compatible_version); + printf("gitinfo: %s\n", gitinfo); + printf("buildinfo: %s\n", buildinfo); return 0; } }