Hiparco

Recetas y trucos de GNU/Linux e informática en general

Alojado en http://guimi.net

Instalación de OpenERP 6.0.3 en Debian GNU/Linux

Con esta entrada empiezo una pequeña serie sobre la puesta en marcha y disfrute de OpenERP (antes TinyERP), un ERP de software libre, adaptado a la legislación española y muy completo. [Entradas sobre OpenERP].
Estas entradas se han realizado gracias a la colaboración de Servi3, tu experto en OpenERP.

La documentación oficial recomienda realizar una instalación manual sobre GNU/Linux para las instalaciones en producción. Una instalación manual permite un mayor control sobre la misma, controlando qué módulos están disponibles. Aunque mucha gente usa Ubuntu (una versión LTS), yo recomiendo Debian (estable).

En esta entrada explicaré cómo hacer una buena instalación de OpenERP 6.0.3. sobre un Debian 6.0.3 (¡qué coincidencia!). Sirve igual para sus derivados, como Ubuntu, y prácticamente para cualquier GNU/Linux.
El siguiente paso es instalar un cliente de OpenERP en Debian.
Una vez instalado el servidor, desde el cliente no se distingue si el servidor es un GNU/Linux, un Mac, un Windows… así que el resto de entradas sobre OpenERP sirven para cualquier sistema.
Después debemos hacer una configuración inicial de OpenERP.
Con eso ya estaremos listos para Instalar en OpenERP los módulos de la localización española para su uso conforme a la normativa española (valga la redundancia), donde de paso veremos cómo instalar módulos en general en OpenERP.
Para acabar esta serie veremos cómo configurar la localización española de OpenERP y cómo importar/exportar datos en OpenERP.

La instalación automática, para entornos de prueba o incluso para pequeñas organizaciones, tarda medio minuto con el siguiente comando:
# aptitude install openerp-server
Aunque en el caso de Debian estable, instala la versión anterior (5.x).

La mayor parte de esta entrada se debe a esta explicación de the open sourcerer sobre cómo instalar OpenERP 6 en Ubuntu 10.
De hecho ahí llegan más lejos que en aquí y explican también cómo instalar el servidor web (lo veremos en otra entrada) y cómo usar conexiones SSL. No está de más recordar que se puede asegurar cualquier servicio mediante túneles SSH.

PREPARACIÓN DEL SISTEMA

Actualizamos el sistema e instalamos los paquetes base que vamos a necesitar: Bazaar y Python (2.6.6).
# aptitude update && aptitude safe-upgrade
# aptitude install bzr
# aptitude install python python-psycopg2 python-reportlab python-egenix-mxdatetime python-tz python-pychart python-pydot python-lxml python-vobject python-mako python-pydot python-lxml python-vobject python-yaml python-dateutil python-pychart python-webdav

INSTALACIÓN DE POSTGRESQL (8.4)

Instalamos el motor de base de datos postgres (y un cliente gráfico):
# aptitude install postgresql pgadmin3

Generamos una clave para el usuario postgres:
# passwd postgres

Configuramos el servidor para que acepte conexiones de por usuario/clave:
# vi /etc/postgresql/8.4/main/pg_hba.conf

#local   all         all                               ident
local   all         all                               md5

 
Reiniciamos postgres
# /etc/init.d/postgresql restart
Y abrimos sesión como usuario postgres
# su – postgres

Como usuario postgres verificamos la instalación de postgres:
$ psql -l

                               Listado de base de datos
  Nombre   |  Dueño   | Codificación | Collation  |   Ctype    |      Privilegios
-----------+----------+--------------+------------+------------+-----------------------
 postgres  | postgres | UTF8         | es_ES.utf8 | es_ES.utf8 |
 template0 | postgres | UTF8         | es_ES.utf8 | es_ES.utf8 | =c/postgres
                                                               : postgres=CTc/postgres
 template1 | postgres | UTF8         | es_ES.utf8 | es_ES.utf8 | =c/postgres
                                                               : postgres=CTc/postgres
(3 filas)

 
Creamos un usuario de PostgreSQL con contraseña para OpenERP
$ createuser –pwprompt

