diff --git a/.directory b/.directory new file mode 100644 index 0000000..d44a45e --- /dev/null +++ b/.directory @@ -0,0 +1,8 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2016,5,13,17,57,48 +Version=3 +ViewMode=1 + +[Settings] +HiddenFilesShown=true diff --git a/LBIndex.tar.gz b/LBIndex.tar.gz index f32093f..64e70aa 100755 Binary files a/LBIndex.tar.gz and b/LBIndex.tar.gz differ diff --git a/ez_i.sh b/ez_i.sh index 2ee740c..bac5501 100755 --- a/ez_i.sh +++ b/ez_i.sh @@ -273,8 +273,9 @@ f_pack_is_inst() { Args: PACKAGE_NM_P (str): Nome do pacote. - PACK_MANAG (str): Tipo de gerenciador de pacotes. Apenas yum é - suportado. Em caso diverso o script exibe erro e para. + PACK_MANAG (str): Tipo de gerenciador de pacotes. "yum", + "apt-get" e "zypper" são suportados. Em caso diverso o script + exibe erro e para. EXIST_MSG_P (Optional[str]): Mensagem a ser exibida se o pacote já estiver instalado. Se vazio ou não informado não será exibida mensagem. @@ -309,6 +310,30 @@ f_pack_is_inst() { else F_PACK_IS_INST_R=0 fi + elif [ "$PACK_MANAG" == "apt-get" ] ; then + if dpkg -s "$PACKAGE_NM_P" &> /dev/null; then + if [ ${SKIP_MSG_P} -eq 0 ] && [ ! -z "$EXIST_MSG_P" ] ; then + f_div_section + echo "$EXIST_MSG_P" + f_div_section + f_enter_to_cont + fi + F_PACK_IS_INST_R=1 + else + F_PACK_IS_INST_R=0 + fi + elif [ "$PACK_MANAG" == "zypper" ] ; then + if zypper se -i --match-word "$PACKAGE_NM_P" > /dev/null 2>&1; then + if [ ${SKIP_MSG_P} -eq 0 ] && [ ! -z "$EXIST_MSG_P" ] ; then + f_div_section + echo "$EXIST_MSG_P" + f_div_section + f_enter_to_cont + fi + F_PACK_IS_INST_R=1 + else + F_PACK_IS_INST_R=0 + fi else f_div_section echo "ERROR! Not implemented for \"$PACK_MANAG\"!" @@ -462,6 +487,7 @@ f_is_not_running() { CHK_INVERT=0 fi F_IS_NOT_RUNNING_R=0 + # NOTE: A verificação "grep -v grep" é para que ele não dê positivo # para o próprio comando grep! By Questor F_IS_NOT_RUNNING_R=0 @@ -484,6 +510,7 @@ f_is_not_running() { F_GET_STDERR_R="" F_GET_STDOUT_R="" +F_GET_EXIT_CODE_R=0 f_get_stderr_stdout() { : 'Executar um comando e colocar a saída de stderr e stdout nas variáveis "F_GET_STDERR_R" e "F_GET_STDOUT_R"!. @@ -499,8 +526,9 @@ f_get_stderr_stdout() { CMD_TO_EXEC=$1 F_GET_STDERR_R="" F_GET_STDOUT_R="" - unset t_std t_err - eval "$( eval "$CMD_TO_EXEC" 2> >(t_err=$(cat); typeset -p t_err) > >(t_std=$(cat); typeset -p t_std) )" + unset t_std t_err t_ret + eval "$( eval "$CMD_TO_EXEC" 2> >(t_err=$(cat); typeset -p t_err) > >(t_std=$(cat); typeset -p t_std); t_ret=$?; typeset -p t_ret )" + F_GET_EXIT_CODE_R=$t_ret F_GET_STDERR_R=$t_err F_GET_STDOUT_R=$t_std } @@ -536,7 +564,6 @@ f_ez_mv_bak() { SKIP_MSG_P=1 fi - MK_BAK=1 F_BAK_PATH_R="" F_BAK_NAME_R="" @@ -565,6 +592,8 @@ f_error_exit() { ERROR_CAUSE_P (Optional[str]): Causa do erro. ' + EZ_I_S_ON_HOLDER=$EZ_I_SKIP_ON_V + EZ_I_SKIP_ON_V=0 ERROR_CAUSE_P=$1 echo f_open_section "E R R O R !" @@ -575,9 +604,40 @@ f_error_exit() { echo "$ERROR_MSG_NOW_P" echo f_close_section + EZ_I_SKIP_ON_V=$EZ_I_S_ON_HOLDER exit 1 } +f_warning_msg() { + : '"Printa" uma mensagem de aviso. + + Args: + WARNING_P (str): aviso. + ASK_FOR_CONT_P (Optional[int]): 1 - Checa se o usuário deseja + continuar com a instalação; 0 - Solicita que pressione "enter". + Padrão 0. + ' + + EZ_I_S_ON_HOLDER=$EZ_I_SKIP_ON_V + EZ_I_SKIP_ON_V=0 + WARNING_P=$1 + ASK_FOR_CONT_P=$2 + if [ -z "$ASK_FOR_CONT_P" ] ; then + ASK_FOR_CONT_P=0 + fi + echo + f_open_section "W A R N I N G !" + echo "$WARNING_P" + echo + f_close_section + if [ ${ASK_FOR_CONT_P} -eq 0 ] ; then + f_enter_to_cont + else + f_continue + fi + EZ_I_SKIP_ON_V=$EZ_I_S_ON_HOLDER +} + f_continue() { : 'Questionar ao usuário se deseja continuar ou parar a instalação. @@ -600,8 +660,343 @@ f_continue() { fi } +F_SPLIT_R=() +f_split() { + : 'Faz "split" em uma dada string e devolve um array. -# < -------------------------------------------------------------------------- + Args: + TARGET_P (str): String alvo do "split". + DELIMITER_P (Optional[str]): Delimitador usado no "split". + Se não informado o split vai ser feito por espaços em branco. + + Returns: + F_SPLIT_R (array): Array com a string fornecida separada pelo + delimitador informado. + ' + + F_SPLIT_R=() + TARGET_P=$1 + DELIMITER_P=$2 + if [ -z "$DELIMITER_P" ] ; then + DELIMITER_P=" " + fi + + REMOVE_N=1 + if [ "$DELIMITER_P" == "\n" ] ; then + REMOVE_N=0 + fi + + if [ ${REMOVE_N} -eq 1 ] ; then + + # NOTE: Devido a limitações do bash temos alguns problemas para + # poder obter a saída de um split via awk dentro de um array e + # por isso precisamos do uso da "quebra de linha" (\n) para + # termos sucesso! Visto isso, removemos as quebras de linha + # momentaneamente depois as reintegramos! By Questor + TARGET_P=$(echo "$TARGET_P" | awk 'BEGIN {RS="dn" } {gsub("\n","£§¢¬¨") ;printf $0 }') + fi + + SPLIT_NOW=$(awk -F"$DELIMITER_P" '{for(i=1;i<=NF;i++){printf "%s\n", $i}}' <<<"${TARGET_P}") + + while IFS= read -r LINE_NOW; do + if [ ${REMOVE_N} -eq 1 ] ; then + LN_NOW_WITH_N=$(awk 'BEGIN {RS="dn"} {gsub("£§¢¬¨","\n") ;printf $0 }' <<<"${LINE_NOW}") + F_SPLIT_R+=("$LN_NOW_WITH_N") + else + F_SPLIT_R+=("$LINE_NOW") + fi + done <<< "$SPLIT_NOW" +} + +F_ABOUT_DISTRO_R=() +f_about_distro() { + : 'Obter informações sobre a distro. + + Returns: + F_ABOUT_DISTRO_R (array): Array com informações sobre a + distro na seguinte ordem: NAME, VERSION, BASED e ARCH. + ' + + F_ABOUT_DISTRO_R=() + f_get_stderr_stdout "cat /etc/*-release" + ABOUT_INFO=$F_GET_STDOUT_R + + if [[ $ABOUT_INFO == *"ID=debian"* ]] ; then + f_split "$ABOUT_INFO" "\n" + F_SPLIT_R_0=("${F_SPLIT_R[@]}") + TOTAL_0=${#F_SPLIT_R_0[*]} + for (( i=0; i<=$(( $TOTAL_0 -1 )); i++ )) ; do + f_split "${F_SPLIT_R_0[$i]}" "=" + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + TOTAL_1=${#F_SPLIT_R_1[*]} + for (( o=0; o<=$(( $TOTAL_1 -1 )); o++ )) ; do + p=$[$o+1] + case "${F_SPLIT_R_1[$o]}" in + "NAME") + f_split "${F_SPLIT_R_1[$p]}" "\"" + F_SPLIT_R_2=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_2[1]}") + ;; + "VERSION_ID") + f_split "${F_SPLIT_R_1[$p]}" "\"" + F_SPLIT_R_3=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_3[1]}") + ;; + *) + + ;; + esac + done + done + F_ABOUT_DISTRO_R+=("Debian") + elif [[ $ABOUT_INFO == *"ID=\"sles\""* ]] ; then + f_split "$ABOUT_INFO" "\n" + F_SPLIT_R_0=("${F_SPLIT_R[@]}") + TOTAL_0=${#F_SPLIT_R_0[*]} + for (( i=0; i<=$(( $TOTAL_0 -1 )); i++ )) ; do + f_split "${F_SPLIT_R_0[$i]}" "=" + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + TOTAL_1=${#F_SPLIT_R_1[*]} + for (( o=0; o<=$(( $TOTAL_1 -1 )); o++ )) ; do + p=$[$o+1] + case "${F_SPLIT_R_1[$o]}" in + "NAME") + f_split "${F_SPLIT_R_1[$p]}" "\"" + F_SPLIT_R_2=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_2[1]}") + ;; + "VERSION_ID") + f_split "${F_SPLIT_R_1[$p]}" "\"" + F_SPLIT_R_3=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_3[1]}") + ;; + *) + + ;; + esac + done + done + F_ABOUT_DISTRO_R+=("Suse") + elif [[ $ABOUT_INFO == *"ID=opensuse"* ]] || + [[ $ABOUT_INFO == *"ID_LIKE=\"suse\""* ]] ; then + f_split "$ABOUT_INFO" "\n" + F_SPLIT_R_0=("${F_SPLIT_R[@]}") + TOTAL_0=${#F_SPLIT_R_0[*]} + for (( i=0; i<=$(( $TOTAL_0 -1 )); i++ )) ; do + f_split "${F_SPLIT_R_0[$i]}" "=" + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + TOTAL_1=${#F_SPLIT_R_1[*]} + for (( o=0; o<=$(( $TOTAL_1 -1 )); o++ )) ; do + p=$[$o+1] + case "${F_SPLIT_R_1[$o]}" in + "NAME") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_1[$p]}") + ;; + "VERSION_ID") + f_split "${F_SPLIT_R_1[$p]}" "\"" + F_SPLIT_R_3=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_3[1]}") + ;; + *) + + ;; + esac + done + done + F_ABOUT_DISTRO_R+=("Suse") + elif [[ $ABOUT_INFO == *"DISTRIB_ID=Ubuntu"* ]] || + [[ $ABOUT_INFO == *"ID_LIKE=debian"* ]] ; then + f_split "$ABOUT_INFO" "\n" + F_SPLIT_R_0=("${F_SPLIT_R[@]}") + TOTAL_0=${#F_SPLIT_R_0[*]} + for (( i=0; i<=$(( $TOTAL_0 -1 )); i++ )) ; do + f_split "${F_SPLIT_R_0[$i]}" "=" + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + TOTAL_1=${#F_SPLIT_R_1[*]} + for (( o=0; o<=$(( $TOTAL_1 -1 )); o++ )) ; do + p=$[$o+1] + case "${F_SPLIT_R_1[$o]}" in + "DISTRIB_ID") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_1[$p]}") + ;; + "DISTRIB_RELEASE") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_1[$p]}") + ;; + *) + + ;; + esac + done + done + F_ABOUT_DISTRO_R+=("Debian") + elif [[ $ABOUT_INFO == *"CentOS release "* ]] ; then + f_split "$ABOUT_INFO" "\n" + F_SPLIT_R_0=("${F_SPLIT_R[1]}") + f_split "${F_SPLIT_R_0[0]}" " " + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_1[0]}") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_1[2]}") + F_ABOUT_DISTRO_R+=("RedHat") + elif [[ $ABOUT_INFO == *"Red Hat Enterprise Linux Server release "* ]] ; then + f_split "$ABOUT_INFO" "\n" + F_SPLIT_R_0=("${F_SPLIT_R[1]}") + f_split "${F_SPLIT_R_0[0]}" " " + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + F_ABOUT_DISTRO_R+=("Red Hat Enterprise Linux Server") + F_ABOUT_DISTRO_R+=("${F_SPLIT_R_1[6]}") + F_ABOUT_DISTRO_R+=("RedHat") + else + F_ABOUT_DISTRO_R+=("Unknown") + F_ABOUT_DISTRO_R+=("Unknown") + F_ABOUT_DISTRO_R+=("Unknown") + fi + F_ABOUT_DISTRO_R+=($(arch)) +} + +F_IS_ROOT_R=1 +f_is_root() { + : 'Checar se o usuário é root. + + Args: + CHK_ONLY_P (Optional[int]): 1 - Apenas verifica e retorna o + resultado; 0 - Se não for root emite erro e encerra a execução. + Padrão 0. + + Returns: + F_IS_ROOT_R (int): 1 - É root; 0 - Não é root. + ' + + CHK_ONLY_P=$1 + if [ -z "$CHK_ONLY_P" ] ; then + CHK_ONLY_P=0 + fi + + F_IS_ROOT_R=1 + if [[ $EUID -ne 0 ]]; then + f_enter_to_cont "ERROR! You need to be root!" + F_IS_ROOT_R=0 + if [ ${CHK_ONLY_P} -eq 0 ] ; then + f_error_exit + fi + fi +} + +F_CHK_DISTRO_STATUS_R="" +f_chk_distro_status() { + : 'Verifica se a distro informada está subscrita e/ou registrada + e/ou ativa perante os recursos informados. + + Args: + DISTRO_NAME_P (str): Nome da distro sobre a qual será executada + verificação. + RESOURCES_ARR_P (str): Array com a lista de recursos a serem + verificados na distro alvo. + + Returns: + F_CHK_DISTRO_STATUS_R (str): Possui a saída do comando de + verificação executado. + ' + + F_CHECK_RHEL_R="" + DISTRO_NAME_P=$1 + RESOURCES_ARR_P=("${!2}") + TOTAL_2=${#RESOURCES_ARR_P[*]} + + RES_OK_ARR=() + REDHAT_ACTV=0 + + CHK_RES_CMD="" + if [ "$DISTRO_NAME_P" == "RedHat" ] ; then + CHK_RES_CMD="subscription-manager list --consumed" + f_get_stderr_stdout "$CHK_RES_CMD" + f_split "$F_GET_STDOUT_R" "Subscription Name:" + elif [ "$DISTRO_NAME_P" == "SLES" ] ; then + CHK_RES_CMD="zypper sl" + f_get_stderr_stdout "$CHK_RES_CMD" + f_split "$F_GET_STDOUT_R" "\n" + fi + + F_SPLIT_R_0=("${F_SPLIT_R[@]}") + TOTAL_0=${#F_SPLIT_R_0[*]} + for (( i=0; i<=$(( $TOTAL_0 -1 )); i++ )) ; do + if [[ "$DISTRO_NAME_P" == "RedHat" ]] ; then + f_split "${F_SPLIT_R_0[$i]}" "\n" + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + TOTAL_1=${#F_SPLIT_R_1[*]} + CHK_ACTV=0 + for (( o=0; o<=$(( $TOTAL_1 -1 )); o++ )) ; do + if [[ "${F_SPLIT_R_1[$o]}" == "Provides:"* ]] ; then + CHK_ACTV=1 + fi + if [ ${CHK_ACTV} -eq 1 ] ; then + for (( w=0; w<=$(( $TOTAL_2 -1 )); w++ )) ; do + if [[ "${F_SPLIT_R_1[$o]}" == *"${RESOURCES_ARR_P[$w]}" ]] ; then + RES_OK_ARR+=($w) + break + fi + done + if [ ${REDHAT_ACTV} -eq 0 ] && + [[ "${F_SPLIT_R_1[$o]}" == "Active:"* ]] && + [[ "${F_SPLIT_R_1[$o]}" == *"True" ]] ; then + REDHAT_ACTV=1 + fi + fi + done + elif [[ "$DISTRO_NAME_P" == "SLES" ]] ; then + REDHAT_ACTV=1 + f_split "${F_SPLIT_R_0[$i]}" "|" + F_SPLIT_R_1=("${F_SPLIT_R[@]}") + for (( w=0; w<=$(( $TOTAL_2 -1 )); w++ )) ; do + if [[ "${F_SPLIT_R_1[1]}" == *"${RESOURCES_ARR_P[$w]}"* ]] ; then + if [[ "${F_SPLIT_R_1[3]}" == *"Yes"* ]] ; then + if [[ "${F_SPLIT_R_1[5]}" == *"Yes"* ]] ; then + RES_OK_ARR+=($w) + break + fi + fi + fi + done + fi + done + + WARNINGS_MSGS=() + TOTAL_3=${#RES_OK_ARR[*]} + for (( z=0; z<=$(( $TOTAL_2 -1 )); z++ )) ; do + RES_OK_NOW=1 + for (( t=0; t<=$(( $TOTAL_3 -1 )); t++ )) ; do + if (( ${RES_OK_ARR[$t]} == $z )); then + RES_OK_NOW=0 + break + fi + done + if (( $RES_OK_NOW == 1 )); then + WARNINGS_MSGS+=("$DISTRO_NAME_P does not have access to this resource: \"${RESOURCES_ARR_P[$z]}\".") + fi + done + + TOTAL_4=${#WARNINGS_MSGS[*]} + WAR_MSGS_STR="" + USE_NEWLINE="" + if [ ! $TOTAL_4 -eq 0 ] || [ $REDHAT_ACTV -eq 0 ]; then + WAR_MSGS_STR="SOME PROBLEM APPEAR TO HAVE BEEN DETECTED ON " + if [[ "$DISTRO_NAME_P" == "RedHat" ]] ; then + WAR_MSGS_STR+="REDHAT SUBSCRIPTION!" + elif [[ "$DISTRO_NAME_P" == "SLES" ]] ; then + WAR_MSGS_STR+="SLES REGISTRATION!" + fi + for (( y=0; y<=$(( $TOTAL_4 -1 )); y++ )) ; do + if (( $y == 0 )); then + WAR_MSGS_STR+=$'\n\n' + else + USE_NEWLINE=$'\n' + fi + WAR_MSGS_STR+="$USE_NEWLINE -> ${WARNINGS_MSGS[$y]}" + done + WAR_MSGS_STR+=$'\n\n'"FOR MORE INFORMATION TRY: \"$CHK_RES_CMD\"." + f_warning_msg "$WAR_MSGS_STR" 1 + fi + F_CHK_DISTRO_STATUS_R=$F_GET_STDOUT_R +} # > -------------------------------------------------------------------------- # GRAFICO! diff --git a/install.sh b/install.sh index e4ef3d4..4b2a2f3 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,17 @@ #!/bin/bash +# > ----------------------------------------- +# Run that script with bash even if the user use sh/dash or any sh like +# interpreter. This way it correctly works with either: +# "sh ./my_script.sh" or "bash ./my_script.sh" or "./my_script.sh" + +if [ -z "$BASH_VERSION" ] +then + exec bash "$0" "$@" +fi + +# < ----------------------------------------- + # NOTE: Evita problemas com caminhos relativos! By Questor SCRIPTDIR_V="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" . $SCRIPTDIR_V/ez_i.sh @@ -23,17 +35,27 @@ Have fun! =D EOF read -d '' WARNINGS_F <<"EOF" -- Installer designed for CentOS 6 AMD64/RHEL 6 AMD64! +- This installer is compatible with RHEL, SUSE, Debian or distributions +based on these. - We RECOMMEND you... Install all the components (answer yes to everything). Except contrary guidance! Check for previous installations! If there is previous installations consider this variant in the process! + Although this is not mandatory, do the installation process in an + exclusive machine for this. + +- We NOTICE you... + This installer assumes that the target distribution has a "standard + setup". This may include components such as firewall, SELinux + and others. + - We WARNING you... - USE AT YOUR OWN RISK: WE ARE NOT RESPONSIBLE FOR ANY DAMAGE TO -YOURSELF, HARDWARE, OR CO-WORKERS. EXCEPT IN CASES WHERE THERE ARE -SIGNED CONTRACT THAT REGULATES THIS! + THIS INSTALLER AND RESULTING PRODUCTS COMES WITH ABSOLUTELY NO WARRANTY! + USE AT YOUR OWN RISK! WE ARE NOT RESPONSIBLE FOR ANY DAMAGE TO YOURSELF, + HARDWARE, OR CO-WORKERS. EXCEPT IN CASES WHERE THERE ARE SIGNED CONTRACT + THAT REGULATES THIS! EOF read -d '' COMPANY_F <<"EOF" @@ -53,7 +75,8 @@ WARNINGS_F="" # -------------------------------------- read -d '' TERMS_LICEN_F <<"EOF" -BY USING THIS INSTALLER YOU ARE AGREEING TO THE TERMS OF USE OF ALL INVOLVED SOFTWARE! +BY USING THIS INSTALLER YOU ARE AGREEING TO THE TERMS OF USE OF ALL +INVOLVED SOFTWARE! EOF f_terms_licen "$TERMS_LICEN_F" @@ -61,13 +84,18 @@ TERMS_LICEN_F="" # < -------------------------------------------------------------------------- +# > ----------------------------------------- +# Checar se o usuário é root! + +f_is_root + +# < ----------------------------------------- + # > -------------------------------------------------------------------------- # INTRUÇÕES! # -------------------------------------- read -d '' INSTRUCT_F <<"EOF" -- To run this script YOU NEED to be root! - - TO CANCEL installation at any time use Ctrl+c! EOF @@ -76,6 +104,128 @@ INSTRUCT_F="" # < -------------------------------------------------------------------------- +DISTRO_TYPE="" +DISTRO_NAME="" +# > ----------------------------------------- +# Checar se a distro é compatível! + +f_open_section +f_about_distro +f_div_section +echo "DISTRO INFORMATION:" +f_div_section +echo "NAME: .... ${F_ABOUT_DISTRO_R[0]}" +echo "VERSION: . ${F_ABOUT_DISTRO_R[1]}" +echo "BASED: ... ${F_ABOUT_DISTRO_R[2]}" +echo "ARCH: .... ${F_ABOUT_DISTRO_R[3]}" +f_div_section + +if [[ "${F_ABOUT_DISTRO_R[2]}" == "Debian" ]] || [[ "${F_ABOUT_DISTRO_R[2]}" == "RedHat" ]] || + [[ "${F_ABOUT_DISTRO_R[2]}" == "Suse" ]] ; then + if [[ "${F_ABOUT_DISTRO_R[2]}" == "Debian" ]] ; then + DISTRO_TYPE="DEB" + if [[ "${F_ABOUT_DISTRO_R[0]}" == "Ubuntu" ]] ; then + DISTRO_NAME="Ubuntu" + if [[ "${F_ABOUT_DISTRO_R[1]}" != "14.04" ]] ; then + f_div_section + f_yes_no "Linux version may be incompatible with this installer (expected: 14.04/obtained: ${F_ABOUT_DISTRO_R[1]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + elif [[ "${F_ABOUT_DISTRO_R[0]}" == "Debian GNU/Linux" ]] ; then + DISTRO_NAME="Debian" + if [[ "${F_ABOUT_DISTRO_R[1]}" != "8" ]] ; then + f_div_section + f_yes_no "Linux version may be incompatible with this installer (expected: 8/obtained: ${F_ABOUT_DISTRO_R[1]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + else + f_div_section + f_yes_no "Linux distro may be incompatible with this installer (expected: Ubuntu or Debian/obtained: ${F_ABOUT_DISTRO_R[0]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + elif [[ "${F_ABOUT_DISTRO_R[2]}" == "RedHat" ]] ; then + DISTRO_TYPE="RH" + if [[ "${F_ABOUT_DISTRO_R[0]}" == "Red Hat Enterprise Linux Server" ]] ; then + DISTRO_NAME="RedHat" + if [[ "${F_ABOUT_DISTRO_R[1]}" != "6."* ]] ; then + f_div_section + f_yes_no "Linux version may be incompatible with this installer (expected: 6.X/obtained: ${F_ABOUT_DISTRO_R[1]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + elif [[ "${F_ABOUT_DISTRO_R[0]}" == "CentOS" ]] ; then + DISTRO_NAME="CentOS" + if [[ "${F_ABOUT_DISTRO_R[1]}" != "6."* ]] ; then + f_div_section + f_yes_no "Linux version may be incompatible with this installer (expected: 6.X/obtained: ${F_ABOUT_DISTRO_R[1]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + else + f_div_section + f_yes_no "Linux distro may be incompatible with this installer (expected: CentOS or Red Hat Enterprise Linux Server/obtained: ${F_ABOUT_DISTRO_R[0]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + elif [[ "${F_ABOUT_DISTRO_R[2]}" == "Suse" ]] ; then + DISTRO_TYPE="SUSE" + if [[ "${F_ABOUT_DISTRO_R[0]}" == "openSUSE" ]] ; then + DISTRO_NAME="openSUSE" + if [[ "${F_ABOUT_DISTRO_R[1]}" != "13."* ]] ; then + f_div_section + f_yes_no "Linux version may be incompatible with this installer (expected: 13.X/obtained: ${F_ABOUT_DISTRO_R[1]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + elif [[ "${F_ABOUT_DISTRO_R[0]}" == "SLES" ]] ; then + DISTRO_NAME="SLES" + if [[ "${F_ABOUT_DISTRO_R[1]}" != "12."* ]] ; then + f_div_section + f_yes_no "Linux version may be incompatible with this installer (expected: 12.X/obtained: ${F_ABOUT_DISTRO_R[1]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + else + f_div_section + f_yes_no "Linux distro may be incompatible with this installer (expected: openSUSE or SUSE Linux Enterprise Server/obtained: ${F_ABOUT_DISTRO_R[0]})! Continue?" + f_div_section + if [ ${YES_NO_R} -eq 0 ] ; then + exit 0 + fi + fi + fi + + if [[ "${F_ABOUT_DISTRO_R[3]}" != "x86_64" ]] ; then + f_enter_to_cont "Linux architecture completely incompatible with this installer (expected: x86_64/obtained: ${F_ABOUT_DISTRO_R[3]})!" + exit 0 + fi +else + f_enter_to_cont "Linux distro completely incompatible with this installer (expected: Debian(or based) or RedHat(or based) or SUSE(or based)/obtained: ${F_ABOUT_DISTRO_R[2]})!" + exit 0 +fi +f_close_section + +# < ----------------------------------------- + # > ----------------------------------------- # Dá ao usuário mais avançado a possibilideade de usar o instalador # simplificado! @@ -85,7 +235,7 @@ INSTRUCT_F="" SIMPLE_INST=0 if [ ${SIMPLE_INST} -eq 0 ] ; then f_open_section - f_yes_no "Use simple install (using a default value for most of the options)?" + f_yes_no "Use simple install (use default values for most of the options)?" if [ ${YES_NO_R} -eq 1 ] ; then # NOTE: Essa variável serve apenas para "preservar" o valor @@ -110,77 +260,93 @@ fi # Garantir o encodamento correto para evitar problemas de # compatibilidade! -EZ_I_SKIP_ON_V=$SIMPLE_INST -f_open_section -read -d '' TITLE_F <<"EOF" -Set terminal encode? (recommended for Windows terminal clients) -EOF - -f_yes_no "$TITLE_F" -TITLE_F="" -if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then - export LANG=pt_BR.utf8 +if [ ${SIMPLE_INST} -eq 0 ] ; then + EZ_I_SKIP_ON_V=$SIMPLE_INST + f_open_section + f_yes_no "Set terminal encode? (in some cases recommended for Windows ssh clients)" + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then + export LANG=pt_BR.utf8 + fi + f_close_section fi -f_close_section # < ----------------------------------------- # > ----------------------------------------- # Desabilita o SElinux! -EZ_I_SKIP_ON_V=0 -f_open_section -read -d '' TITLE_F <<"EOF" -Disable SElinux (use "y" if you never did it)? -EOF - -f_yes_no "$TITLE_F" -TITLE_F="" -if [ ${YES_NO_R} -eq 1 ] ; then - setenforce 0 - - # NOTE: As condições abaixo visam evitar que o arquivo seja - # desnecessariamente e erroneamente modificado! By Questor - EZ_I_SKIP_ON_V=$SIMPLE_INST - f_fl_cont_str "# SELINUX=enforcing" "/etc/sysconfig/selinux" "The file \"/etc/sysconfig/selinux\" probably has already been changed! Check it!" +if [[ "$DISTRO_TYPE" == "RH" ]] ; then EZ_I_SKIP_ON_V=0 - if [ ${FL_CONT_STR_R} -eq 0 ] ; then - f_fl_cont_str "SELINUX=disabled" "/etc/sysconfig/selinux" + f_open_section + f_yes_no "Disable SElinux (use "y" if you never did it)?" + if [ ${YES_NO_R} -eq 1 ] ; then + setenforce 0 + + # NOTE: As condições abaixo visam evitar que o arquivo seja + # desnecessariamente e erroneamente modificado! By Questor + EZ_I_SKIP_ON_V=$SIMPLE_INST + f_fl_cont_str "# SELINUX=enforcing" "/etc/sysconfig/selinux" "The file \"/etc/sysconfig/selinux\" probably has already been changed! Check it!" + EZ_I_SKIP_ON_V=0 if [ ${FL_CONT_STR_R} -eq 0 ] ; then - f_ez_sed "SELINUX=enforcing" "# SELINUX=enforcing\nSELINUX=disabled" "/etc/sysconfig/selinux" + f_fl_cont_str "SELINUX=disabled" "/etc/sysconfig/selinux" + if [ ${FL_CONT_STR_R} -eq 0 ] ; then + f_ez_sed "SELINUX=enforcing" "# SELINUX=enforcing\nSELINUX=disabled" "/etc/sysconfig/selinux" + fi fi fi + f_close_section fi -f_close_section # < ----------------------------------------- # > ----------------------------------------- -# Instala os componentes de base usados pelo LBI - LBIndex! +# Atualizar a distro (repositório)! EZ_I_SKIP_ON_V=$SIMPLE_INST -f_open_section -read -d '' TITLE_F <<"EOF" -Install base components? -EOF - -f_yes_no "$TITLE_F" -TITLE_F="" -if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then - f_pack_is_inst "gcc-c++" "yum" "\"gcc-c++\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install gcc-c++ +if [[ "$DISTRO_TYPE" == "RH" ]] ; then + if [[ "$DISTRO_NAME" == "RedHat" ]] ; then + RESOURCES_ARR_P=("Red Hat Enterprise Linux Server") + f_chk_distro_status "$DISTRO_NAME" RESOURCES_ARR_P[@] fi - f_pack_is_inst "postgresql-devel" "yum" "\"postgresql-devel\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install postgresql-devel + f_div_section + f_yes_no "Update your distro? (\"y\" highly recommended)" + f_div_section + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then + yum -y update fi f_pack_is_inst "git" "yum" "\"git\" already installed!" if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then yum -y install git fi +elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_div_section + f_yes_no "Update your distro? (\"y\" highly recommended)" + f_div_section + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then + apt-get -y update + fi + f_pack_is_inst "git" "apt-get" "\"git\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install git + fi +elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + if [[ "$DISTRO_NAME" == "SLES" ]] ; then + RESOURCES_ARR_P=("SUSE_Linux_Enterprise_Server_12_SP1_x86_64" +"SUSE_Linux_Enterprise_Software_Development_Kit_12_SP1_x86_64" +"Web_and_Scripting_Module_12_x86_64") + f_chk_distro_status "SLES" RESOURCES_ARR_P[@] + fi + f_div_section + f_yes_no "Update your distro? (\"y\" highly recommended)" + f_div_section + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then + zypper --non-interactive update + fi + f_pack_is_inst "git-core" "zypper" "\"git-core\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install git-core + fi fi -f_close_section # < ----------------------------------------- @@ -212,24 +378,143 @@ f_close_section # < ----------------------------------------- # > ----------------------------------------- -# Instalar o virtualenv-1.11.6 no python2.6! +# Instalar pacotes que são comuns a determinados componentes! + +F_COM_PKS_INSTALLED=0 +f_common_packs() { + : 'Instalar pacotes que são comuns a determinados componentes.' + + if [ ${F_COM_PKS_INSTALLED} -eq 0 ] ; then + if [[ "$DISTRO_TYPE" == "RH" ]] ; then + f_pack_is_inst "gcc-c++" "yum" "\"gcc-c++\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install gcc-c++ + fi + f_pack_is_inst "autoconf" "yum" "\"autoconf\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install autoconf + fi + f_pack_is_inst "automake" "yum" "\"automake\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install automake + fi + f_pack_is_inst "libtool" "yum" "\"libtool\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install libtool + fi + f_pack_is_inst "zlib-devel" "yum" "\"zlib-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install zlib-devel + fi + f_pack_is_inst "postgresql-devel" "yum" "\"postgresql-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install postgresql-devel + fi + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_pack_is_inst "g++" "apt-get" "\"g++\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install g++ + fi + f_pack_is_inst "autoconf" "apt-get" "\"autoconf\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install autoconf + fi + f_pack_is_inst "make" "apt-get" "\"make\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install make + fi + f_pack_is_inst "libtool" "apt-get" "\"libtool\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libtool + fi + f_pack_is_inst "zlib1g-dev" "apt-get" "\"zlib1g-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install zlib1g-dev + fi + f_pack_is_inst "libpq-dev" "apt-get" "\"libpq-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libpq-dev + fi + elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_pack_is_inst "gcc-c++" "zypper" "\"gcc-c++\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install gcc-c++ + fi + if [[ "$DISTRO_NAME" != "SLES" ]] ; then + f_pack_is_inst "autoconf" "zypper" "\"autoconf\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install autoconf + fi + f_pack_is_inst "automake" "zypper" "\"automake\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install automake + fi + f_pack_is_inst "make" "zypper" "\"make\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install make + fi + f_pack_is_inst "libtool" "zypper" "\"libtool\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libtool + fi + fi + f_pack_is_inst "zlib-devel" "zypper" "\"zlib-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install zlib-devel + fi + f_pack_is_inst "postgresql-devel" "zypper" "\"postgresql-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install postgresql-devel + fi + fi + F_COM_PKS_INSTALLED=1 + fi +} +# > ----------------------------------------- +# Instalar o virtualenv-1.11.6 no python2.X! + +PYTHON_2_X="" +VE_2_X="" +if [[ "$DISTRO_TYPE" == "RH" ]] ; then + PYTHON_2_X="2.6" + VE_2_X="ve26" +elif [[ "$DISTRO_TYPE" == "DEB" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + PYTHON_2_X="2.7" + VE_2_X="ve27" +fi EZ_I_SKIP_ON_V=$SIMPLE_INST f_open_section -read -d '' TITLE_F <<"EOF" -Install virtualenv-1.11.6 on python2.6? -EOF - -f_yes_no "$TITLE_F" -TITLE_F="" +f_yes_no "Install virtualenv-1.11.6 on python$PYTHON_2_X?" if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then - f_chk_by_path_hlp "/usr/bin/virtualenv-2.6" "f" "virtualenv-1.11.6 already installed!" + if [[ "$DISTRO_TYPE" == "RH" ]] ; then + f_chk_by_path_hlp "/usr/bin/virtualenv-$PYTHON_2_X" "f" "virtualenv-1.11.6 already installed!" + elif [[ "$DISTRO_TYPE" == "DEB" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_chk_by_path_hlp "/usr/local/bin/virtualenv-$PYTHON_2_X" "f" "virtualenv-1.11.6 already installed!" + fi + if [[ "$DISTRO_TYPE" == "RH" ]] ; then + f_pack_is_inst "python-setuptools" "yum" "\"python-setuptools\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install python-setuptools + fi + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_pack_is_inst "python-setuptools" "apt-get" "\"python-setuptools\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install python-setuptools + fi + elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_pack_is_inst "python-setuptools" "zypper" "\"python-setuptools\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install python-setuptools + fi + fi if [ ${F_CHK_BY_PATH_HLP_R} -eq 0 ] ; then + f_common_packs cd "$SCRIPTDIR_V" cd ./other-srcs-n-apps tar -zxvf virtualenv-1.11.6.tar.gz cd virtualenv-1.11.6 - python2.6 setup.py install + python$PYTHON_2_X setup.py install cd .. rm -rf virtualenv-1.11.6 fi @@ -239,29 +524,29 @@ f_close_section # < ----------------------------------------- # > ----------------------------------------- -# Criar o ambiente virtual (python2.6)! +# Criar o ambiente virtual (python2.X)! EZ_I_SKIP_ON_V=$SIMPLE_INST f_open_section -f_enter_to_cont "Create the virtual environment (python2.6)!" - -f_chk_by_path_hlp "$BASE_INST_DIR_V/ve26" "d" "Virtual environment (python2.6) already created in \"$BASE_INST_DIR_V/ve26\"!" +f_enter_to_cont "Create the virtual environment (python$PYTHON_2_X)!" +f_chk_by_path_hlp "$BASE_INST_DIR_V/$VE_2_X" "d" "Virtual environment (python$PYTHON_2_X) already created in \"$BASE_INST_DIR_V/$VE_2_X\"!" if [ ${F_CHK_BY_PATH_HLP_R} -eq 0 ] ; then + f_common_packs cd "$BASE_INST_DIR_V" - virtualenv-2.6 ve26 - mkdir "$BASE_INST_DIR_V/ve26/src" - f_enter_to_cont "Virtual environment created in \"$BASE_INST_DIR_V/ve26\"!" + virtualenv-$PYTHON_2_X $VE_2_X + mkdir "$BASE_INST_DIR_V/$VE_2_X/src" + f_enter_to_cont "Virtual environment created in \"$BASE_INST_DIR_V/$VE_2_X\"!" fi f_close_section # < ----------------------------------------- # > ----------------------------------------- -# Instalar as dependências python2.6 da LIB - liblightbase! +# Instalar as dependências python2.X da LIB - liblightbase! EZ_I_SKIP_ON_V=$SIMPLE_INST cd "$SCRIPTDIR_V" -sh py-packs-liblightbase.sh "$EZ_I_SKIP_ON_V" "$BASE_INST_DIR_V" +bash py-packs-liblightbase.sh "$EZ_I_SKIP_ON_V" "$BASE_INST_DIR_V" "$PYTHON_2_X" "$VE_2_X" # < ----------------------------------------- @@ -277,17 +562,17 @@ EOF f_yes_no "$TITLE_F" TITLE_F="" if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then - f_chk_by_path_hlp "$BASE_INST_DIR_V/ve26/src/liblightbase" "d" "\"liblightbase\" already installed in \"$BASE_INST_DIR_V/ve26/src\"!" + f_chk_by_path_hlp "$BASE_INST_DIR_V/$VE_2_X/src/liblightbase" "d" "\"liblightbase\" already installed in \"$BASE_INST_DIR_V/$VE_2_X/src\"!" F_BAK_MD_R=1 if [ ${F_CHK_BY_PATH_HLP_R} -eq 1 ] ; then - f_ez_mv_bak "$BASE_INST_DIR_V/ve26/src/liblightbase" "Backup old version and update? (\"y\" recommended)" + f_ez_mv_bak "$BASE_INST_DIR_V/$VE_2_X/src/liblightbase" "Backup old version and update? (\"y\" recommended)" fi if [ ${F_BAK_MD_R} -eq 1 ] ; then cd "$SCRIPTDIR_V" tar -zxvf liblightbase.tar.gz - mv "$SCRIPTDIR_V/liblightbase" "$BASE_INST_DIR_V/ve26/src/" - cd "$BASE_INST_DIR_V/ve26/src/liblightbase" - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + mv "$SCRIPTDIR_V/liblightbase" "$BASE_INST_DIR_V/$VE_2_X/src/" + cd "$BASE_INST_DIR_V/$VE_2_X/src/liblightbase" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" fi fi f_close_section @@ -299,7 +584,7 @@ f_close_section EZ_I_SKIP_ON_V=$SIMPLE_INST cd "$SCRIPTDIR_V" -sh py-packs-LBIndex.sh "$EZ_I_SKIP_ON_V" "$BASE_INST_DIR_V" +bash py-packs-LBIndex.sh "$EZ_I_SKIP_ON_V" "$BASE_INST_DIR_V" "$PYTHON_2_X" "$VE_2_X" # < ----------------------------------------- @@ -309,38 +594,47 @@ HTTP_PORT_F=6543 EZ_I_SKIP_ON_V=$SIMPLE_INST f_open_section -read -d '' TITLE_F <<"EOF" -Install the LBI - LBIndex? -EOF - -f_yes_no "$TITLE_F" -TITLE_F="" +f_yes_no "Install the LBI - LBIndex?" if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then - f_chk_by_path_hlp "$BASE_INST_DIR_V/ve26/src/LBIndex" "d" "\"LBIndex\" already installed in \"$BASE_INST_DIR_V/ve26/src\"!" + f_chk_by_path_hlp "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex" "d" "\"LBIndex\" already installed in \"$BASE_INST_DIR_V/$VE_2_X/src\"!" F_BAK_MD_R=1 if [ ${F_CHK_BY_PATH_HLP_R} -eq 1 ] ; then - f_ez_mv_bak "$BASE_INST_DIR_V/ve26/src/LBIndex" "Backup old version and update? (\"y\" recommended)" + f_ez_mv_bak "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex" "Backup old version and update? (\"y\" recommended)" fi if [ ${F_BAK_MD_R} -eq 1 ] ; then cd "$SCRIPTDIR_V" tar -zxvf LBIndex.tar.gz - mv "$SCRIPTDIR_V/LBIndex" "$BASE_INST_DIR_V/ve26/src/" - cd "$BASE_INST_DIR_V/ve26/src/LBIndex" - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + mv "$SCRIPTDIR_V/LBIndex" "$BASE_INST_DIR_V/$VE_2_X/src/" + cd "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" f_enter_to_cont "Configure LBI - LBIndex!" - \cp "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindex-dist" "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindex-prov" - f_ez_sed "" "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindexmg" "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindex-prov" + \cp "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindex-dist" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindex-prov" + + if [[ "$DISTRO_TYPE" == "RH" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_ez_sed "" "# chkconfig: 2345 99 01\n# description: Esquema de inicialização do LBIndex\n# processname: lbindex" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindex-prov" + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_ez_sed "" "### BEGIN INIT INFO\n# Provides: lbindex\n# Required-Start: \$remote_fs \$syslog\n# Required-Stop: \$remote_fs \$syslog\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Short-Description: Start daemon at boot time\n# Description: Enable service provided by daemon.\n### END INIT INFO" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindex-prov" + fi + + f_ez_sed "" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindexmg" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindex-prov" rm -rf "/etc/init.d/lbindex" - mv "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindex-prov" "/etc/init.d/lbindex" + mv "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindex-prov" "/etc/init.d/lbindex" chmod 755 -R /etc/init.d/ cd /etc/init.d/ - chkconfig --level 2345 lbindex on - \cp "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindexmg-dist" "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindexmg" - f_ez_sed "" "$BASE_INST_DIR_V/ve26" "$BASE_INST_DIR_V/ve26/src/LBIndex/lbindexmg" + if [[ "$DISTRO_TYPE" == "RH" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + chkconfig --level 2345 lbindex on + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + update-rc.d -f lbindex remove + update-rc.d lbindex defaults + chmod +x ./lbindex + fi + + \cp "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindexmg-dist" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindexmg" + f_ez_sed "" "$BASE_INST_DIR_V/$VE_2_X" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/lbindexmg" LBG_URL_F="http://127.0.0.1/lbg" QUESTION_F="Enter the LBG - LBGenerator URL. @@ -353,7 +647,7 @@ Use empty for \"$LBG_URL_F\" (LOCALHOST)!" fi QUESTION_F="Enter the port number for http service. -Use empty for \"6543\" (recommended)!" +Use empty for \"$HTTP_PORT_F\" (recommended)!" f_get_usr_input "$QUESTION_F" 1 QUESTION_F="" @@ -361,9 +655,9 @@ Use empty for \"6543\" (recommended)!" HTTP_PORT_F=$GET_USR_INPUT_R fi - \cp "$BASE_INST_DIR_V/ve26/src/LBIndex/production.ini-dist" "$BASE_INST_DIR_V/ve26/src/LBIndex/production.ini" - f_ez_sed "" "$HTTP_PORT_F" "$BASE_INST_DIR_V/ve26/src/LBIndex/production.ini" - f_ez_sed "" "$LBG_URL_F" "$BASE_INST_DIR_V/ve26/src/LBIndex/production.ini" + \cp "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/production.ini-dist" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/production.ini" + f_ez_sed "" "$HTTP_PORT_F" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/production.ini" + f_ez_sed "" "$LBG_URL_F" "$BASE_INST_DIR_V/$VE_2_X/src/LBIndex/production.ini" service lbindex restart fi @@ -375,21 +669,33 @@ f_close_section # > ----------------------------------------- # Abrir o firewall para o http service! -EZ_I_SKIP_ON_V=0 -f_open_section -TITLE_F="Open firewall for http service (TCP $HTTP_PORT_F)?" - -f_yes_no "$TITLE_F" -TITLE_F="" -if [ ${YES_NO_R} -eq 1 ]; then - f_chk_iptables ${HTTP_PORT_F} "Port $HTTP_PORT_F is already open!" 0 "ACCEPT" "tcp" "NEW" - if [ ${F_CHK_IPTABLES_R} -eq 1 ] ; then - iptables -I INPUT 6 -p tcp -m state --state NEW -m tcp --dport ${HTTP_PORT_F} -j ACCEPT - service iptables save - service iptables restart +if [[ "$DISTRO_TYPE" == "RH" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + EZ_I_SKIP_ON_V=$SIMPLE_INST + f_open_section + if [[ "$DISTRO_TYPE" == "RH" ]] ; then + f_yes_no "Open firewall for http service (TCP $HTTP_PORT_F)?" + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then + f_chk_iptables ${HTTP_PORT_F} "Port $HTTP_PORT_F is already open!" 0 "ACCEPT" "tcp" "NEW" + if [ ${F_CHK_IPTABLES_R} -eq 1 ] ; then + iptables -I INPUT 6 -p tcp -m state --state NEW -m tcp --dport ${HTTP_PORT_F} -j ACCEPT + service iptables save + service iptables restart + fi + fi + f_close_section + elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_yes_no "Open firewall for http service (TCP $HTTP_PORT_F)?" + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then + f_chk_iptables ${HTTP_PORT_F} "Port $HTTP_PORT_F is already open!" 0 "ACCEPT" "tcp" + if [ ${F_CHK_IPTABLES_R} -eq 1 ] ; then + SuSEfirewall2 open EXT TCP ${HTTP_PORT_F} + SuSEfirewall2 stop + SuSEfirewall2 start + fi + fi fi + f_close_section fi -f_close_section # < ----------------------------------------- @@ -403,7 +709,7 @@ Installer finished! Thanks! EOF USEFUL_INFO_F="To configure... - vi $BASE_INST_DIR_V/ve26/src/LBIndex/production.ini + vi $BASE_INST_DIR_V/$VE_2_X/src/LBIndex/production.ini To start/stop... service lbindex start diff --git a/py-packs-LBIndex.sh b/py-packs-LBIndex.sh index a3598e9..606cb3e 100755 --- a/py-packs-LBIndex.sh +++ b/py-packs-LBIndex.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Instalação das dependências do LBI - LBIndex no python2.6! +# Instalação das dependências do LBI - LBIndex no python2.X! . ./ez_i.sh @@ -10,7 +10,6 @@ if [ -z "$SKIP_ON_V" ] ; then fi BASE_INST_DIR_V=$2 - # > ----------------------------------------- # Informar o diretório base da instalação! @@ -31,165 +30,175 @@ fi # < ----------------------------------------- +PYTHON_2_X=$3 +if [ -z "$PYTHON_2_X" ] ; then + PYTHON_2_X="2.6" +fi + +VE_2_X=$4 +if [ -z "$VE_2_X" ] ; then + VE_2_X="ve26" +fi + f_open_section -TITLE_F="Install LBI - LBIndex dependencies for python2.6?" +TITLE_F="Install LBI - LBIndex dependencies for python$PYTHON_2_X?" f_yes_no "$TITLE_F" TITLE_F="" -if [ ${YES_NO_R} -eq 1 ] || [ ${SKIP_ON_V} -eq 1 ] ; then +if [ ${SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then cd "$SCRIPTDIR_V" cd ./py-packs-LBIndex tar -zxvf ./argparse-1.3.0.tar.gz cd ./argparse-1.3.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./argparse-1.3.0 tar -zxvf ./ordereddict-1.1.tar.gz cd ./ordereddict-1.1 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./ordereddict-1.1 tar -zxvf ./pbr-0.10.0.tar.gz cd ./pbr-0.10.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./pbr-0.10.0 tar -zxvf ./linecache2-1.0.0.tar.gz cd ./linecache2-1.0.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./linecache2-1.0.0 tar -zxvf ./configparser-3.3.0r2.tar.gz cd ./configparser-3.3.0r2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./configparser-3.3.0r2 tar -zxvf ./traceback2-1.4.0.tar.gz cd ./traceback2-1.4.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./traceback2-1.4.0 tar -zxvf ./unittest2-1.0.1.tar.gz cd ./unittest2-1.0.1 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./unittest2-1.0.1 tar -zxvf ./urllib3-1.10.4.tar.gz cd ./urllib3-1.10.4 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./urllib3-1.10.4 tar -zxvf ./elasticsearch-1.4.0.tar.gz cd ./elasticsearch-1.4.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./elasticsearch-1.4.0 tar -zxvf ./simplejson-3.5.3.tar.gz cd ./simplejson-3.5.3 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./simplejson-3.5.3 tar -zxvf ./certifi-2015.11.20.1.tar.gz cd ./certifi-2015.11.20.1 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./certifi-2015.11.20.1 tar -zxvf ./pyelasticsearch-1.4.tar.gz cd ./pyelasticsearch-1.4 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./pyelasticsearch-1.4 tar -zxvf ./requests-2.3.0.tar.gz cd ./requests-2.3.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./requests-2.3.0 tar -zxvf ./six-1.7.2.tar.gz cd ./six-1.7.2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./six-1.7.2 tar -zxvf ./PasteDeploy-1.5.2.tar.gz cd ./PasteDeploy-1.5.2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./PasteDeploy-1.5.2 tar -zxvf ./venusian-1.0.tar.gz cd ./venusian-1.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./venusian-1.0 tar -zxvf ./translationstring-1.3.tar.gz cd ./translationstring-1.3 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./translationstring-1.3 tar -zxvf ./zope.deprecation-4.1.2.tar.gz cd ./zope.deprecation-4.1.2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./zope.deprecation-4.1.2 tar -zxvf ./zope.interface-4.1.3.tar.gz cd ./zope.interface-4.1.3 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./zope.interface-4.1.3 tar -zxvf ./repoze.lru-0.6.tar.gz cd ./repoze.lru-0.6 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./repoze.lru-0.6 tar -zxvf ./WebOb-1.5.1.tar.gz cd ./WebOb-1.5.1 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./WebOb-1.5.1 tar -zxvf ./pyramid-1.6b2.tar.gz cd ./pyramid-1.6b2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./pyramid-1.6b2 tar -zxvf ./Chameleon-2.24.tar.gz cd ./Chameleon-2.24 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./Chameleon-2.24 tar -zxvf ./pyramid_chameleon-0.3.tar.gz cd ./pyramid_chameleon-0.3 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./pyramid_chameleon-0.3 tar -zxvf ./waitress-0.8.10.tar.gz cd ./waitress-0.8.10 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./waitress-0.8.10 diff --git a/py-packs-liblightbase.sh b/py-packs-liblightbase.sh index 0091ae4..d9594dd 100755 --- a/py-packs-liblightbase.sh +++ b/py-packs-liblightbase.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Instalação das dependências da LIB - liblightbase no python2.6! +# Instalação das dependências da LIB - liblightbase no python2.X! . ./ez_i.sh @@ -10,7 +10,6 @@ if [ -z "$SKIP_ON_V" ] ; then fi BASE_INST_DIR_V=$2 - # > ----------------------------------------- # Informar o diretório base da instalação! @@ -31,9 +30,19 @@ fi # < ----------------------------------------- +PYTHON_2_X=$3 +if [ -z "$PYTHON_2_X" ] ; then + PYTHON_2_X="2.6" +fi + +VE_2_X=$4 +if [ -z "$VE_2_X" ] ; then + VE_2_X="ve26" +fi + f_open_section -TITLE_F="Install liblightbase dependencies for python2.6?" +TITLE_F="Install liblightbase dependencies for python$PYTHON_2_X?" f_yes_no "$TITLE_F" TITLE_F="" @@ -45,43 +54,43 @@ if [ ${YES_NO_R} -eq 1 ] || [ ${SKIP_ON_V} -eq 1 ] ; then tar -zxvf ./decorator-3.4.0.tar.gz cd ./decorator-3.4.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./decorator-3.4.0 tar -zxvf ./six-1.7.2.tar.gz cd ./six-1.7.2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./six-1.7.2 tar -zxvf ./ply-3.4.tar.gz cd ./ply-3.4 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./ply-3.4 tar -zxvf ./jsonpath-rw-1.3.0.tar.gz cd ./jsonpath-rw-1.3.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./jsonpath-rw-1.3.0 tar -zxvf ./python-dateutil-2.2.tar.gz cd ./python-dateutil-2.2 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./python-dateutil-2.2 tar -zxvf ./requests-2.3.0.tar.gz cd ./requests-2.3.0 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./requests-2.3.0 tar -zxvf ./voluptuous-0.8.7.tar.gz cd ./voluptuous-0.8.7 - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" cd .. rm -rf ./voluptuous-0.8.7 -- libgit2 0.21.2