viernes, 11 de julio de 2008

Una de scripts (3)

Hace unos meses, publiqué en este blog un par de scripts que utilizaba diariamente. Uno para actualizar el sistema y otro para terminar procesos.

Ahora presento un tercer script (amsn_svn.sh)con el que he automatizado el proceso de descarga, descompresión y compilación de la versión disponible en el SVN del proyecto aMSN. NOTA: este proceso no instala el amsn!

Este script, por defecto, se debe colocar en la carpeta $HOME/bin y el directorio con el aMSN compilado quedará en la carpeta $HOME/bin/msn. Aunque como veréis más abajo todo esto se puede cambiar en el shell-script.

Para que se pueda lanzar desde cualquier directorio este shell-script, la carpeta $HOME/bin debe estar incluida en la variable de entorno $PATH. Y además debe tener permisos de ejecución, para ello:
chmod u+x amsn_svn.sh

Para comprobar si se encuentra este directorio dentro de la variable dicha debéis comprobar que aparezca en la lista de directorios que se obtiene al ejecutar desde una consola el siguiente comando:

echo $PATH

Si no estuviera, se debe modificar el archivo .bash_profile (al menos en sistemas derivados de Debian) que se encuentra en el directorio personal de cada usuario, añadiendo al final de este archivo lo siguiente:

PATH=$PATH:$HOME/bin

A continuación únicamente, desde cualquier directorio en la consola ejecutamos:
amsn_svn.sh
Después de este pequeño anexo... una vez ejecutado este shell-script lo único que quedaría por hacer es crear un enlace simbólico (acceso directo) en el escritorio para lanzar aMSN. Un modo simple que se me ocurre es de la siguiente forma (si habéis mantenido las rutas que hay por defecto):

cd $HOME/Desktop
ln -s $HOME/bin/msn/amsn





#!/bin/bash
##
## amsn_svn.sh
## Script para la actualización del aMSN.
##
##
## Copyright (C) 2008 Mario Rodríguez (marrodmo@gmail.com).
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3 of the License, or (at
## your option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with Foobar. If not, see <http://www.gnu.org/licenses/>.

#Parametros para el script
AXTAR="amsn_dev.tar.gz"
VERSION_ANT="amsn_dev_ANT.tar.gz"
TEMPORAL="amsn_cvs_temp"
DIRECTORIO="$HOME/bin"

#Nos guardamos el directorio donde nos encontramos
#para volver al terminar todo el proceso
ACTUAL=$(pwd)

#Cambiamos al directorio donde se encuentra
#el script para realizar la actualizacion
echo "Cambiando al directorio donde se encuentra el script" >&2
cd $DIRECTORIO

if [ -f $AXTAR ]; then
echo "Copia de seguridad de la version anterior.">&2
mv $AXTAR $VERSION_ANT
fi

#Obtener la version del servidor
wget http://amsn.sourceforge.net/$AXTAR

#Comprobar la version a traves de md5
NUEVO=$(md5sum $AXTAR | awk '{print $1}')
echo "MD5SUM obtenido">&2
if [ -f $TEMPORAL ]; then
echo "Obteniendo md5 anterior">&2
VIEJO=$(cat $TEMPORAL )
else
VIEJO="otra cosa"
#Se coloca cualquier cosa a la variable para que seguro que de distinto el md5
fi

echo "Comprobando que version se tiene">&2
if [ "$NUEVO" = "$VIEJO" ]; then
echo "Tienes la ultima version"
echo "Quires continuar con la instalacion?"
read cont
if [ "$cont" = "n" ]; then
exit
fi
fi

#Guardando el nuevo md5
echo "Guardando nuevo md5sum en $TEMPORAL">&2
echo ""
echo "$NUEVO" > $TEMPORAL

#Por si acaso borramos la carpeta msn si existiera
if [ -d msn ]; then
rm -rf msn
fi

#Instalar la nueva version del AMSN dejandolo en el direcotorio
#definido al principio por la variable DIRECTORIO
echo "Descomprimiendo y configurando el nuevo amsn...">&2
tar xzvf $AXTAR
cd msn
./configure
SAL=$(echo $?)
if [ $SAL -eq 1 ]; then
echo "Fallo en el ./configure." >&2
exit
fi

make
SAL=$(echo $?)
if [ $SAL -eq 1 ]; then
echo "Fallo en el make." >&2
exit
fi


echo "Acabado!">&2
echo "">&2

#Volviendo al directorio donde se lanzo este script
cd $ACTUAL



NOTA: El script la primera vez que se ejecuta puede dar fallos, ya que instala la última versión desde el SVN y se necesitarán ciertos paquetes. A continuación indicaré los errores que me surgieron y lo que instalé (con Debian Lenny recién instalado).

El primer error que me surgió fue:
configure: error: You need a C++ compiler (g++) to compiler aMSN. Please install g++ and try again
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.


Para ello hay que instalar el compilador g++ (como root):

apt-get install g++

Lo siguiente que aparece no es un error, pero también lo vamos a corregir:
checking tcl build dir... ./configure: line 3313: locate: command not found
Para ello hay que instalar:

apt-get install locate

Siguiente error:
configure: error: Unable to find Tcl directory or Tcl package is not tcl-dev
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

Debemos instalar las librerías tcl-dev:

apt-get install tcl8.5-dev

Siguiente error:
checking tk build dir... configure: error: Unable to find Tk directory or Tk package is not tk-dev
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

Debemos instalar las librerías tk-dev:

apt-get install tk8.5-dev

Siguiente error:
configure: error: libpng is required
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

Debemos instalar la librería que indica:

apt-get install libpng12-dev

Siguiente error:
configure: error: libjpeg is required
make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

Debemos instalar la librería que indica:

apt-get install libjpeg62-dev

Hasta aquí es lo necesario para que se compile aMSN. A continuación, podríamos instalar los paquetes necesarios para las conversaciones de audio. Pero eso lo explicaré en otra entrada :)

2 comentarios:

Anónimo dijo...

Gracias por los nombres exactos de los paquetes.

A ver si compilás con audio ahora!

pegasus dijo...

Excelente guia amigo, gracias por conpartir los nombre exactos, me paso tal cual como tu dijiste en lo que necesitaba instalar, graciasss!