Este año 2009 empieza con una buena noticia: el nuevo programa de ayuda de la Hacienda de Gipuzkoa está en Java, parece que por fin tenemos un programa multiplataforma. Esperaba que llegara este día, aunque las quejas formales enviadas tanto a Hacienda como al Ararteko hayan quedado prácticamente en papel mojado... Además esta nueva versión tiene nuevas capacidades, como la ejecución en red y la realización de copias de seguridad.
Aquí explico la instalación un poco especial que he querido hacer para aprovechar el servidor que tenemos, pero que como la mayoría de servidores (a parte de los Windows) no tienen instalado entorno gráfico. El problema con el programa de hacienda es que necesita un entorno de escritorio para poderse ejecutar. ¿Por qué? Simplemente porque tiene que tener una bandeja de sistema o system tray para ejecutarse. Total ¿para qué? simplemente habrán dado por hecho que todos lo tienen y el programa lo tiene como requisito, sin eso no arranca. Aunque tal como pone en este artículo, podrían ver si esta soportado, y si no lo está, pasar del iconito que no tiene ninguna funcionalidad.
Además en mi servidor tenía otro problema: se necesita Java 6, y en Debian Etch (la versión estable actualmente) está la versión 5. No es un problema grave, se instala desde los Backports para Etch y listo.
Otro problema: tengo el servidor instalado con la arquitectura AMD64, para aprovechar al máximo el AMD Athlon 64 X2
, los problemas de disponibilidad de programas en esta arquitectura nunca me han molestado, porque suelen ser programas tipo plugin Flash y otros programas de escritorio, pero que en un servidor no se usan. El tema es que en AMD64 está disponible la máquina virtual Java, pero no trae por ejemplo el Java Web Start, y el programa de Hacienda es un fichero de tipo JNLP que se ejecuta con Java Web Start.
Para resolver estos problemas, he creado un entorno chroot, con la arquitectura i386 y versión Lenny. Es este entorno están las librerías y ejecutables básicos para el sistema Debian, además de los programas añadidos que queramos, en este caso KDE, JRE, servidor X y servidor VNC.
Apartados:
He seguido esta guía para ejecutar programas de 32 bits sobre AMD64 en un chroot.
srvzubione:/var# mkdir chroot-i386
i386
y versión lenny
srvzubione:/var# apt-get install debootstrap srvzubione:/var# debootstrap --arch i386 lenny /var/chroot-i386 http://ftp.debian.org/debian/ ...
/proc
como enlace al del sistema principal, /proc es necesario dentro del chroot para el correcto funcionamiento de algunos comandos del sistema y aplicaciones
srvzubione:/var# mount -o bind /proc chroot-i386/proc
srvzubione:/var# chroot chroot-i386
bind
srvzubione:/# ls bin dev home media opt root selinux sys usr boot etc lib mnt proc sbin srv tmp var srvzubione:/# ls home srvzubione:/# ls proc 1 13540 2391 3162 6693 6799 9 fs partitions 10 136 2394 3168 6722 6800 900 ide sched_debug 1063 1729 2660 3192 6725 6801 901 interrupts scsi 11 177 2669 3195 6726 6815 902 iomem self 11429 178 2678 3215 6756 6816 944 ioports slabinfo 11443 179 2688 3226 6757 685 acpi irq stat 11532 180 2701 3232 6760 690 asound kallsyms swaps 1157 181 27260 3242 6762 6931 buddyinfo kcore sys 11586 1840 27263 3243 6764 6932 bus key-users sysrq-trigger 11590 1841 2754 3246 6769 6943 cgroups kmsg sysvipc 11621 1849 3 3247 6771 6945 cmdline kpagecount timer_list 11638 2 3021 3248 6772 7 cpuinfo kpageflags timer_stats 11652 2150 3049 3249 6774 728 crypto loadavg tty 11663 2164 3060 4 6776 729 devices locks uptime 11664 2192 3098 44 6777 730 diskstats meminfo version 11753 2194 3111 45 6778 738 dma misc vmallocinfo 11765 2335 3123 47 6783 745 dri modules vmstat 11766 2364 3124 48 6786 8 driver mounts zoneinfo 11877 2370 3136 5 6788 8105 execdomains mtrr 13331 2377 3137 6 6790 8108 fb net 13532 2384 3157 6681 6794 8118 filesystems pagetypeinfo srvzubione:/# du -hs 190M .
srvzubione:/# groupadd hacienda srvzubione:/# useradd -g hacienda -s /bin/bash -m -c "Para programas de Hacienda" hacienda srvzubione:/# passwd hacienda Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
srvzubione:/# cat /etc/apt/sources.list deb http://ftp.es.debian.org/debian lenny main contrib non-free deb-src http://ftp.es.debian.org/debian lenny main contrib non-free srvzubione:/# apt-get update ...
srvzubione:/# apt-get install sun-java6-jre
...
srvzubione:/# apt-get install vnc4server
...
srvzubione:/# apt-get install xserver-xorg
...
srvzubione:/# apt-get install kdebase
...
srvzubione:/# su - hacienda
hacienda@srvzubione:~$
hacienda@srvzubione:~$ mkdir .vnc hacienda@srvzubione:~$ cat .vnc/xstartup /usr/bin/startkde & sleep 10 /usr/bin/javaws /home/hacienda/hacienda-servidor.jnlp hacienda@srvzubione:~$ chmod +x .vnc/xstartup
hacienda@srvzubione:~$ cat .vncrc
$vncStartup = "/home/hacienda/.vncxstartup"
$geometry ="800x600";
hacienda@srvzubione:~$ file hacienda-servidor.jnlp
hacienda-servidor.jnlp: XML document text
hacienda@srvzubione:~$ vncserver
You will require a password to access your desktops.
Password:
Verify:
xauth: creating new authority file /home/hacienda/.Xauthority
New 'srvzubione:1 (hacienda)' desktop is srvzubione:1
Starting applications specified in /home/hacienda/.vnc/xstartup
Log file is /home/hacienda/.vnc/srvzubione:1.log
Run
Para que se arranque automáticamente el programa de hacienda, lo que hay que hacer es arrancar el servidor VNC. Pero tenemos el problema de que el arranque del servidor VNC es dentro del entorno chroot. Esto se puede hacer con schroot.
hacienda@srvzubione:~$ exit logout srvzubione:/# cat /usr/bin/run-hacienda /bin/su - hacienda -c vncserver
srvzubione:/# exit exit srvzubione:/var# cd /etc/init.d/ srvzubione:/etc/init.d# cat hacienda #!/bin/sh -e # # hacienda Arranque y parada del programa de hacienda # La parada no es limpia porque debería cerrarse desde el GUI . /lib/lsb/init-functions case $1 in start) log_begin_msg "Starting hacienda server..." mount -o bind /proc /var/chroot-i386/proc schroot -c hacienda sh /usr/bin/run-hacienda > /usr/local/zubitxo/log/run-hacienda 2>&1 log_end_msg 0 ;; stop) log_begin_msg "Stopping hacienda server..." pkill Xvnc4 sleep 5 umount /var/chroot-i386/proc log_end_msg 0 ;; restart) $0 stop sleep 3 $0 start ;; *) log_success_msg "Usage: /etc/init.d/hacienda {start|stop|restart}" ;; esac srvzubione:/etc/init.d# chmod +x hacienda srvzubione:/etc/init.d# cd ../rc0.d srvzubione:/etc/rc0.d# ln -s ../init.d/hacienda K05hacienda srvzubione:/etc/rc0.d# cd ../rc1.d srvzubione:/etc/rc1.d# ln -s ../init.d/hacienda K05hacienda srvzubione:/etc/rc1.d# cd ../rc2.d srvzubione:/etc/rc2.d# ln -s ../init.d/hacienda S95hacienda srvzubione:/etc/rc2.d# cd ../rc3.d srvzubione:/etc/rc3.d# ln -s ../init.d/hacienda S95hacienda srvzubione:/etc/rc3.d# cd ../rc4.d srvzubione:/etc/rc4.d# ln -s ../init.d/hacienda S95hacienda srvzubione:/etc/rc4.d# cd ../rc5.d srvzubione:/etc/rc5.d# ln -s ../init.d/hacienda S95hacienda srvzubione:/etc/rc5.d# cd ../rc6.d srvzubione:/etc/rc6.d# ln -s ../init.d/hacienda K05hacienda
srvzubione:/etc/init.d# /etc/init.d/hacienda stop Stopping hacienda server.... srvzubione:/etc/init.d# /etc/init.d/hacienda start Starting hacienda server....
Esta parte no tiene ninguna dificultad: Preferencias - Trabajo en red - Trabajo en red
No ha funcionado todo a la primera, en caso de problemas está bien tener la consola Java para ver los mensajes de error.
srvzubione:/# /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
Última modificación de esta página: 18 de enero de 2009
La Web y sus contenidos, mientras no se mencione lo contrario, han sido creados por Aitor Oliveira Fernandez. Este trabajo está licenciado bajo Licencia Creative Commons.