lilalo
annotate install @ 122:13a5715eaa20
update tags
| author | convert-repo | 
|---|---|
| date | Sun Jun 29 10:18:32 2008 +0000 (2008-06-29) | 
| parents | 9e6359b7ad55 | 
| children | b1685388f821 | 
| 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 | 
| devi@108 | 10 lilalo_user="YOUR-L3BACKEND-USER" | 
| devi@108 | 11 lab="SET-YOUR-FIRSTLAB-NAME-HERE" | 
| devi@108 | 12 install_l3bashrc_for_this_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@109 | 42 if which apt-get >& /dev/null | 
| igor@109 | 43 then | 
| igor@109 | 44 apt-get install -y $apt_get_install_this | 
| igor@109 | 45 else | 
| igor@109 | 46 echo "Please install this dependencies manually:" | 
| igor@109 | 47 echo $apt_get_install_this | 
| igor@109 | 48 echo "Have you installed this already (y/n)?" | 
| igor@109 | 49 echo y | read answer | 
| igor@109 | 50 if echo $answer | grep -q ^[yY] | 
| igor@109 | 51 then | 
| igor@109 | 52 true | 
| igor@109 | 53 else | 
| igor@109 | 54 echo Please install the dependencies and rerun the script | 
| igor@109 | 55 exit 1 | 
| igor@109 | 56 fi | 
| igor@109 | 57 fi | 
| igor@109 | 58 } | 
| devi@106 | 59 | 
| devi@106 | 60 | 
| devi@106 | 61 step() | 
| devi@106 | 62 { | 
| devi@106 | 63 | 
| devi@106 | 64 msg="$1" | 
| devi@106 | 65 shift | 
| devi@106 | 66 printf "${whiteC}""$msg""...${normC}\n" | 
| devi@106 | 67 # eval "$@" 2>&1 | sed 's/^/|\ \ \ /' && printf "Ok\n" || printf "Failed\n" | 
| devi@106 | 68 eval "$@" 2>&1 > log 2>&1 && \ | 
| devi@106 | 69 { | 
| devi@106 | 70 cat log | sed 's/^/|\ \ \ /' | 
| devi@106 | 71 printf "${greenC}""Ok\n""${normC}" | 
| devi@106 | 72 } || \ | 
| devi@106 | 73 { | 
| devi@106 | 74 cat log | sed 's/^/|\ \ \ /' | 
| devi@106 | 75 printf "${redC}""Failed\n""${normC}" | 
| devi@106 | 76 } | 
| devi@106 | 77 } | 
| devi@106 | 78 | 
| devi@106 | 79 get_user_home() | 
| devi@106 | 80 { | 
| devi@106 | 81 uname -a | grep -qi freebsd && pw user show "$@"| awk -F: '{print $9}' || getent passwd "$@"| awk -F: '{print $6}' | 
| devi@106 | 82 } | 
| devi@106 | 83 | 
| devi@106 | 84 install_to_users_homes() | 
| devi@106 | 85 { | 
| devi@106 | 86 . l3bashrc | 
| devi@106 | 87 users="$@" | 
| devi@106 | 88 set -x | 
| devi@106 | 89 for user in $users | 
| devi@106 | 90 do | 
| devi@106 | 91 user_home=`get_user_home "$user"` | 
| devi@106 | 92 mkdir -p ${user_home}/${lilalo_home} | 
| igor@115 | 93 mkdir /etc/lilalo/ | 
| igor@115 | 94 cp l3config.pm /etc/lilalo/ | 
| devi@106 | 95 cp l3-agent /usr/local/bin | 
| igor@115 | 96 cp l3-config /usr/local/bin | 
| igor@115 | 97 chmod 755 /usr/local/bin/l3-{agent,config} | 
| devi@106 | 98 cp l3bashrc ${user_home}/${lilalo_home} | 
| igor@114 | 99 cp l3prompt ${user_home}/${lilalo_home} | 
| igor@114 | 100 chmod 755 ${user_home}/${lilalo_home}/l3prompt | 
| devi@106 | 101 chown -R $user ${user_home}/${lilalo_home} | 
| devi@106 | 102 echo l3cd=${lilalo_context}/$user > ${user_home}/${lilalo_rc} | 
| devi@106 | 103 chown -R $user ${user_home}/${lilalo_rc} | 
| devi@106 | 104 done | 
| devi@106 | 105 set +x | 
| devi@106 | 106 } | 
| devi@106 | 107 | 
| devi@106 | 108 install_to_users_bashrc() | 
| devi@106 | 109 { | 
| devi@106 | 110 users="$@" | 
| devi@106 | 111 for user in $users | 
| devi@106 | 112 do | 
| devi@106 | 113 user_home=`get_user_home "$user"` | 
| devi@106 | 114 grep -q lilalo ${user_home}/.bashrc 2> /dev/null\ | 
| devi@106 | 115 || echo ". ${user_home}/.lilalo/l3bashrc && _l3_start" >> ${user_home}/.bashrc; chown -R ${user} ${user_home}/.bashrc | 
| devi@106 | 116 done | 
| devi@106 | 117 } | 
| devi@106 | 118 | 
| devi@106 | 119 install_to_users_bash_profile() | 
| devi@106 | 120 { | 
| devi@106 | 121 users="$@" | 
| devi@106 | 122 for user in $users | 
| devi@106 | 123 do | 
| devi@106 | 124 user_home=`get_user_home "$user"` | 
| devi@106 | 125 grep -q l3-agent ${user_home}/.bash_profile 2> /dev/null \ | 
| devi@108 | 126 || { 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 | 127 done | 
| devi@106 | 128 } | 
| devi@106 | 129 | 
| devi@106 | 130 show_usage() | 
| devi@106 | 131 { | 
| devi@106 | 132 cat <<USAGE | 
| devi@106 | 133 Usage: | 
| devi@106 | 134 $0 | 
| devi@106 | 135 USAGE | 
| devi@106 | 136 } | 
| devi@106 | 137 | 
| devi@106 | 138 show_final_message() | 
| devi@106 | 139 { | 
| devi@106 | 140 cat <<FINAL_MESSAGE | 
| devi@106 | 141 | 
| devi@106 | 142 | 
| devi@106 | 143 Installation is successfully completed. | 
| devi@106 | 144 Now restart your shell or relogin | 
| devi@106 | 145 to start script writing. | 
| devi@106 | 146 | 
| devi@106 | 147 Your current lilalo context is ${lilalo_context}/USER | 
| devi@106 | 148 If you use xgu.ru backend, your labs will be available at | 
| devi@106 | 149 http://xgu.ru/l3/${lilalo_context} | 
| devi@106 | 150 | 
| devi@106 | 151 Use commands | 
| devi@106 | 152 $ l3cd ${lilalo_context%/*/*}/MY-NEW-CONTEXT/${hostname}/USER | 
| devi@106 | 153 $ l3pwd | 
| devi@106 | 154 to change and to know your current context. | 
| devi@106 | 155 | 
| devi@106 | 156 For further information see http://xgu.ru/lilalo/ (in Russian). | 
| devi@106 | 157 | 
| devi@106 | 158 Thank you gor using LiLaLo. | 
| devi@106 | 159 Happy Labbing! | 
| devi@106 | 160 | 
| devi@106 | 161 (don't forget to restart bash or relogin) | 
| devi@106 | 162 | 
| devi@106 | 163 FINAL_MESSAGE | 
| devi@106 | 164 } | 
| devi@106 | 165 | 
| devi@106 | 166 | 
| devi@106 | 167 temp_dir=/tmp/lilalo-install-temp-$$ | 
| devi@106 | 168 mkdir -p ${temp_dir} | 
| devi@106 | 169 cd ${temp_dir} | 
| igor@109 | 170 step "Installing dependencies" apt_get_install_deps | 
| devi@106 | 171 step "Downloading l3bashrc" ${wget} ${url_l3bashrc} | 
| igor@114 | 172 step "Downloading l3prompt" ${wget} ${url_l3prompt} | 
| igor@118 | 173 step "Downloading l3-agent" '${wget} ${url_l3agent}; ${wget} ${url_l3config_pm}; ${wget} ${url_l3config}' | 
| devi@106 | 174 step "Downloading perl modules for l3-agent" '{ for i in ${perl_modules}; do ${wget} ${url_perl_modules}/$i.tar.gz; done; }' | 
| devi@106 | 175 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 | 176 step "Installing l3bashrc to users home directories" install_to_users_homes $install_l3bashrc_for_this_users | 
| devi@106 | 177 step "Adding l3bashrc invocation to ~/.bashrc " install_to_users_bashrc $install_l3bashrc_for_this_users | 
| devi@106 | 178 step "Adding l3-agent invocation to ~/.bash_profile " install_to_users_bash_profile $install_l3bashrc_for_this_users | 
| devi@106 | 179 cd / | 
| devi@106 | 180 rm -rf ${temp_dir} | 
| devi@106 | 181 | 
| devi@106 | 182 show_final_message | 
| devi@106 | 183 | 