Ingrese el nombre del rol a agregar: openerp
Ingrese la contraseña para el nuevo rol:
Ingrésela nuevamente:
¿Será el nuevo rol un superusuario? (s/n) n
¿Debe permitírsele al rol la creación de bases de datos? (s/n) s
¿Debe permitírsele al rol la creación de otros roles? (s/n) n

 
Verificamos que podemos acceder con el usuario accediendo a la BD postgres
(la BD de OpenERP la crearemos después en la instalación de OpenERP).
$ psql -U openerp -d postgres

Contraseña para usuario openerp:
psql (8.4.9)
Digite «help» para obtener ayuda.

postgres=> \q

 
Cerramos la sesión del usuario postgres
$ exit

A no ser que solo estemos haciendo pruebas, es fundamental hacer copias de seguridad de PostgreSQL.

INSTALACIÓN DE OPENERP-SERVER

Creamos un usuario de sistema para la aplicación.
# adduser –system –home=/opt/openerp –group openerp
El resto de la instalación lo haremos desde el nuevo directorio de OpenERP.
# cd /opt/openerp

Descargamos las fuentes desde http://www.openerp.com/downloads.
# wget http://www.openerp.com/download/stable/source/openerp-server-6.0.3.tar.gz
Descomprimimos los paquetes
# tar xfz openerp-server-6.0.3.tar.gz
Limpiamos
# rm openerp-*gz
Asignamos el usuario y grupo a todas las fuentes
# chown -R openerp:openerp *

Hacemos una copia del directorio. La idea es mantener en server y web la versión en producción y disponer de las fuentes en directorios separados para las pruebas y desarrollos.
# cp -Rp openerp-server-6.0.3 server

Configuramos el servidor (basta cambiar ‘********’ por las claves que deseemos).
[Fichero de theopensourcerer]
# vi server/doc/openerp-server.conf

[options]
; This is the password that allows database operations
; Will be written to by the server when password is changed
; !! Keep this file secure !!
admin_passwd = ********

root_path = /opt/openerp/server/bin

without_demo = False
verbose = False

; Database settings
db_user = openerp
db_password = ********
; Please uncomment the following line *after* you have created the
; database. It activates the auto module check on startup.
; db_name = False
db_port = False
db_host = False
db_maxconn = 64

; Networking Settings
xmlrpc = True
xmlrpc_interface =
xmlrpc_port = 8069

netrpc = True
netrpc_interface =
netrpc_port = 8070

; Uncomment these for xml-rpc over SSL
;xmlrpcs = True
;xmlrpcs_interface =
;xmlrpcs_port = 8071
;secure_pkey_file = /etc/ssl/openerp/server.key
;secure_cert_file = /etc/ssl/openerp/server.crt

; Log settings
logfile = /var/log/openerp/openerp-server.log
syslog = False
logrotate = True
log_level = info

; False prevents the client displaying the list of databases
list_db = True
addons_path = /opt/openerp/server/bin/addons
demo = {}
soap = False
reportgz = False
translate_modules = ['all']

; Static http parameters
static_http_enable = False
static_http_document_root = /var/www/html
static_http_url_prefix = /

; Outbound email configuration
;smtp_user = info@example.com
;email_from = "OpenERP Support" 
;smtp_port = 25
;smtp_password = ********
;smtp_ssl = True
;smtp_server = mail.example.com

 
Preparamos el directorio para los logs:
# mkdir /var/log/openerp
# chown openerp:root /var/log/openerp

Copiamos el fichero de configuración al sistema y ajustamos los permisos.
# cp server/doc/openerp-server.conf /etc/
# chown openerp:root /etc/openerp-server.conf
# chmod 640 /etc/openerp-server.conf

Generamos un fichero para iniciar y parar el servidor.
[Fichero de theopensourcerer]
# vi openerp-server

#!/bin/sh

### BEGIN INIT INFO
# Provides:             openerp-server
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Should-Start:         $network
# Should-Stop:          $network
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Enterprise Resource Management software
# Description:          Open ERP is a complete ERP and CRM software.
### END INIT INFO

PATH=/bin:/sbin:/usr/bin
DAEMON=/opt/openerp/server/bin/openerp-server.py
NAME=openerp-server
DESC=openerp-server

# Specify the user name (Default: openerp).
USER=openerp

# Specify an alternate config file (Default: /etc/openerp-server.conf).
CONFIGFILE="/etc/openerp-server.conf"

# pidfile
PIDFILE=/var/run/$NAME.pid

