source: installer/opengnsys_update.sh @ fcb1011

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since fcb1011 was 4057c5d, checked in by ramon <ramongomez@…>, 14 years ago

Versión 1.0.1: corregido fallo de tratamiento de enlaces simbólicos en el actualizador.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@2028 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 20.2 KB
RevLine 
[a0867b37]1#!/bin/bash
2#/**
3#@file    opengnsys_update.sh
4#@brief   Script actualización de OpenGnSys
5#@warning No se actualiza BD, ni ficheros de configuración.
6#@version 0.9 - basado en opengnsys_installer.sh
7#@author  Ramón Gómez - ETSII Univ. Sevilla
8#@date    2010/01/27
[c1e00e4]9#@version 1.0 - adaptación a OpenGnSys 1.0
10#@author  Ramón Gómez - ETSII Univ. Sevilla
11#@date    2011/03/02
[64dd765]12#@version 1.0.1 - control de auto actualización del script
13#@author  Ramón Gómez - ETSII Univ. Sevilla
14#@date    2011/05/17
[a0867b37]15#*/
16
17
[295b4ab]18####  AVISO: Editar configuración de acceso por defecto a la Base de Datos.
19OPENGNSYS_DATABASE="ogAdmBD"            # Nombre de la base datos
20OPENGNSYS_DBUSER="usuog"                # Usuario de acceso
21OPENGNSYS_DBPASSWORD="passusuog"        # Clave del usuario
22
23####  AVISO: NO Editar variables de acceso desde el cliente
24OPENGNSYS_CLIENTUSER="opengnsys"        # Usuario Samba
25
26
[a0867b37]27# Sólo ejecutable por usuario root
28if [ "$(whoami)" != 'root' ]
29then
30        echo "ERROR: this program must run under root privileges!!"
31        exit 1
32fi
[4e51cb0]33# Error si OpenGnSys no está instalado (no existe el directorio del proyecto)
34INSTALL_TARGET=/opt/opengnsys
35if [ ! -d $INSTALL_TARGET ]; then
36        echo "ERROR: OpenGnSys is not installed, cannot update!!"
37        exit 1
38fi
[a0867b37]39
40# Comprobar si se ha descargado el paquete comprimido (USESVN=0) o sólo el instalador (USESVN=1).
41PROGRAMDIR=$(readlink -e $(dirname "$0"))
[64dd765]42PROGRAMNAME=$(basename "$0")
[c1e00e4]43DEPS="build-essential g++-multilib rsync ctorrent samba unzip netpipes debootstrap schroot squashfs-tools"
[07c3a59]44OPENGNSYS_SERVER="www.opengnsys.es"
[a0867b37]45if [ -d "$PROGRAMDIR/../installer" ]; then
46    USESVN=0
47else
48    USESVN=1
49    DEPS="$DEPS subversion"
50fi
[eb9424f]51SVN_URL="http://$OPENGNSYS_SERVER/svn/branches/version1.0/"
[a0867b37]52
53WORKDIR=/tmp/opengnsys_update
54mkdir -p $WORKDIR
55
56LOG_FILE=/tmp/opengnsys_update.log
57
58
59
60#####################################################################
61####### Algunas funciones útiles de propósito general:
62#####################################################################
[295b4ab]63
[64dd765]64# Comprobar auto-actualización.
65function checkAutoUpdate()
66{
67        local update=0
68
69        # Actaulizar el script si ha cambiado o no existe el original.
70        if [ $USESVN -eq 1 ]; then
[7b0c6ff]71                svn export $SVN_URL/installer/$PROGRAMNAME
[64dd765]72                if ! diff --brief $PROGRAMNAME $INSTALL_TARGET/lib/$PROGRAMNAME &>/dev/null || ! test -f $INSTALL_TARGET/lib/$PROGRAMNAME; then
73                        mv $PROGRAMNAME $INSTALL_TARGET/lib
74                        update=1
75                else
76                        rm -f $PROGRAMNAME
77                fi
78        else
79                if ! diff --brief $PROGRAMDIR/$PROGRAMNAME $INSTALL_TARGET/lib/$PROGRAMNAME &>/dev/null || ! test -f $INSTALL_TARGET/lib/$PROGRAMNAME; then
80                        cp -a $PROGRAMDIR/$PROGRAMNAME $INSTALL_TARGET/lib
81                        update=1
82                fi
83        fi
84
85        return $update
86}
87
88
[a0867b37]89function getDateTime()
90{
[295b4ab]91        date "+%Y%m%d-%H%M%S"
[a0867b37]92}
93
94# Escribe a fichero y muestra por pantalla
95function echoAndLog()
96{
97        echo $1
98        FECHAHORA=`getDateTime`
99        echo "$FECHAHORA;$SSH_CLIENT;$1" >> $LOG_FILE
100}
101
102function errorAndLog()
103{
104        echo "ERROR: $1"
105        FECHAHORA=`getDateTime`
106        echo "$FECHAHORA;$SSH_CLIENT;ERROR: $1" >> $LOG_FILE
107}
108
109
110#####################################################################
111####### Funciones de copia de seguridad y restauración de ficheros
112#####################################################################
113
114# Hace un backup del fichero pasado por parámetro
115# deja un -last y uno para el día
116function backupFile()
117{
118        if [ $# -ne 1 ]; then
119                errorAndLog "${FUNCNAME}(): invalid number of parameters"
120                exit 1
121        fi
122
123        local fichero=$1
124        local fecha=`date +%Y%m%d`
125
126        if [ ! -f $fichero ]; then
127                errorAndLog "${FUNCNAME}(): file $fichero doesn't exists"
128                return 1
129        fi
130
[ebbbfc01]131        echoAndLog "${FUNCNAME}(): Making $fichero back-up"
[a0867b37]132
133        # realiza una copia de la última configuración como last
134        cp -p $fichero "${fichero}-LAST"
135
136        # si para el día no hay backup lo hace, sino no
137        if [ ! -f "${fichero}-${fecha}" ]; then
138                cp -p $fichero "${fichero}-${fecha}"
139        fi
140}
141
142# Restaura un fichero desde su copia de seguridad
143function restoreFile()
144{
145        if [ $# -ne 1 ]; then
146                errorAndLog "${FUNCNAME}(): invalid number of parameters"
147                exit 1
148        fi
149
150        local fichero=$1
151
[ebbbfc01]152        echoAndLog "${FUNCNAME}(): restoring file $fichero"
[a0867b37]153        if [ -f "${fichero}-LAST" ]; then
154                cp -p "$fichero-LAST" "$fichero"
155        fi
156}
157
158
159#####################################################################
[295b4ab]160####### Funciones de acceso a base de datos
161#####################################################################
162
163# Actualizar la base datos
164function importSqlFile()
165{
166        if [ $# -ne 4 ]; then
167                errorAndLog "${FNCNAME}(): invalid number of parameters"
168                exit 1
169        fi
170
171        local dbuser="$1"
172        local dbpassword="$2"
173        local database="$3"
174        local sqlfile="$4"
175        local tmpfile=$(mktemp)
176        local status
177
178        if [ ! -r $sqlfile ]; then
179                errorAndLog "${FUNCNAME}(): Unable to read $sqlfile!!"
180                return 1
181        fi
182
183        echoAndLog "${FUNCNAME}(): importing SQL file to ${database}..."
184        chmod 600 $tmpfile
185        sed -e "s/SERVERIP/$SERVERIP/g" -e "s/DBUSER/$OPENGNSYS_DB_USER/g" \
186            -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" $sqlfile > $tmpfile
187        mysql -u$dbuser -p"$dbpassword" --default-character-set=utf8 "$database" < $tmpfile
188        status=$?
189        rm -f $tmpfile
190        if [ $status -ne 0 ]; then
191                errorAndLog "${FUNCNAME}(): error importing $sqlfile in database $database"
192                return 1
193        fi
194        echoAndLog "${FUNCNAME}(): file imported to database $database"
195        return 0
196}
197
198
199#####################################################################
[a0867b37]200####### Funciones de instalación de paquetes
201#####################################################################
202
203# Instalar las deependencias necesarias para el actualizador.
[64dd765]204function installDependencies()
[a0867b37]205{
206        if [ $# = 0 ]; then
207                echoAndLog "${FUNCNAME}(): no deps needed."
[c1e00e4]208        else
209                while [ $# -gt 0 ]; do
[ebbbfc01]210                        dpkg -s $1 2>/dev/null | grep -q "Status: install ok"
[c1e00e4]211                        if [ $? -ne 0 ]; then
212                                INSTALLDEPS="$INSTALLDEPS $1"
213                        fi
214                        shift
215                done
216                if [ -n "$INSTALLDEPS" ]; then
[ebbbfc01]217                        apt-get update && apt-get -y install --force-yes $INSTALLDEPS
[c1e00e4]218                        if [ $? -ne 0 ]; then
219                                errorAndLog "${FUNCNAME}(): cannot install some dependencies: $INSTALLDEPS."
220                                return 1
221                        fi
222                fi
223        fi
[a0867b37]224}
225
226
227#####################################################################
228####### Funciones para el manejo de Subversion
229#####################################################################
230
231function svnExportCode()
232{
233        if [ $# -ne 1 ]; then
234                errorAndLog "${FUNCNAME}(): invalid number of parameters"
235                exit 1
236        fi
237
[27dc5ff]238        local url="$1"
[a0867b37]239
240        echoAndLog "${FUNCNAME}(): downloading subversion code..."
241
[7ad4465]242        svn checkout "${url}" opengnsys
[a0867b37]243        if [ $? -ne 0 ]; then
244                errorAndLog "${FUNCNAME}(): error getting code from ${url}, verify your user and password"
245                return 1
246        fi
247        echoAndLog "${FUNCNAME}(): subversion code downloaded"
248        return 0
249}
250
251
252############################################################
253###  Detectar red
254############################################################
255
[07c3a59]256# Comprobar si existe conexión.
257function checkNetworkConnection()
258{
259        OPENGNSYS_SERVER=${OPENGNSYS_SERVER:-"www.opengnsys.es"}
260        wget --spider -q $OPENGNSYS_SERVER
261}
262
[a0867b37]263
264#####################################################################
265####### Funciones específicas de la instalación de Opengnsys
266#####################################################################
267
[cf2142ea]268# Copiar ficheros de arranque de los servicios del sistema de OpenGnSys
269
[64dd765]270function updateServicesStart()
271{
[cf2142ea]272        echoAndLog "${FUNCNAME}(): Updating /etc/init.d/opengnsys ..."
[6b65dfd]273        cp -p $WORKDIR/opengnsys/admin/Sources/Services/opengnsys.init /etc/init.d/opengnsys
[cf2142ea]274        if [ $? != 0 ]; then
275                errorAndLog "${FUNCNAME}(): Error updating /etc/init.d/opengnsys"
276                exit 1
277        fi
278        echoAndLog "${FUNCNAME}(): /etc/init.d/opengnsys updated successfully."
279}
280
[45f1fe8]281# Actualizar cliente OpenGnSys
[295b4ab]282function updateClientFiles()
[45f1fe8]283{
284        local hayErrores=0
285
286        echoAndLog "${FUNCNAME}(): Updating OpenGnSys Client files."
287        rsync --exclude .svn -irplt $WORKDIR/opengnsys/client/shared/* $INSTALL_TARGET/client
288        if [ $? -ne 0 ]; then
289                errorAndLog "${FUNCNAME}(): error while updating client structure"
290                hayErrores=1
291        fi
292        find $INSTALL_TARGET/client -name .svn -type d -exec rm -fr {} \; 2>/dev/null
293       
294        echoAndLog "${FUNCNAME}(): Updating OpenGnSys Cloning Engine files."
295        rsync --exclude .svn -irplt $WORKDIR/opengnsys/client/engine/*.lib $INSTALL_TARGET/client/lib/engine/bin
296        if [ $? -ne 0 ]; then
297                errorAndLog "${FUNCNAME}(): error while updating engine files"
298                hayErrores=1
299        fi
300       
301        if [ $hayErrores -eq 0 ]; then
302                echoAndLog "${FUNCNAME}(): client  files update success."
303        else
304                errorAndLog "${FUNCNAME}(): client files update with errors"
305        fi
306
307        return $hayErrores
308}
[4e51cb0]309
310# Exportar nombre de usuario y grupo del servicio Apache.
311function getApacheUser()
312{
313        # Variables de ejecución de Apache
314        # - APACHE_RUN_USER
315        # - APACHE_RUN_GROUP
316        if [ -f /etc/apache2/envvars ]; then
317                source /etc/apache2/envvars
318        fi
319        APACHE_RUN_USER=${APACHE_RUN_USER:-"www-data"}
320        APACHE_RUN_GROUP=${APACHE_RUN_GROUP:-"www-data"}
321}
322
[a0867b37]323# Copiar ficheros del OpenGnSys Web Console.
324function updateWebFiles()
325{
[d655cc4]326        local ERRCODE
[a0867b37]327        echoAndLog "${FUNCNAME}(): Updating web files..."
[d655cc4]328        backupFile $INSTALL_TARGET/www/controlacceso.php
329        mv $INSTALL_TARGET/www $INSTALL_TARGET/WebConsole
[1db2ed8]330        rsync --exclude .svn -irplt $WORKDIR/opengnsys/admin/WebConsole $INSTALL_TARGET
[d655cc4]331        ERRCODE=$?
332        mv $INSTALL_TARGET/WebConsole $INSTALL_TARGET/www
[c1e00e4]333        unzip -o $WORKDIR/opengnsys/admin/xajax_0.5_standard.zip -d $INSTALL_TARGET/www/xajax
[d655cc4]334        if [ $ERRCODE != 0 ]; then
[a0867b37]335                errorAndLog "${FUNCNAME}(): Error updating web files."
336                exit 1
337        fi
[d655cc4]338        restoreFile $INSTALL_TARGET/www/controlacceso.php
[a0867b37]339        # Cambiar permisos para ficheros especiales.
[ebbbfc01]340        chown -R $APACHE_RUN_USER:$APACHE_RUN_GROUP $INSTALL_TARGET/www/includes $INSTALL_TARGET/www/images/iconos
[a0867b37]341        echoAndLog "${FUNCNAME}(): Web files updated successfully."
[e473667]342       
[a0867b37]343}
344
[72134d5]345# Copiar carpeta de Interface
[64dd765]346function updateInterfaceAdm()
[72134d5]347{
[27dc5ff]348        local errcode=0
[72134d5]349         
350        # Crear carpeta y copiar Interface
351        echoAndLog "${FUNCNAME}(): Copying Administration Interface Folder"
352        mv $INSTALL_TARGET/client/interfaceAdm $INSTALL_TARGET/client/Interface
353        rsync --exclude .svn -irplt $WORKDIR/opengnsys/admin/Interface $INSTALL_TARGET/client
[27dc5ff]354        errcoce=$?
[72134d5]355        mv $INSTALL_TARGET/client/Interface $INSTALL_TARGET/client/interfaceAdm
[27dc5ff]356        if [ $errcode -ne 0 ]; then
[72134d5]357                echoAndLog "${FUNCNAME}(): error while updating admin interface"
358                exit 1
359        fi
360        chmod -R +x $INSTALL_TARGET/client/interfaceAdm
[b6f1726]361        chown $OPENGNSYS_CLIENTUSER:$OPENGNSYS_CLIENTUSER $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
[f6c1d2b]362        chmod 700 $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
[72134d5]363        echoAndLog "${FUNCNAME}(): Admin interface updated successfully."
364}
[a0867b37]365
[5d6bf97]366# Crear documentación Doxygen para la consola web.
367function makeDoxygenFiles()
368{
369        echoAndLog "${FUNCNAME}(): Making Doxygen web files..."
370        $WORKDIR/opengnsys/installer/ogGenerateDoc.sh \
371                        $WORKDIR/opengnsys/client/engine $INSTALL_TARGET/www
372        if [ ! -d "$INSTALL_TARGET/www/html" ]; then
373                errorAndLog "${FUNCNAME}(): unable to create Doxygen web files."
374                return 1
375        fi
[45f1fe8]376        rm -fr "$INSTALL_TARGET/www/api"
[5d6bf97]377        mv "$INSTALL_TARGET/www/html" "$INSTALL_TARGET/www/api"
[45f1fe8]378    rm -fr $INSTALL_TARGET/www/{man,perlmod,rtf}
[5d6bf97]379        chown -R $APACHE_RUN_USER:$APACHE_RUN_GROUP $INSTALL_TARGET/www/api
380        echoAndLog "${FUNCNAME}(): Doxygen web files created successfully."
381}
382
383
[a0867b37]384# Crea la estructura base de la instalación de opengnsys
385function createDirs()
386{
[eb9424f]387        # Crear estructura de directorios.
[a0867b37]388        echoAndLog "${FUNCNAME}(): creating directory paths in ${INSTALL_TARGET}"
389        mkdir -p ${INSTALL_TARGET}
390        mkdir -p ${INSTALL_TARGET}/bin
391        mkdir -p ${INSTALL_TARGET}/client
392        mkdir -p ${INSTALL_TARGET}/doc
393        mkdir -p ${INSTALL_TARGET}/etc
394        mkdir -p ${INSTALL_TARGET}/lib
395        mkdir -p ${INSTALL_TARGET}/log/clients
[eb9424f]396        ln -fs ${INSTALL_TARGET}/log /var/log/opengnsys
[a0867b37]397        mkdir -p ${INSTALL_TARGET}/sbin
398        mkdir -p ${INSTALL_TARGET}/www
399        mkdir -p ${INSTALL_TARGET}/images
400        ln -fs /var/lib/tftpboot ${INSTALL_TARGET}
[eb9424f]401        mkdir -p ${INSTALL_TARGET}/tftpboot/pxelinux.cfg
[a0867b37]402        if [ $? -ne 0 ]; then
403                errorAndLog "${FUNCNAME}(): error while creating dirs. Do you have write permissions?"
404                return 1
405        fi
406
[eb9424f]407        # Crear usuario ficticio.
408        if id -u $OPENGNSYS_CLIENTUSER &>/dev/null; then
409                echoAndLog "${FUNCNAME}(): user \"$OPENGNSYS_CLIENTUSER\" is already created"
410        else
411                echoAndLog "${FUNCNAME}(): creating OpenGnSys user"
412                useradd $OPENGNSYS_CLIENTUSER 2>/dev/null
413                if [ $? -ne 0 ]; then
414                        errorAndLog "${FUNCNAME}(): error creating OpenGnSys user"
415                        return 1
416                fi
417        fi
418
419        # Establecer los permisos básicos.
420        echoAndLog "${FUNCNAME}(): setting directory permissions"
421        chmod -R 775 $INSTALL_TARGET/{log/clients,images,tftpboot/pxelinux.cfg}
422        chown -R :$OPENGNSYS_CLIENTUSER $INSTALL_TARGET/{log/clients,images,tftpboot/pxelinux.cfg}
423        if [ $? -ne 0 ]; then
424                errorAndLog "${FUNCNAME}(): error while setting permissions"
425                return 1
426        fi
427
[a0867b37]428        echoAndLog "${FUNCNAME}(): directory paths created"
429        return 0
430}
431
432# Copia ficheros de configuración y ejecutables genéricos del servidor.
[64dd765]433function updateServerFiles()
[bb30a50]434{
[c1e00e4]435        # No copiar ficheros del antiguo cliente Initrd
[873cf1e]436        local SOURCES=( repoman/bin \
[c1e00e4]437                        server/bin \
[873cf1e]438                        server/tftpboot \
[bb30a50]439                        installer/opengnsys_uninstall.sh \
[873cf1e]440                        doc )
441        local TARGETS=( bin \
442                        bin \
443                        tftpboot \
[4057c5d]444                        lib/opengnsys_uninstall.sh \
[873cf1e]445                        doc )
[a0867b37]446
447        if [ ${#SOURCES[@]} != ${#TARGETS[@]} ]; then
448                errorAndLog "${FUNCNAME}(): inconsistent number of array items"
449                exit 1
450        fi
451
452        echoAndLog "${FUNCNAME}(): updating files in server directories"
453        pushd $WORKDIR/opengnsys >/dev/null
454        local i
455        for (( i = 0; i < ${#SOURCES[@]}; i++ )); do
[27dc5ff]456                if [ -d "$INSTALL_TARGET/${TARGETS[i]}" ]; then
[4057c5d]457                        rsync --exclude .svn -irplt "${SOURCES[i]}" $(dirname $(readlink -e "$INSTALL_TARGET/${TARGETS[i]}"))
[aa36857]458                else
[4057c5d]459                        rsync --exclude .svn -irplt "${SOURCES[i]}" $(readlink -e "$INSTALL_TARGET/${TARGETS[i]}")
[aa36857]460                fi
[a0867b37]461        done
462        popd >/dev/null
[9ee62ad]463        echoAndLog "${FUNCNAME}(): updating cron files"
464        echo "* * * * *   root   [ -x $INSTALL_TARGET/bin/torrent-creator ] && $INSTALL_TARGET/bin/torrent-creator" > /etc/cron.d/torrentcreator
[da8db11]465        echoAndLog "${FUNCNAME}(): server files updated successfully."
[a0867b37]466}
467
468####################################################################
469### Funciones de compilación de código fuente de servicios
470####################################################################
471
[bb30a50]472# Recompilar y actualiza los serivicios y clientes.
[64dd765]473function compileServices()
[a0867b37]474{
[bb30a50]475        local hayErrores=0
476
477        # Compilar OpenGnSys Server
478        echoAndLog "${FUNCNAME}(): Recompiling OpenGnSys Admin Server"
479        pushd $WORKDIR/opengnsys/admin/Sources/Services/ogAdmServer
480        make && mv ogAdmServer $INSTALL_TARGET/sbin
481        if [ $? -ne 0 ]; then
482                echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Admin Server"
483                hayErrores=1
484        fi
485        popd
486        # Compilar OpenGnSys Repository Manager
487        echoAndLog "${FUNCNAME}(): Recompiling OpenGnSys Repository Manager"
488        pushd $WORKDIR/opengnsys/admin/Sources/Services/ogAdmRepo
489        make && mv ogAdmRepo $INSTALL_TARGET/sbin
490        if [ $? -ne 0 ]; then
491                echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Repository Manager"
492                hayErrores=1
493        fi
494        popd
495        # Compilar OpenGnSys Agent
496        echoAndLog "${FUNCNAME}(): Recompiling OpenGnSys Agent"
497        pushd $WORKDIR/opengnsys/admin/Sources/Services/ogAdmAgent
498        make && mv ogAdmAgent $INSTALL_TARGET/sbin
499        if [ $? -ne 0 ]; then
500                echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Agent"
501                hayErrores=1
502        fi
503        popd
504
[a0867b37]505        # Compilar OpenGnSys Client
[bb30a50]506        echoAndLog "${FUNCNAME}(): Recompiling OpenGnSys Client"
[72134d5]507        pushd $WORKDIR/opengnsys/admin/Sources/Clients/ogAdmClient
[e473667]508        make && mv ogAdmClient $INSTALL_TARGET/client/bin
[a0867b37]509        if [ $? -ne 0 ]; then
510                echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Client"
511                hayErrores=1
512        fi
513        popd
514
515        return $hayErrores
516}
517
518
519####################################################################
[4e51cb0]520### Funciones instalacion cliente OpenGnSys
[a0867b37]521####################################################################
522
[c1e00e4]523# Actualizar nuevo cliente para OpenGnSys 1.0
524function updateClient()
525{
526        local DOWNLOADURL=http://www.opengnsys.es/downloads
[e9722d2]527        local FILENAME=ogclient-1.0.1-lucid-32bit.tar.gz
[6ef9f23]528        local TMPFILE=/tmp/$FILENAME
[c1e00e4]529
530        echoAndLog "${FUNCNAME}(): Loading Client"
531        # Descargar y descomprimir cliente ogclient
[03882ae]532        wget $DOWNLOADURL/$FILENAME -O $TMPFILE
[6ef9f23]533        if [ ! -s $TMPFILE ]; then
534                errorAndLog "${FUNCNAME}(): Error loading OpenGnSys Client"
[c1e00e4]535                return 1
536        fi
[03882ae]537        echoAndLog "${FUNCNAME}(): Extracting Client files"
[6ef9f23]538        tar xzvf $TMPFILE -C $INSTALL_TARGET/tftpboot
539        rm -f $TMPFILE
[c1e00e4]540        # Usar la versión más reciente del Kernel y del Initrd para el cliente.
[295b4ab]541        ln -f $(ls $INSTALL_TARGET/tftpboot/ogclient/vmlinuz-*|tail -1) $INSTALL_TARGET/tftpboot/ogclient/ogvmlinuz
542        ln -f $(ls $INSTALL_TARGET/tftpboot/ogclient/initrd.img-*|tail -1) $INSTALL_TARGET/tftpboot/ogclient/oginitrd.img
[c1e00e4]543        # Establecer los permisos.
544        chmod -R 755 $INSTALL_TARGET/tftpboot/ogclient
[295b4ab]545        chown -R :$OPENGNSYS_CLIENTUSER $INSTALL_TARGET/tftpboot/ogclient
[c1e00e4]546        echoAndLog "${FUNCNAME}(): Client update successfully"
547}
[a0867b37]548
[eb9424f]549# Resumen de actualización.
550function updateSummary()
551{
552        # Actualizar fichero de versión y revisión.
553        local VERSIONFILE="$INSTALL_TARGET/doc/VERSION.txt"
554        local REVISION=$(LANG=C svn info $SVN_URL|awk '/Revision:/ {print "r"$2}')
555
556        [ -f $VERSIONFILE ] || echo "OpenGnSys" >$VERSIONFILE
557        perl -pi -e "s/($| r[0-9]*)/ $REVISION/" $VERSIONFILE
558
559        echo
560        echoAndLog "OpenGnSys Update Summary"
561        echo       "========================"
562        echoAndLog "Project version:                  $(cat $VERSIONFILE)"
563        echo
564}
565
566
[a0867b37]567
568#####################################################################
[3320409]569####### Proceso de actualización de OpenGnSys
[a0867b37]570#####################################################################
571
572
573echoAndLog "OpenGnSys update begins at $(date)"
574
[bb30a50]575pushd $WORKDIR
576
[27dc5ff]577# Comprobar si hay conexión y detectar parámetros de red por defecto.
578checkNetworkConnection
579if [ $? -ne 0 ]; then
580        errorAndLog "Error connecting to server. Causes:"
581        errorAndLog " - Network is unreachable, review devices parameters."
582        errorAndLog " - You are inside a private network, configure the proxy service."
583        errorAndLog " - Server is temporally down, try agian later."
584        exit 1
585fi
586
[64dd765]587# Comprobar auto-actualización del programa.
588if [ "$PROGRAMDIR" != "$INSTALL_TARGET/bin" ]; then
589        checkAutoUpdate
590        if [ $? -ne 0 ]; then
[f580c51]591                echoAndLog "OpenGnSys updater has been overwritten."
592                echoAndLog "Please, re-execute this script."
[64dd765]593                exit
594        fi
595fi
596
[bb30a50]597# Instalar dependencias.
[a0867b37]598installDependencies $DEPS
599if [ $? -ne 0 ]; then
600        errorAndLog "Error: you may install all needed dependencies."
601        exit 1
602fi
603
604# Arbol de directorios de OpenGnSys.
605createDirs ${INSTALL_TARGET}
606if [ $? -ne 0 ]; then
607        errorAndLog "Error while creating directory paths!"
608        exit 1
609fi
610
611# Si es necesario, descarga el repositorio de código en directorio temporal
612if [ $USESVN -eq 1 ]; then
613        svnExportCode $SVN_URL
614        if [ $? -ne 0 ]; then
615                errorAndLog "Error while getting code from svn"
616                exit 1
617        fi
618else
619        ln -fs "$(dirname $PROGRAMDIR)" opengnsys
620fi
621
[295b4ab]622# Si existe fichero de actualización de la base de datos; aplicar cambios.
623INSTVERSION=$(awk '{print $2}' $INSTALL_TARGET/doc/VERSION.txt)
624REPOVERSION=$(awk '{print $2}' $WORKDIR/opengnsys/doc/VERSION.txt)
625OPENGNSYS_DBUPDATEFILE="$WORKDIR/opengnsys/admin/Database/$OPENGNSYS_DATABASE-$INSTVERSION-$REPOVERSION.sql"
626if [ -f $OPENGNSYS_DBUPDATEFILE ]; then
627        echoAndLog "Updating tables from version $INSTVERSION to $REPOVERSION"
628        importSqlFile $OPENGNSYS_DBUSER $OPENGNSYS_DBPASSWORD $OPENGNSYS_DATABASE $OPENGNSYS_DBUPDATEFILE
629else
630        echoAndLog "Database unchanged."
631fi
632
633# Actualizar ficheros complementarios del servidor
[a0867b37]634updateServerFiles
635if [ $? -ne 0 ]; then
[da8db11]636        errorAndLog "Error updating OpenGnSys Server files"
[a0867b37]637        exit 1
638fi
639
[295b4ab]640# Actualizar ficheros del cliente
641updateClientFiles
642updateInterfaceAdm
[45f1fe8]643
[295b4ab]644# Actualizar páqinas web
[4e51cb0]645getApacheUser
[a0867b37]646updateWebFiles
647if [ $? -ne 0 ]; then
[da8db11]648        errorAndLog "Error updating OpenGnSys Web Admin files"
[a0867b37]649        exit 1
650fi
[5d6bf97]651# Generar páginas Doxygen para instalar en el web
652makeDoxygenFiles
[a0867b37]653
[bb30a50]654# Recompilar y actualizar los servicios del sistema
655compileServices
656
657# Actaulizar ficheros auxiliares del cliente
[a0867b37]658updateClient
659if [ $? -ne 0 ]; then
660        errorAndLog "Error updating clients"
661        exit 1
662fi
663
[95f1f68]664# Actualizamos el fichero que arranca los servicios de OpenGnSys
665updateServicesStart
666
[3320409]667# Eliminamos el fichero de estado del tracker porque es incompatible entre los distintos paquetes
[ebbbfc01]668if [ -f /tmp/dstate ]; then
669        rm -f /tmp/dstate
[3320409]670fi
671
[eb9424f]672# Mostrar resumen de actualización.
673updateSummary
674
[a0867b37]675#rm -rf $WORKDIR
676echoAndLog "OpenGnSys update finished at $(date)"
677
678popd
679
Note: See TracBrowser for help on using the repository browser.