lilalo
annotate install @ 150:822b36252d7f
Вывод больших фрагментов текста не теряется.
Большие фрагменты текста теперь не вырезаются бесследно.
Там, откуда они вырезаются, вставляются ссылки,
по которым можно посмотреть полную версию вывода.
Испытано на больших фрагментах текста,
содержащих до 5000 строк (фрагменты более 5000 строк по умолчанию
обрезаются административно; допустимые размеры задаются в l3config.pm).
Исправлены ошибки, из-за которых большие фрагменты
обрабатывались некорректно.
Большие фрагменты текста теперь не вырезаются бесследно.
Там, откуда они вырезаются, вставляются ссылки,
по которым можно посмотреть полную версию вывода.
Испытано на больших фрагментах текста,
содержащих до 5000 строк (фрагменты более 5000 строк по умолчанию
обрезаются административно; допустимые размеры задаются в l3config.pm).
Исправлены ошибки, из-за которых большие фрагменты
обрабатывались некорректно.
author | igor@chub.in |
---|---|
date | Tue Jun 23 01:15:02 2009 +0300 (2009-06-23) |
parents | 576a546271c6 |
children | d775ffd49dbf |
rev | line source |
---|---|
devi@106 | 1 #!/bin/sh |
devi@106 | 2 |
devi@108 | 3 hostname=`hostname` |
devi@108 | 4 uname -a | grep -qi freebsd || hostname=`hostname -f` |
devi@108 | 5 |
devi@108 | 6 ############################################################################### |
devi@108 | 7 # |
devi@108 | 8 # Set this variables before installation: |
devi@108 | 9 |
igor@137 | 10 lilalo_user=${lilalo_user:-YOUR-L3BACKEND-USER} |
igor@137 | 11 lab=${lab:-SET-YOUR-FIRSTLAB-NAME-HERE} |
igor@137 | 12 install_l3bashrc_for_this_users=${users:-"root user"} # users who will use l3agent and l3script |
devi@108 | 13 lilalo_context="/users/${lilalo_user}/${lab}/${hostname}" |
devi@108 | 14 |
devi@108 | 15 # |
devi@108 | 16 ############################################################################### |
devi@108 | 17 |
devi@108 | 18 |
devi@106 | 19 lilalo_rc=.l3rc |
devi@106 | 20 lilalo_home=.lilalo |
devi@106 | 21 url_lilalo="http://xgu.ru/lilalo" |
devi@106 | 22 url_l3bashrc="${url_lilalo}"/l3bashrc |
devi@106 | 23 url_l3agent="${url_lilalo}"/l3-agent |
igor@115 | 24 url_l3config_pm="${url_lilalo}"/l3config.pm |
igor@115 | 25 url_l3config="${url_lilalo}"/l3-config |
igor@114 | 26 url_l3prompt="${url_lilalo}"/l3prompt |
devi@106 | 27 url_perl_modules=${url_lilalo}/ |
devi@106 | 28 perl_modules="Term-VT102 Text-Iconv" |
devi@106 | 29 |
igor@109 | 30 apt_get_install_this="perl make libmodule-build-perl libc6-dev gcc" |
devi@108 | 31 |
devi@106 | 32 wget=wget |
devi@106 | 33 uname -a | grep -qi bsd && wget=fetch |
devi@106 | 34 |
devi@106 | 35 normC='\033[0;39m' |
devi@106 | 36 whiteC='\033[1;37m' |
devi@106 | 37 redC='\033[0;31m' |
devi@106 | 38 greenC='\033[0;32m' |
devi@106 | 39 |
igor@109 | 40 apt_get_install_deps() |
igor@109 | 41 { |
igor@123 | 42 return 0 |
igor@109 | 43 if which apt-get >& /dev/null |
igor@109 | 44 then |
igor@109 | 45 apt-get install -y $apt_get_install_this |
igor@109 | 46 else |
igor@109 | 47 echo "Please install this dependencies manually:" |
igor@109 | 48 echo $apt_get_install_this |
igor@109 | 49 echo "Have you installed this already (y/n)?" |
igor@109 | 50 echo y | read answer |
igor@109 | 51 if echo $answer | grep -q ^[yY] |
igor@109 | 52 then |
igor@109 | 53 true |
igor@109 | 54 else |
igor@109 | 55 echo Please install the dependencies and rerun the script |
igor@109 | 56 exit 1 |
igor@109 | 57 fi |
igor@109 | 58 fi |
igor@109 | 59 } |
devi@106 | 60 |
devi@106 | 61 |
devi@106 | 62 step() |
devi@106 | 63 { |
devi@106 | 64 |
devi@106 | 65 msg="$1" |
devi@106 | 66 shift |
devi@106 | 67 printf "${whiteC}""$msg""...${normC}\n" |
devi@106 | 68 # eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n" |
devi@106 | 69 eval "$@" 2>&1 > log 2>&1 && \ |
devi@106 | 70 { |
devi@106 | 71 cat log | sed 's/^/|\ \ \ /' |
devi@106 | 72 printf "${greenC}""Ok\n""${normC}" |
devi@106 | 73 } || \ |
devi@106 | 74 { |
devi@106 | 75 cat log | sed 's/^/|\ \ \ /' |
devi@106 | 76 printf "${redC}""Failed\n""${normC}" |
devi@106 | 77 } |
devi@106 | 78 } |
devi@106 | 79 |
devi@106 | 80 get_user_home() |
devi@106 | 81 { |
devi@106 | 82 uname -a | grep -qi freebsd && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}' |
devi@106 | 83 } |
devi@106 | 84 |
devi@106 | 85 install_to_users_homes() |
devi@106 | 86 { |
devi@106 | 87 . l3bashrc |
devi@106 | 88 users="$@" |
devi@106 | 89 set -x |
devi@106 | 90 for user in $users |
devi@106 | 91 do |
devi@106 | 92 user_home=`get_user_home "$user"` |
devi@106 | 93 mkdir -p ${user_home}/${lilalo_home} |
igor@115 | 94 mkdir /etc/lilalo/ |
igor@115 | 95 cp l3config.pm /etc/lilalo/ |
devi@106 | 96 cp l3-agent /usr/local/bin |
igor@115 | 97 cp l3-config /usr/local/bin |
igor@136 | 98 ln -s `which bash` /usr/local/bin/l3script |
igor@115 | 99 chmod 755 /usr/local/bin/l3-{agent,config} |
devi@106 | 100 cp l3bashrc ${user_home}/${lilalo_home} |
igor@114 | 101 cp l3prompt ${user_home}/${lilalo_home} |
igor@114 | 102 chmod 755 ${user_home}/${lilalo_home}/l3prompt |
devi@106 | 103 chown -R $user ${user_home}/${lilalo_home} |
devi@106 | 104 echo l3cd=${lilalo_context}/$user > ${user_home}/${lilalo_rc} |
devi@106 | 105 chown -R $user ${user_home}/${lilalo_rc} |
devi@106 | 106 done |
devi@106 | 107 set +x |
devi@106 | 108 } |
devi@106 | 109 |
devi@106 | 110 install_to_users_bashrc() |
devi@106 | 111 { |
devi@106 | 112 users="$@" |
devi@106 | 113 for user in $users |
devi@106 | 114 do |
devi@106 | 115 user_home=`get_user_home "$user"` |
devi@106 | 116 grep -q lilalo ${user_home}/.bashrc 2> /dev/null\ |
igor@138 | 117 || echo "[ \$0 == l3script ] && . ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc |
devi@106 | 118 done |
devi@106 | 119 } |
devi@106 | 120 |
devi@106 | 121 install_to_users_bash_profile() |
devi@106 | 122 { |
devi@106 | 123 users="$@" |
devi@106 | 124 for user in $users |
devi@106 | 125 do |
devi@106 | 126 user_home=`get_user_home "$user"` |
devi@106 | 127 grep -q l3-agent ${user_home}/.bash_profile 2> /dev/null \ |
devi@108 | 128 || { echo >> ${user_home}/.bash_profile ; cat ${user_home}/.bash_profile | sed '1s/^/l3-agentX/' | tr X '\n' > /tmp/$$$$l3 ; mv /tmp/$$$$l3 ${user_home}/.bash_profile; chown -R ${user} ${user_home}/.bash_profile; } |
devi@106 | 129 done |
devi@106 | 130 } |
devi@106 | 131 |
devi@106 | 132 show_usage() |
devi@106 | 133 { |
devi@106 | 134 cat <<USAGE |
devi@106 | 135 Usage: |
devi@106 | 136 $0 |
devi@106 | 137 USAGE |
devi@106 | 138 } |
devi@106 | 139 |
devi@106 | 140 show_final_message() |
devi@106 | 141 { |
devi@106 | 142 cat <<FINAL_MESSAGE |
devi@106 | 143 |
devi@106 | 144 |
devi@106 | 145 Installation is successfully completed. |
devi@106 | 146 Now restart your shell or relogin |
devi@106 | 147 to start script writing. |
devi@106 | 148 |
devi@106 | 149 Your current lilalo context is ${lilalo_context}/USER |
devi@106 | 150 If you use xgu.ru backend, your labs will be available at |
devi@106 | 151 http://xgu.ru/l3/${lilalo_context} |
devi@106 | 152 |
devi@106 | 153 Use commands |
devi@106 | 154 $ l3cd ${lilalo_context%/*/*}/MY-NEW-CONTEXT/${hostname}/USER |
devi@106 | 155 $ l3pwd |
devi@106 | 156 to change and to know your current context. |
devi@106 | 157 |
devi@106 | 158 For further information see http://xgu.ru/lilalo/ (in Russian). |
devi@106 | 159 |
devi@106 | 160 Thank you gor using LiLaLo. |
devi@106 | 161 Happy Labbing! |
devi@106 | 162 |
devi@106 | 163 (don't forget to restart bash or relogin) |
devi@106 | 164 |
devi@106 | 165 FINAL_MESSAGE |
devi@106 | 166 } |
devi@106 | 167 |
devi@106 | 168 |
devi@106 | 169 temp_dir=/tmp/lilalo-install-temp-$$ |
devi@106 | 170 mkdir -p ${temp_dir} |
devi@106 | 171 cd ${temp_dir} |
igor@109 | 172 step "Installing dependencies" apt_get_install_deps |
devi@106 | 173 step "Downloading l3bashrc" ${wget} ${url_l3bashrc} |
igor@114 | 174 step "Downloading l3prompt" ${wget} ${url_l3prompt} |
igor@118 | 175 step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}' |
devi@106 | 176 step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }' |
devi@106 | 177 step "Installing perl modules for l3-agent" '{ for i in ${perl_modules}; do tar xvfz $i.tar.gz; cd $i*[^z]; perl Makefile.PL; make; make install; cd ..; done; }' |
devi@106 | 178 step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users |
devi@106 | 179 step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users |
devi@106 | 180 step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users |
devi@106 | 181 cd / |
devi@106 | 182 rm -rf ${temp_dir} |
devi@106 | 183 |
devi@106 | 184 show_final_message |
devi@106 | 185 |