# Additional options that are passed to the Daemon.
DAEMON_OPTS="-c $CONFIGFILE"

[ -x $DAEMON ] || exit 0
[ -f $CONFIGFILE ] || exit 0

checkpid() {
    [ -f $PIDFILE ] || return 1
    pid=`cat $PIDFILE`
    [ -d /proc/$pid ] && return 0
    return 1
}

case "${1}" in
        start)
                echo -n "Starting ${DESC}: "

                start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
                        --chuid ${USER} --background --make-pidfile \
                        --exec ${DAEMON} -- ${DAEMON_OPTS}

                echo "${NAME}."
                ;;

        stop)
                echo -n "Stopping ${DESC}: "

                start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \
                        --oknodo

                echo "${NAME}."
                ;;

        restart|force-reload)
                echo -n "Restarting ${DESC}: "

                start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \
                        --oknodo

                sleep 1

                start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
                        --chuid ${USER} --background --make-pidfile \
                        --exec ${DAEMON} -- ${DAEMON_OPTS}

                echo "${NAME}."
                ;;

        *)
                N=/etc/init.d/${NAME}
                echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
                exit 1
                ;;
esac

exit 0

 
Preparamos el fichero para que el servidor arranque normalmente.
# cp openerp-server /etc/init.d/
# chmod 755 /etc/init.d/openerp-server
# chown root: /etc/init.d/openerp-server
# update-rc.d openerp-server defaults

Para acabar, iniciamos el sistema:
# /etc/init.d/openerp-server start
Si todo ha ido bien el log nos dirá:
# cat /var/log/openerp/openerp-server.log

[2012-01-13 11:45:55,678][?] INFO:server:OpenERP version - 6.0.3
[2012-01-13 11:45:55,678][?] INFO:server:addons_path - /opt/openerp/server/bin/addons
[2012-01-13 11:45:55,678][?] INFO:server:database hostname - localhost
[2012-01-13 11:45:55,679][?] INFO:server:database port - 5432
[2012-01-13 11:45:55,679][?] INFO:server:database user - openerp
[2012-01-13 11:45:55,679][?] INFO:server:initialising distributed objects services
[2012-01-13 11:45:56,729][?] INFO:web-services:starting HTTP service at 0.0.0.0 port 8069
[2012-01-13 11:45:56,730][?] INFO:web-services:starting HTTPS service at 0.0.0.0 port 8071
[2012-01-13 11:45:56,730][?] INFO:web-services:Registered XML-RPC over HTTP
[2012-01-13 11:45:56,738][?] INFO:web-services:starting NET-RPC service at 0.0.0.0 port 8070
[2012-01-13 11:45:56,738][?] INFO:server:Starting 3 services
[2012-01-13 11:45:56,739][?] INFO:server:OpenERP server is running, waiting for connections...

 
Ahora, como hemos comentado al principio, el siguiente paso es instalar un cliente de OpenERP en Debian.
Después debemos hacer una configuración inicial de OpenERP.
Con eso ya estaremos listos para Instalar en OpenERP los módulos de la localización española para su uso conforme a la normativa española (valga la redundancia), donde de paso veremos cómo instalar módulos en general en OpenERP.
Para acabar esta serie veremos cómo configurar la localización española de OpenERP y cómo importar/exportar datos en OpenERP.

Instalación de OpenERP 6 en Debian GNU/Linux, OpenERP, Debian

Instalación de firmware en Debian

[Este apartado es un resumen de una entrada de Raphael Hertzog. Si el artículo todavía está disponible recomiendo ir al original.]

Una duda habitual al instalar un GNU/Linux es el tipo de procesador del que se dispone. En un PC con linux (por ejemplo arrancando con un Live-CD) podemos hacer:
$ grep “^flags” /proc/cpuinfo | grep -q ” lm ” && echo “amd64″ || echo “i386″

Puede ocurrir que al instalar Debian un equipo, una parte del hardware no funcione correctamente por falta del correspondiente firmware (o el uso de uno que no es totalmente adecuado). Una opción es obtener de Raphael Hertzog un disco de Debian con firmware.

Otra opción es realizar una instalación básica de Debian y posteriormente verificar el firmware necesario e instalarlo.
Si es necesario, pueden bajarse paquetes desde otro equipo desde la web de Debian.
Después se instala con # dpkg -i paquete

Si el equipo necesita algún firmware, durante la instalación, al actualizar el kernel o al hacer un update-initramfs aparecerán mensajes diciendo:
may require additional firmware” o “Failed to load firmware” o “Possible missing firmware“.
Podemos buscar más mensajes mediante:
# dmesg | grep firmware
# grep firmware /var/log/installer/*

Por ejemplo podemos encontrar:

e100: eth0: e100_request_firmware: Failed to load firmware "e100/d101m_ucode.bin": -2

El firmware que requiere el módulo e100 es:
$ modinfo -F firmware /lib/modules/2.6.32-5-amd64/kernel/drivers/net/e100.ko

e100/d102e_ucode.bin
e100/d101s_ucode.bin
e100/d101m_ucode.bin

Lo mejor es regenerar la imagen de inicio:
# update-initramfs

update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
W: Possible missing firmware /lib/firmware/e100/d102e_ucode.bin for module e100
W: Possible missing firmware /lib/firmware/e100/d101s_ucode.bin for module e100
W: Possible missing firmware /lib/firmware/e100/d101m_ucode.bin for module e100

Una vez visto el firmware que nos falta averiguamos dónde obtenerlo y lo instalamos:
$ apt-cache search d101m_ucode.bin

firmware-linux-nonfree - Binary firmware for various drivers in the Linux kernel

# aptitude install firmware-linux-nonfree

Para ver todos los paquetes de firmware disponibles:
$ aptitude search firmware

El firmware se instala en:

  • /lib/firmware/$(uname -r)

  • /lib/firmware
  • /usr/local/lib/firmware
  • /usr/lib/hotplug/firmware

Utilizando el navegador para decodificar base64

Esta nota procede de “Use your browser to decode base64 encoded data” de Cristian Radulescu.

Los navegadores puede decodificar base64, por eso se usa este sistema para “ofuscar” partes de código.
Para “desofuscarlo” basta con preguntarle al propio navegador introduciendo una cadena URI normal.
Así, por ejemplo, podemos poner en la barra del navegador:

data:text/plain;base64,bWVzc2FnZSBlbmNvZGVkIGluIGJhc2U2NA==

Y el navegador nos mostrará:

message encoded in base64
base64
 

Fuentes tipográficas en Debian GNU/Linux

Uno de esos pequeños detalles que hacen la vida más cómoda o incómoda al usuario de GNU/Linux, siempre rodeado de Windows, es la compatibilidad de las tipografías.

Se puede instalar facilmente las tipografias típicas de Windows mediante:
# aptitude install ttf-mscorefonts-installer

Si tenemos una partición con Windows (por ejemplo en /media/windows), otra opción es:
# mkdir -p /usr/share/fonts/truetype/win2
# cp /media/windows/windows/Fonts/*.ttf /usr/share/fonts/truetype/win2

Para instalar otras fuentes, por ejemplo Tahoma, podemos:
- Buscar la fuente en Google usando filetype:ttf+inurl:tahoma y descargarla.
# cp tahoma.ttf /usr/share/fonts/truetype/msttcorefonts/
# dpkg-reconfigure fontconfig

Fuentes, True Type, Font, truetype

Utilizar el punto del teclado numérico en LibreOffice, OpenOffice, etc

En LibreOffice, OpenOffice y demás derivados, cuando pulsas sobre el punto del teclado numérico aparece una coma.

Este comportamiento, que a mi me resulta muy molesto, tiene sentido en que ese botón genera, para LibreOffice, el caracter de separador decimal regional, que en castellano es la coma. De hecho este comportamiento resulta muy cómodo en determinados escenarios, principalmente usando hojas de cálculo, y se añadió en OOo a petición popular, imitando el comportamiento de otros programas ofimáticos.

Para desactivar ese comportamiento hay que ir a Herramientas -> Opciones -> Configuración de idioma -> Idiomas y donde indica Símbolo del separador decimal desmarcar “El mismo de la configuración regional (,)”

Configuración

coma, OOo, LibreOffice, OpenOffice, teclado numérico

Escritorio 3D y efectos (Compiz Fusion)

En el fichero xorg.conf hay que habilitar “Composite”:
# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.copia_seguridad
# vi /etc/X11/xorg.conf

Section "Extensions"
	Option "Composite" "Enable"
EndSection

