Cambiar a contenido.

Fundación Vía Libre

Secciones
Herramientas Personales
Usted está aquí: Inicio » Sistema de gestion Luca » Corriendo Luca en distros modernas (versión vieja)

Corriendo Luca en distros modernas (versión vieja)

Document Actions
Esta versión del documento ha sido dejada solo por razones historicas.

Advertencia

Si está por hacer esto por primera vez, es mejor que lea la versión actualizada .

Introducción

La versión anterior de Luca corre solamente en Debian Woody. Esto nos crea una dificultad para ponerlo a andar, porque Woody ya ni siquiera es la version estable de Debian, y aunque va a seguir teniendo soporte por un tiempo, no es una distro moderna.

Por otro lado, es bastante complicado instalar todas las dependencias de Luca en una distro moderna.

Una solución posible es meter la imagen de un Woody en una distro moderna y correr Luca allí adentro. El producto final no es algo simple de explicar, pero basicamente van a poder seguir usando su distro moderna para las aplicaciones de todos los dias y, metido en una `jaula', Luca dentro de un Woody.

El siguiente es un texto basado en un extenso chat con alguien que logro hacerlo correr en Jujuy.

A traves de este texto utilizaremos algunos paths que son solo de ejemplo. Por favor, adaptar a sus gustos y necesidades. Los comandos que se muestren con un # adelante deben correrse como root, y los mostrados con $ deben correrse como usuario. En algunos pasos es necesario editar algun archivo de configuracion o similar. En ese caso mostramos el comando con '<editor>'; la idea es que usen el editor con el que mas comodo se sientan. Ante la duda, mcedit o nano me parecen buenas opciones[2].

Prerequisitos

No vamos a usar muchas herramientas fuera de lo comun en el desarrollo de los pasos en este texto. Como instalarlas queda como ejercicio para el lector[4]. La lista es la siguiente:

  • sudo
  • findutils
  • postgres

Extrayendo y montando el Woody

El primer paso es conseguir una copia de la iso de la demo live de Luca. El url oficial de donde bajarla es el siguiente[1]:

Iso del Cd live de Luca

No es necesario quemar la iso, ni tampoco facilita cosas mas adelante, asi que si no van a probarlo o mostrarlo en un sistema que ya tiene otro sistema sin querer instalarlo, no vale la pena quemarlo.

El siguiente paso es montar la iso para extraer la imagen que usamos en el mismo cd live. Supongamos que hemos bajado la iso en /home/usuario/demo_luca.iso :

 # mount /home/usuario/demo_luca.iso /mnt -o loop

Dentro del directorio /mnt nos quedan los directorios de la imagen; uno de ellos es el directorio luca y dentro de el, el archivo luca_rootfs.img. Vamos a copiar esta imagen a un directorio:

 # mkdir -pv /var/lib/luca
 # cp -v /mnt/luca/luca_rootfs.img /var/lib/luca

Desmontamos la imagen y, si no la vamos a usar para otra cosa, podemos borrarla:

 # umount /mnt
 # rm -v /home/usuario/demo_luca.iso

Creamos un punto de montaje (fijo) para esta imagen y la montamos permanentemente:

 # mkdir -pv /var/lib/luca/mnt
 # <editor> /etc/fstab

No me voy a poner a explicar el formato de este archivo; si quiere saber que esta poniendo aca, le recomiendo la lectura de las man pages de `mount` y `fstab`[3].

En dicho archivo hay que agregar las siguientes lineas:

 /var/lib/luca/luca_rootfs.img /var/lib/luca/mnt      ext2 loop     0 1
 none                          /var/lib/luca/mnt/proc proc defaults 0 2

Montamos y verificamos que todo este correcto:

 # mount -av
 # mount
 ...
 /var/lib/luca/luca_rootfs.img on /var/lib/luca/mnt type ext2 (rw,loop=/dev/loop1)
 proc on /var/lib/luca/mnt/proc type proc (rw)

Configurando Postgres

Para que Luca corra es necesrio crea una pase de datos en un Postgres[7] y configurarlo para que nos permita entrar. Editamos el archivo de configuracion de acceso[5] de PG::

# /etc/postgresql/pg_hba.conf

Hay que agregar la siguiente linea al comienzo del archivo:

 host     all    papo   127.0.0.1       255.0.0.0       trust

Eventualmente[6] hay que comentar (agregar un `#` al cominenzo de) la linea que diga:

 host    all        all        127.0.0.1        255.255.255.255  ident sameuser

