From e7abd33dd54c65d36711f281d5ebcdbc3b9fe1a4 Mon Sep 17 00:00:00 2001 From: eduardolucioac Date: Fri, 13 May 2016 18:01:15 -0300 Subject: [PATCH] Correção de vários bugs! Agora instalável no RedHat 6.X (ou baseado/CentOS 6.X), Debian 8 (ou baseado/Ubuntu Server 14.X) e SUSE 12.X (ou baseado/openSUSE 13.X)! By Questor --- .directory | 8 ++++++++ LBConverter.tar.gz | Bin 61981086 -> 0 bytes ez_i.sh | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ install.sh | 668 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------- py-packs-LBConverter.sh | 61 +++++++++++++++++++++++++++++++++++-------------------------- 5 files changed, 981 insertions(+), 163 deletions(-) create mode 100644 .directory mode change 100755 => 100644 LBConverter.tar.gz diff --git a/.directory b/.directory new file mode 100644 index 0000000..bf9c3c3 --- /dev/null +++ b/.directory @@ -0,0 +1,8 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2016,5,13,18,0,28 +Version=3 +ViewMode=1 + +[Settings] +HiddenFilesShown=true diff --git a/LBConverter.tar.gz b/LBConverter.tar.gz old mode 100755 new mode 100644 index a2177ad..67cefed Binary files a/LBConverter.tar.gz and b/LBConverter.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 52a550f..c38d101 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 @@ -24,17 +36,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" @@ -54,7 +76,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" @@ -62,13 +85,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 @@ -77,6 +105,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! @@ -86,7 +236,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 @@ -111,48 +261,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 + +# < ----------------------------------------- + +# > ----------------------------------------- +# Atualizar a distro (repositório)! + +EZ_I_SKIP_ON_V=$SIMPLE_INST +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_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 # < ----------------------------------------- @@ -184,24 +379,133 @@ 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 + 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 + 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 + 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 @@ -211,18 +515,18 @@ 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 @@ -233,12 +537,19 @@ f_close_section EZ_I_SKIP_ON_V=$SIMPLE_INST f_open_section -f_yes_no "Install catdoc, unzip and ImageMagick?" -TITLE_F="" +INST_CATDOC_UNZIP_IMAGMAG="" +if [[ "$DISTRO_TYPE" == "RH" ]] ; then + INST_CATDOC_UNZIP_IMAGMAG="Install catdoc, unzip and ImageMagick?" +elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + INST_CATDOC_UNZIP_IMAGMAG="Install catdoc, unzip and ImageMagick?" +elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + INST_CATDOC_UNZIP_IMAGMAG="Install catdoc and ImageMagick?" +fi +f_yes_no "$INST_CATDOC_UNZIP_IMAGMAG" if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then UP_CATDOC=1 - f_chk_by_path_hlp "$BASE_INST_DIR_V/ve26/lib/catdoc-0.94.2" "d" "catdoc-0.94.2 already installed in \"$BASE_INST_DIR_V/ve26/lib/catdoc-0.94.2\"!" + f_chk_by_path_hlp "$BASE_INST_DIR_V/$VE_2_X/lib/catdoc-0.94.2" "d" "catdoc-0.94.2 already installed in \"$BASE_INST_DIR_V/$VE_2_X/lib/catdoc-0.94.2\"!" if [ ${F_CHK_BY_PATH_HLP_R} -eq 1 ] ; then if [ ${EZ_I_SKIP_ON_V} -eq 0 ] ; then f_div_section @@ -246,30 +557,43 @@ if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then f_div_section UP_CATDOC=$YES_NO_R if [ ${UP_CATDOC} -eq 1 ] ; then - rm -rf "$BASE_INST_DIR_V/ve26/lib/catdoc-0.94.2" + rm -rf "$BASE_INST_DIR_V/$VE_2_X/lib/catdoc-0.94.2" fi fi fi if [ ${UP_CATDOC} -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++ - fi - f_pack_is_inst "unzip" "yum" "\"unzip\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install unzip - fi - f_pack_is_inst "ImageMagick" "yum" "\"ImageMagick\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install ImageMagick + if [[ "$DISTRO_TYPE" == "RH" ]] ; then + f_common_packs + f_pack_is_inst "unzip" "yum" "\"unzip\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install unzip + fi + f_pack_is_inst "ImageMagick" "yum" "\"ImageMagick\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install ImageMagick + fi + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_common_packs + f_pack_is_inst "unzip" "apt-get" "\"unzip\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install unzip + fi + f_pack_is_inst "imagemagick" "apt-get" "\"imagemagick\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install imagemagick + fi + elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_common_packs + f_pack_is_inst "ImageMagick" "zypper" "\"ImageMagick\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install ImageMagick + fi fi - cd "$SCRIPTDIR_V" cd ./other-srcs-n-apps tar -zxvf catdoc-0.94.2.tar.gz - mv ./catdoc-0.94.2 $BASE_INST_DIR_V/ve26/lib - cd $BASE_INST_DIR_V/ve26/lib/catdoc-0.94.2 + mv ./catdoc-0.94.2 $BASE_INST_DIR_V/$VE_2_X/lib + cd $BASE_INST_DIR_V/$VE_2_X/lib/catdoc-0.94.2 ./configure make && make install fi @@ -284,7 +608,6 @@ f_close_section EZ_I_SKIP_ON_V=$SIMPLE_INST f_open_section f_yes_no "Install tesseract-ocr-3.02.02?" -TITLE_F="" if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then UP_TESSERACT_OCR=1 @@ -298,29 +621,88 @@ if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then fi fi if [ ${UP_TESSERACT_OCR} -eq 1 ] ; then - f_pack_is_inst "libpng-devel" "yum" "\"libpng-devel\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install libpng-devel - fi - f_pack_is_inst "libjpeg-turbo-devel" "yum" "\"libjpeg-devel\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install libjpeg-devel - fi - f_pack_is_inst "libtiff-devel" "yum" "\"libtiff-devel\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install libtiff-devel - 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 "automake" "yum" "\"automake\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install automake - fi - f_pack_is_inst "autoconf" "yum" "\"autoconf\" already installed!" - if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then - yum -y install autoconf + if [[ "$DISTRO_TYPE" == "RH" ]] ; then + f_common_packs + f_pack_is_inst "libpng12-devel" "yum" "\"libpng12-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install libpng-devel + fi + f_pack_is_inst "libjpeg-turbo-devel" "yum" "\"libjpeg-turbo-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install libjpeg-turbo-devel + fi + f_pack_is_inst "libtiff-devel" "yum" "\"libtiff-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install libtiff-devel + fi + f_pack_is_inst "openjpeg-libs" "yum" "\"openjpeg-libs\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install openjpeg-libs + fi + f_pack_is_inst "giflib" "yum" "\"giflib\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + yum -y install giflib + fi + + # NOTE: Esse pacote só existe no CentOS 7! By Questor + # f_pack_is_inst "libwebp-devel" "yum" "\"libwebp-devel\" already installed!" + # if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + # yum -y install libwebp-devel + # fi + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_common_packs + f_pack_is_inst "libpng-dev" "apt-get" "\"libpng-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libpng-dev + fi + f_pack_is_inst "libjpeg-dev" "apt-get" "\"libjpeg-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libjpeg-dev + fi + f_pack_is_inst "libtiff-dev" "apt-get" "\"libtiff-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libtiff-dev + fi + f_pack_is_inst "libopenjpeg2" "apt-get" "\"libopenjpeg2\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libopenjpeg2 + fi + f_pack_is_inst "libgif-dev" "apt-get" "\"libgif-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libgif-dev + fi + f_pack_is_inst "libwebp-dev" "apt-get" "\"libwebp-dev\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + apt-get -y install libwebp-dev + fi + elif [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_common_packs + f_pack_is_inst "libpng-devel" "zypper" "\"libpng-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libpng-devel + fi + f_pack_is_inst "libjpeg-devel" "zypper" "\"libjpeg-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libjpeg-devel + fi + f_pack_is_inst "libtiff-devel" "zypper" "\"libtiff-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libtiff-devel + fi + if [[ "$DISTRO_NAME" != "SLES" ]] ; then + f_pack_is_inst "libopenjp2-7" "zypper" "\"libopenjp2-7\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libopenjp2-7 + fi + fi + f_pack_is_inst "libgif6" "zypper" "\"libgif6\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libgif6 + fi + f_pack_is_inst "libwebp-devel" "zypper" "\"libwebp-devel\" already installed!" + if [ ${F_PACK_IS_INST_R} -eq 0 ] ; then + zypper --non-interactive install libwebp-devel + fi fi cd "$SCRIPTDIR_V" @@ -329,8 +711,9 @@ if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then tar -zxvf leptonica-1.71.tar.gz mv ./leptonica-1.71 /usr/local/lib cd /usr/local/lib/leptonica-1.71 + ./autobuild ./configure - make && make install + make -j 4 && make install cd "$SCRIPTDIR_V" cd ./other-srcs-n-apps @@ -340,7 +723,7 @@ if [ ${EZ_I_SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then cd /usr/local/lib/tesseract-ocr ./autogen.sh ./configure - make & make install + make -j 4 && make install ldconfig cd "$SCRIPTDIR_V" @@ -359,11 +742,11 @@ f_close_section # < ----------------------------------------- # > ----------------------------------------- -# Instalar as dependências python2.6 da LBC - LBConverter! +# Instalar as dependências python2.X da LBC - LBConverter! EZ_I_SKIP_ON_V=$SIMPLE_INST cd "$SCRIPTDIR_V" -sh py-packs-LBConverter.sh "$EZ_I_SKIP_ON_V" "$BASE_INST_DIR_V" +bash py-packs-LBConverter.sh "$EZ_I_SKIP_ON_V" "$BASE_INST_DIR_V" "$PYTHON_2_X" "$VE_2_X" # < ----------------------------------------- @@ -374,34 +757,45 @@ HTTP_PORT_F=6544 EZ_I_SKIP_ON_V=$SIMPLE_INST f_open_section f_yes_no "Install the LBC - LBConverter?" -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/LBConverter" "d" "\"LBConverter\" already installed in \"$BASE_INST_DIR_V/ve26/src\"!" + f_chk_by_path_hlp "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter" "d" "\"LBConverter\" 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/LBConverter" "Backup old version and update? (\"y\" recommended)" + f_ez_mv_bak "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter" "Backup old version and update? (\"y\" recommended)" fi if [ ${F_BAK_MD_R} -eq 1 ] ; then - cd "$SCRIPTDIR_V" tar -zxvf LBConverter.tar.gz - mv "$SCRIPTDIR_V/LBConverter" "$BASE_INST_DIR_V/ve26/src/" - cd "$BASE_INST_DIR_V/ve26/src/LBConverter" - eval "$BASE_INST_DIR_V/ve26/bin/python2.6 setup.py install" + mv "$SCRIPTDIR_V/LBConverter" "$BASE_INST_DIR_V/$VE_2_X/src/" + cd "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter" + eval "$BASE_INST_DIR_V/$VE_2_X/bin/python$PYTHON_2_X setup.py install" f_enter_to_cont "Configure LBC - LBConverter!" - \cp "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconverter-dist" "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconverter-prov" - f_ez_sed "" "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconvertermg" "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconverter-prov" + \cp "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconverter-dist" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconverter-prov" + + if [[ "$DISTRO_TYPE" == "RH" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + f_ez_sed "" "# chkconfig: 2345 99 01\n# description: Esquema de inicialização do LBConverter\n# processname: lbconverter" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconverter-prov" + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + f_ez_sed "" "### BEGIN INIT INFO\n# Provides: lbconverter\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/LBConverter/lbconverter-prov" + fi + + f_ez_sed "" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconvertermg" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconverter-prov" rm -rf "/etc/init.d/lbconverter" - mv "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconverter-prov" "/etc/init.d/lbconverter" + mv "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconverter-prov" "/etc/init.d/lbconverter" chmod 755 -R /etc/init.d/ cd /etc/init.d/ - chkconfig --level 2345 lbconverter on - \cp "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconvertermg-dist" "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconvertermg" - f_ez_sed "" "$BASE_INST_DIR_V/ve26" "$BASE_INST_DIR_V/ve26/src/LBConverter/lbconvertermg" + if [[ "$DISTRO_TYPE" == "RH" ]] || [[ "$DISTRO_TYPE" == "SUSE" ]] ; then + chkconfig --level 2345 lbconverter on + elif [[ "$DISTRO_TYPE" == "DEB" ]] ; then + update-rc.d -f lbconverter remove + update-rc.d lbconverter defaults + fi + + \cp "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconvertermg-dist" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconvertermg" + f_ez_sed "" "$BASE_INST_DIR_V/$VE_2_X" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/lbconvertermg" LBG_URL_F="http://127.0.0.1/lbg" QUESTION_F="Enter the LBG - LBGenerator URL. @@ -422,9 +816,9 @@ Use empty for \"$HTTP_PORT_F\" (recommended)!" HTTP_PORT_F=$GET_USR_INPUT_R fi - \cp "$BASE_INST_DIR_V/ve26/src/LBConverter/production.ini-dist" "$BASE_INST_DIR_V/ve26/src/LBConverter/production.ini" - f_ez_sed "" "$HTTP_PORT_F" "$BASE_INST_DIR_V/ve26/src/LBConverter/production.ini" - f_ez_sed "" "$LBG_URL_F" "$BASE_INST_DIR_V/ve26/src/LBConverter/production.ini" + \cp "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/production.ini-dist" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/production.ini" + f_ez_sed "" "$HTTP_PORT_F" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/production.ini" + f_ez_sed "" "$LBG_URL_F" "$BASE_INST_DIR_V/$VE_2_X/src/LBConverter/production.ini" service lbconverter restart fi @@ -436,21 +830,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 # < ----------------------------------------- @@ -464,7 +870,7 @@ Installer finished! Thanks! EOF USEFUL_INFO_F="To configure... - vi $BASE_INST_DIR_V/ve26/src/LBConverter/production.ini + vi $BASE_INST_DIR_V/$VE_2_X/src/LBConverter/production.ini To start/stop... service lbconverter start diff --git a/py-packs-LBConverter.sh b/py-packs-LBConverter.sh index 8cef331..16bc77d 100755 --- a/py-packs-LBConverter.sh +++ b/py-packs-LBConverter.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Instalação das dependências do LBC - LBConverter no python2.6! +# Instalação das dependências do LBC - LBConverter 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 LBC - LBConverter dependencies for python2.6?" +TITLE_F="Install LBC - LBConverter dependencies for python$PYTHON_2_X?" f_yes_no "$TITLE_F" TITLE_F="" @@ -45,139 +54,139 @@ if [ ${SKIP_ON_V} -eq 1 ] || [ ${YES_NO_R} -eq 1 ] ; then 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 ./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 ./pdfminer-20140328.tar.gz cd ./pdfminer-20140328 - 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 ./pdfminer-20140328 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 ./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 ./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 ./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 ./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 ./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 ./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 ./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 tar -zxvf ./xlrd-0.9.4.tar.gz cd ./xlrd-0.9.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 ./xlrd-0.9.4 tar -zxvf ./BeautifulSoup-3.2.1.tar.gz cd ./BeautifulSoup-3.2.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 ./BeautifulSoup-3.2.1 -- libgit2 0.21.2