Instalamos los paquetes de Compiz Fusion:
# aptitude install compiz compiz-gnome fusion-icon compiz-fusion-plugins-main compizconfig-settings-manager

Ya podemos lanzar Compiz con:
$ fusion-icon
Aunque se recomienda ponerlo en el inicio de sesión (en Gnome: Escritorio->Preferencias->Sesiones).

Uso y disfrute

  • Alt+Tab: Cambiar de aplicación abierta

  • Poner el ratón en la esquina superio derecha: Ver todas las ventanas abiertas
  • Ctrl+Alt+flecha_abajo: Aplanar el cubo
  • Ctrl+Alt+flechas_izq_der: Mover el cubo
  • Ctrl+Alt+Pulsar y arrastrar: Mover el cubo
  • Alt+Rueda: Transparencia
  • Super+Rueda: zoom
  • Alt+Pulsar y arrastrar: Mover ventana
  • Shift+F9: Lluvia (necesita Efecto Acuatico)
  • Shift+Super+s: cambiar entre aplicaciones (necesita Shift Switcher Plugin)
    • Super+Tab / Shift+Super+Tab (cambiar entre ventanas)

    • Shift+Super+s (seleccionar ventana)

Hay muchas más opciones que pueden explorarse y activarse desde el gestor de Compiz.

Edición de video

Instalamos algunos paquetes ‘imprescindibles’:
# aptitude install mplayer libdvdcss w32codecs/w64codecs

Para la edición de video hay unas buenas recetas de jEsuSdA.

Para convertir formatos de video a/desde DVD
# aptitude install avidemux

Para crear DVDs
# aptitude install qdvdauthor k9copy
Para que funcione bien este programa hay que indicar en cada video (botón derecho -> Properties -> Edit -> Aspect Ratio) formato de imagen 4:3
El sonido debe estar en formato mp2.
Para convertir mp3 a mp2 usar ffmpeg -i archivo.mp3 -ab 128 archivo.mp2

Para copiar DVDs
# aptitude install k9copy

Para insertar subtitulos en un AVI:
mencoder -ovc lavc -oac mp3lame pelicula.avi -o pelicula_con_subtitulos.avi -sub subtitulos.xxx
siendo el formato de los subtitulos (xxx) *.sub o *.srt
Para convertir ficheros .vob a .avi

  • Con compresion ffmpeg -i archivo.vob -f avi -vcodec mpeg4 -b 800 archivo.avi

  • Sin compresion ffmpeg -i archivo.vob -f avi -vcodec copy archivo.avi

Otras herramientas utiles:
# aptitude install subtitleeditor
# aptitude install audacity
 

Video, DVD

Configuración de sudo

Autorizamos algunos usuarios a realizar tareas administrativas
# vi /etc/sudoers

# DEFAULTS
# env_reset : resetea las variables de entorno antes de ejecutar
# insults : cuando te equivocas de contraseña
#+    te "insulta" irónicamente
# timestamp_timeout=5 : una vez pones la contraseña correctamente,
#+    no te la vuelve a pedir en 5 minutos (0 : pedir siempre)
# lecture=once : solo te avisa sobre la responsabilidad una vez por sesión
# passwd_tries=2 : permite 2 intentos para la contraseña
# rootpw : pide la clave de root en vez de la del usuario

Defaults env_reset, insults, timestamp_timeout=5, lecture=once, passwd_tries=2

# User alias specification
User_Alias ADMINS=guimi

# Cmnd alias specification
Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/dpkg, /usr/bin/aptitude
Cmnd_Alias APAGADO = /sbin/shutdown, /sbin/halt, /sbin/reboot
Cmnd_Alias RED = /usr/bin/kismet, /sbin/iwlist, /sbin/ifuop, /sbin/ifdown, /sbin/wpa_cli
Cmnd_Alias PROPIOS = /root/bin/SCRIPT1

# User privilege specification
root	ALL=(ALL) ALL
# Si el usuario admin esta en el grupo 'sudo' no le pedira clave
admin	ALL=(ALL) ALL

# Indicamos expresamente que no solicite clave para estos comandos
ADMINS ALL= NOPASSWD: APT
ADMINS ALL= NOPASSWD: APAGADO
ADMINS ALL= NOPASSWD: RED
ADMINS ALL= NOPASSWD: PROPIOS

sudo