Corriendo Luca en distros modernas (versión vieja)
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]:
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::
#
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
#
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
$ /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
$ 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 %
Última modificación 2005-08-16 20:56