Reiniciamos PG para que tome la nueva configuracion:

 # /etc/init.d/postgresql reload

Creamos el usuario y la base de datos[8]:

 # su - postgres -c "createuser -d -A papo" 
 # su - postgres -c "createdb -U papo -h localhost -E LATIN1 papo"
 CREATE USER
 CREATE DATABASE

Y la poblamos[9]:

 $ cd /var/lib/luca/mnt/usr/local/luca-0.2.0/luca
 $ psql -U papo -h localhost -a -v ON_ERROR_STOP=1 -f "sql/papo.sql"
 $ ./sql/admin_period.py papo papo localhost
 fecha de inicio de registracion para IVA [2005-06]:
 Interprete la fecha como junio de 2005. Correcto [S/n]?
 generando periodos: 2005-06 listo.

Probamos que podamos acceder al PG desde la jaula del Woody:

 # chroot /var/lib/luca/mnt/
 # ls /proc
 # psql -U papo -h localhost papo

Si el PG nos contesta:

 papo=>

ya estamos. Salimos del PG y del 'chroot':

 papo=> \q
 # exit

Lanzando Luca desde afuera

Ahora nos hace falta un comando que haga toda la magia necesaria para poder acceder a Luca dentro de esa jaula. Para eso vamos a hacer un pequeño[10] script en bash::

# mkdir -pv /usr/local/bin # /usr/local/bin/luca

El contenido de ese archivo tiene que decir:

 #! /bin/bash

 xhost +
 sudo chroot /var/lib/luca/mnt/ bash -c \
     "export PATH=/usr/local/bin:$PATH; /usr/local/bin/luca"

Le damos permisos de ejecucion al script:

 # chmod 755 /usr/local/bin/luca

Permitimos que los usuarios puedan ejecutar chroot para entrar a la jaula:

 # <editor> /etc/sudoers

Agregamos una linea que diga:

 <user> ALL= NOPASSWD: /bin/chroot

donde es el usuario que va a correr Luca[13]. Probamos que todo el engendro funcione[12]:

 $ /usr/local/bin/luca

Cualquier duda, pregunten en la lista de usuarios de Luca .

Footnotes:

[1] Si alguien tiene una copia disponible en otro lado, por favor avise a la lista de usuarios de Luca

[2] Opinion que no es compartida por todo el mundo, pero asi son las opiniones.

[3] Cuando me refiero a `ver la man page de ', el comando es:

$ man <x>

[4] El tema es que cada distribucion tiene su forma particular para instalar software, no las conozco a todas y algunas distros ni siquiera traen algunas de estas herramientas.

[5] El path de este archivo puede diferir. Ante la duda, buscarlo con:

# locate pg_hba.conf

Si locate se queja, actualizar la base de datos:

# updatedb

(esto tarda lo suyo) y probar de nuevo. Si tampoco logramos nada, quemamos el ultimo catucho:

# find /etc -name pg_hba.conf

Si tampoco, I'm out of ideas.

[6] La configuracion del Host Based Authentication de PG es bastante complicado. Ante la duda o falla de las sugerencias en este texto, leer la documentacion de HBA de PG o el equivalente de la version de PG usada (en el ejemplo, 8.0)

[7] En este ejemplo ponemos PG en la misma maquina donde va a correrse Luca. En caso de diferencia, ver el linke en [6]. Esto tambien influye en el uso de localhost como nombre de maquina en los comandos.

[8] Las comillas en estos comandos tienen que ir.

[9] Notar que estos comandos van como usuario; sin embargo, no se rompe nada si los hacemos como root.

[10] No tengo e#es en este teclado, ni acentos.

[11] El bit de setuid puede ser peligroso de prender en chroot. Se pueden hacer alternativas con sudo.

[12] Es necesario que este comando si sea como usuario, para asegurarnos que no haga falta que seamos root en el futuro.

[13] Tambien es posible crear un grupo, agregar a los usuarios al mismo, y especificarlo en sudoers con %.

Creado por admin
Última modificación 2005-08-16 20:56
 

Hecho con Plone

Este sitio cumple con los siguientes estándares: