Jul 13

Introducción.

La versión mas reciente de Ubuntu, Lucid Lynx (10.04), incluye en sus repositorios por defecto la versión 5.3 de PHP la cual trae consigo una serie de modificaciones considerables que hacen que muchas de las aplicaciones requieran algún tipo de modificaciones para funcionar correctamente.

Mientras se realizan estas modificaciones para actualizar las aplicaciones sea hace necesario continuar utilizando las aplicaciones existentes y para esto se debe reemplazar la versión instalada de PHP por la versión mas reciente de la serie anterior (5.2.x).  La migración no es trivial debido a que los paquetes vienen directamente de los repositorios, sin embargo si se utiliza el script provisto opr KAndy el proceso se simplifica enormemente.

Instalación de PHP.

Si aún no cuenta con PHP instalado en el equipo puede realizar una instalación básica mediante la ejecución de la siguiente instrucción.  Instale los demás paquetes que considere necesarios.

$ sudo aptitude install apache2 php5 php5-cli php5-mysql

En este punto el equipo tendrá instalado PHP 5.3 y es el momento de degradarlo a su versión anterior.

$ php -v

PHP 5.3.2-1ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Degradar PHP.

Tomar nota de los paquetes relacionados con PHP que se encuentran actualmente instalados.

$ php_installed=`dpkg -l | grep  php| awk  ‘{print $2}’ |tr “\n” ” “`

Descargar el script de KAndy de la siguiente ubicación y almacenarlo con el nombre de downgradePHP.sh.

http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/

Ejecute el script en la máquina que se desea degradar.

$ chmod +x downgradePHP.sh

$ ./downgradePHP.sh

Recuperar los demás paquetes instalados.

$ sudo apt-get install $php_installed

Verificar la nueva versión de PHP.

$ php -v

PHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:28:03)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

Enlaces.

Tagged with:



En July 13 de 2010, Jorge Iván Meza Martínez escribió acerca de Degradar PHP 5.3 a 5.2 en GNU/Linux Ubuntu 10.04.
Jul 13

Introducción.

Frecuentemente será necesario enviar múltiples trabajos al cluster que se encuentren basados en el mismo ejecutable, esto es especialmente útil cuando una misma tarea se debe ejecutar en varias ocasiones de manera concurrente o cuando se necesita procesar de manera concurrente una gran cantidad de información dispersa en múltiples archivos.

Ejecutar varios trabajos.

Para indicarle a Condor que se desea ejecutar varias instancias del mismo trabajo sólo es necesario indicarle la cantidad a través de la instrucción Queue del archivo de lanzamiento.

Para evitar la confusión que puede generar el registro de n trabajos volcado sobre los tres únicos archivos de error, salida y log, es posible indicarle a Condor que los diferencie para cada una de las instancias del trabajo ejecutado, utilizando la seudovariable $(Process).

Otra variable del archivo de lanzamiento que cobra especial importancia en este contexto es Input la cual permite especificar la información que se ingresaría al programa a través de la entrada estándar (stdin).  Esto permite que se personalice la ejecución de cada uno de los trabajos a pesar de que se basan en el mismo ejecutable.

Executable  = MyJob
Universe    = standard
Input       = MyJob-$(Process).in
Output      = _MyJob-$(Process).out
Error       = _MyJob-$(Process).err
Log         = _MyJob-$(Process).log

Queue 3

Si se consulta la cola de trabajos del cluster inmediatamente después de lanzar el trabajo podrán apreciarse los 3 trabajos lanzados efectivamente, todos bajo el mismo identificador (38 en este caso) y diferentes subidentificadores (los representados finalmente por $(Process)).

$ condor_q

– Submitter: c-head.jorgeivanmeza.com : <192.168.1.210:9293> : c-head.jorgeivanmeza.com
ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD
38.0   jimezam         7/12 23:51   0+00:00:01 R  0   7.3  MyJob
38.1   jimezam         7/12 23:51   0+00:00:01 R  0   7.3  MyJob
38.2   jimezam         7/12 23:51   0+00:00:00 I  0   7.3  MyJob

3 jobs; 1 idle, 2 running, 0 held

La ejecución del archivo de lanzamiento anterior ejecutaría tres procesos basados en el programa MyJob el cual se deberá encontrar recompilado para el universo estándar, tomará la entrada estándar para cada una de las instancias de los archivos MyJob-#.in (que por obvias razones deberán existir previamente) y generará los archivos individuales de salida estándar, error y registro para cada una de las instancias ejecutadas con los nombres de _MyJob-#.out, _MyJob-#.err y _MyJob-#.log respectivamente.  El caracter # será reemplazado por el subidentificador interno del trabajo que empezará en cero y aumentará consecutivamente según la cantidad de trabajos que se haya solicitado encolar.

Después de la ejecución del trabajo propuesto como ejemplo este podría ser el contenido del directorio de trabajo.

-rw-rw-r– 1 jimezam jimezam       0 Jul 12 23:32 _MyJob-0.err
-rw-rw-r– 1 jimezam jimezam       4 Jul 12 23:40 MyJob-0.in
-rw-rw-r– 1 jimezam jimezam     622 Jul 12 23:32 _MyJob-0.log
-rw-rw-r– 1 jimezam jimezam     101 Jul 12 23:32 _MyJob-0.out

-rw-rw-r– 1 jimezam jimezam       0 Jul 12 23:32 _MyJob-1.err
-rw-rw-r– 1 jimezam jimezam       4 Jul 12 23:40 MyJob-1.in
-rw-rw-r– 1 jimezam jimezam     622 Jul 12 23:32 _MyJob-1.log
-rw-rw-r– 1 jimezam jimezam     101 Jul 12 23:32 _MyJob-1.out

-rw-rw-r– 1 jimezam jimezam       0 Jul 12 23:32 _MyJob-2.err
-rw-rw-r– 1 jimezam jimezam       4 Jul 12 23:40 MyJob-2.in
-rw-rw-r– 1 jimezam jimezam     622 Jul 12 23:32 _MyJob-2.log
-rw-rw-r– 1 jimezam jimezam     101 Jul 12 23:32 _MyJob-2.out

-rwxrwxr-x 1 jimezam jimezam 5461004 Jul 12 23:07 MyJob
-rw-rw-r– 1 jimezam jimezam     384 Jul 12 23:06 MyJob.c
-rw-rw-r– 1 jimezam jimezam     211 Jul 12 23:32 MyJob.submit

Utilizar directorios de inicio diferentes.

Otra facilidad que provee la sintáxis del archivo de lanzamiento de trabajos es la posibilidad de ejecutar los diferentes trabajos basados en el mismo ejecutable pero ubicados en diferentes directorios.  Esto evita las colisiones con los nombres de los archivos (solventadas inicialmente con el uso de $(Process)) y brinda un mayor orden a los archivos de datos.

Executable     = MyJob
Universe       = standard
Input          = MyJob.in
Output         = _MyJob.out
Error          = _MyJob.err
Log            = _MyJob.log           
initialdir     = job_$(Process)

Queue 3

Para lanzar este trabajo será necesario que existan los directorios iniciales de trabajo (job_0, job_1 y job_2) previamente y en cada uno de ellos exista el archivo MyJob.in cuyo contenido se utilizará como entrada estándar para cada una de las instancias.  Nótese como no habrá colisiones entre los nombres de los archivos (in, out, err y log) entre los diferentes trabajos aunque no se utilizó la seudovariable $(Process) para diferenciarlos ya que se ubicarán en diferentes directorios.

Después de la ejecución del trabajo propuesto como ejemplo este podría ser el contenido de los directorios de trabajo.

-rw-rw-r– 1 jimezam jimezam   0 Jul 12 23:51 job_0/_MyJob.err
-rw-rw-r– 1 jimezam jimezam   4 Jul 12 23:51 job_0/MyJob.in
-rw-rw-r– 1 jimezam jimezam 622 Jul 12 23:51 job_0/_MyJob.log
-rw-rw-r– 1 jimezam jimezam 107 Jul 12 23:51 job_0/_MyJob.out

-rw-rw-r– 1 jimezam jimezam   0 Jul 12 23:51 job_1/_MyJob.err
-rw-rw-r– 1 jimezam jimezam   4 Jul 12 23:51 job_1/MyJob.in
-rw-rw-r– 1 jimezam jimezam 622 Jul 12 23:51 job_1/_MyJob.log
-rw-rw-r– 1 jimezam jimezam 107 Jul 12 23:51 job_1/_MyJob.out

-rw-rw-r– 1 jimezam jimezam   0 Jul 12 23:51 job_2/_MyJob.err
-rw-rw-r– 1 jimezam jimezam   4 Jul 12 23:51 job_2/MyJob.in
-rw-rw-r– 1 jimezam jimezam 622 Jul 12 23:51 job_2/_MyJob.log
-rw-rw-r– 1 jimezam jimezam 107 Jul 12 23:51 job_2/_MyJob.out

Enlaces.

Tagged with:



En July 13 de 2010, Jorge Iván Meza Martínez escribió acerca de Enviando al cluster varios trabajos basados en el mismo ejecutable.