Acerca del blog ..

Aquí pongo mis pequeñas notas sobre cosas que voy olvidando. Entre las anotaciones puede que tal vez encuentres alguna que otra opinión seguramente equivocada.

Actualizando postgres en debian y derivados

noviembre 26th, 2009 by pcaro

Siempre que se habla de debian, se alaba su paquetería. Y yo estoy de acuerdo de que es uno de los puntos fuertes de la distribución. Hoy me refiero a la facilidad de tener instaladas y conviviendo felices varias versiones de la base de datos postgres. Ya comenté esto en su momento en Instalar postgres 8.2 en jaunty.

Pues el tener dos servidores instalados a la vez, permite la fácil migración de un versión a otra del motor de base de datos. En este caso detallo como migré las bases de datos de mi equipo ubuntu karmic de postgres 8.3 a 8.4.

  1. Primero tener instalados los dos paquetes: postgresql-8.3 y postgresql-8.4.
  2. Determinar en que puerto se ejecuta cada instancia. Esto lo podemos hacer mirando los ficheros /etc/postgresql/8.X/main/postgresql.conf (variable port). En mi caso 5482 y 5433 respectivamente. Lo puedes comprobar con:
    $ sudo netstat -putan | grep postgres
  3. Después lanzar los dos servidores:
    $ sudo /etc/init.d/postgresql-8.3 start
    $ sudo /etc/init.d/postgresql-8.4 start
  4. Finalmente copiar los datos de una versión a otra
    $ sudo su - postgres
    $ pg_dumpall -p 5432 | psql -d postgres -p 5433
  5. Probar que todo ha ido correctamente

Anotado en sistemas, yaco | Sin comentarios »

Añadiendo lenguaje procedural a base de datos postgres: createlang

noviembre 12th, 2009 by pcaro

Postgres 8.3 incluye 4 lenguajes procedurales en la distribución y se pueden instalar más, pero hay que activarlos por base de datos.
Para ello, hay varios métodos (lo clásico es create language) pero los más cómodo es usar createlang.

Usa droplang para eliminar el lenguaje.

Anotado en sistemas, yaco | Sin comentarios »

Mostrar el código de funciones en postgres

julio 7th, 2009 by pcaro

Puede resultar muy util ver el código de algún procedimiento almacenado en postgres. El código de a continuación tomado de Postgresql General Bits de A. Elein Mustain puede resultar muy útil.

CREATE OR REPLACE VIEW showfunctions AS
SELECT
l.lanname,
t.typname || ' = ' || n.nspname || '.' ||
    p.proname || '(' || pg_catalog.oidvectortypes(p.proargtypes) || ')'
AS function_definition,
(SELECT CASE WHEN lanname <> 'c'
    THEN '\n\n'||prosrc ||'\n\n'
    ELSE '\n'||prosrc ||'.so\n\n'
END) AS SOURCE
FROM pg_proc p, pg_type t, pg_namespace n, pg_language l
WHERE p.prorettype = t.oid AND p.pronamespace = n.oid
    AND p.prolang = l.oid;
 
-- Muestra todas las funciones en el schema public ( y cualquier funcion con
-- public en su nombre)
SELECT * FROM showfunctions WHERE function_definition LIKE '%public%';
 
-- Muestra todas las funciones que toman o reciben booleanos
SELECT * FROM showfunctions WHERE function_definition LIKE '%boolean%';

Anotado en sistemas, yaco | Sin comentarios »

Instalar postgres 8.2 en jaunty

junio 30th, 2009 by pcaro

Postgres 8.3 no me permitía crear una base de datos con un encoding distinto a los instalados en mi maquina, y yo debía recuperar una copia de seguridad de una base de datos para la ampliación de unos trabajos que vienen de antiguo.

Si intentaba importar los datos fallaba por el encoding:

# createdb base_datos  -O owner ;
# pg_restore -F c -d base_datos   viernes-27-feb-2009.dump
pg_restore: [archiver (db)] COPY failed: ERROR:  secuencia de bytes no válida para codificación «UTF8»: 0xa2

Y además no me dejaba crear la base de datos con el encoding correcto:

postgres@davinci$ createdb  base_datos -E latin1
createdb: falló la creación de la base de datos:
ERROR:  la codificación LATIN1 no coincide con la configuración regional del servidor es_ES.UTF-8
DETAIL:  La configuración regional LC_CTYPE del servidor requiere la codificación UTF8.

Para poder seguir adelante dos alternativas: cambiar el encoding de mi base de datos (no podía porque tengo otras bases de datos) o instalar postgres 8.2 (debian y derivados permiten tener varios postgres a la vez por paquetería)

De esta forma que me dispuse a descargar los paquetes de haunty: postgresql-8.2 y postgresql-client-8.2

Una vez descargados los paquetes bastó:

pcaro@davinci$ sudo dpkg -i postgresql-client-8.2_8.2.7-1_i386.deb
pcaro@davinci$ sudo dpkg -i postgresql-8.2_8.2.7-1_i386.deb
sudo aptitude hold postgresql-client-8.2
sudo aptitude hold postgresql-8.2

Luego puedes configurar los postgres para que escuchen en distintos puertos o, si solo lo necesitas de forma temporal como yo, simplemente parar el 8.3 y levantar el 8.2 cuando sea necesario.

PD: Gracias a Antonio por la ayuda.

Anotado en linux, sistemas, yaco | 1 Comentario »

Convertir filtros de kmail a filtros sieve

junio 6th, 2009 by pcaro

No hace mucho que dejé de usar POP en mis correos para pasarme al IMAP desconectado de kmail con toda las ventaja que ello supone.

Pero todavía seguía utilizando los mismos filtros en kmail que me ordenan los correos por carpeta. Con este sistema el filtrado se realiza una vez descargado el correo, de forma que, ahora con imap, el kmail tiene que pasar los filtros y actualizar las carpetas en el servidor tras el moviento de correos. Desde luego no es lo más conveniente.

Lo más util que el filtrado del correo se realice en el servidor. De esta forma nuestro correo ya se encuentra organizado accedas con el cliente que accedas al correo (webmail, móviles de última generación, etc). Para ello existen los filtros sieve.

Pero yo ya tenía mis filtros en kmail, de forma que me hice un pequeño programita python que convirtiera mis filtros de kmail en un fichero con los filtros sieve.

No discrimina entre cuentas y solo esta probado (y funciona) con mis filtros simples de moviento de correo, pero lo dejo aquí por si a alguien pudiera resultarle de utilidad.

Para usarlo:

  1. Guardar los filtros de kmail (Preferencias -> Configurar filtros -> Exportar) en un fichero (por ejemplo filtros_pcaro.ini)
  2. Ejecutar python kmail_to_sieve.py  filtros_pcaro.ini > filtros.sieve Por la salida de error indicará que no ha podido convertir.
  3. Examinar filtros
  4. Subir y activar desde el mismo kmail (Preferencias -> Gestionar guiones de Sieve.

Podeís descargarlo desde aquí: kmail_to_sieve

PD: Arreglado el enlace. Gracias Helder por avisar.

Anotado en linux, Python, sistemas, yaco | Sin comentarios »

Grabar CD de 800MB en linux

julio 23rd, 2008 by pcaro

Tenía que grabar unos datos. Eran 730MB aproximadamente, con un CD habitual (700MB) iba a ser imposible, pero tenía por ahí un CD philips de 90 minutos (800MB). Y teniendo ese CD ¿por qué usar un DVD que son más caros?
Mi sorpresa llega cuando el k3b (que uso habitualmente) se niega a grabar, ¡por falta de espacio! a pesar de que le indico (graicias google) que use el modo DAO en la interfaz. Total que a grabar desde la consola :-D

Aquí dejo el comandito como anotación para tenerlo de cerca la próxima vez:

cdrecord -dev=/dev/scd0 -v -overburn -dao -speed=4 -data -eject /tmp/LaBodademiNovia.iso

La opción necesaria además de “DAO” es “overburn”. Podéis ver como cdrecord sí reconoce todo el tamaño del disco como indica la línea:

Total size:      810 MB (80:18.14) = 361361 sectors

ACTUALIZACIÓN: Ahora veo una opción en las preferencias de k3b para pervitir el sobregrabado. Si es que k3b no me podía fallar :-D

Anotado en sistemas | 1 Comentario »

Convertir disco vmware

mayo 11th, 2008 by pcaro

pcaro@davinci$ vmware-vdiskmanager -r Windows\ XP\ Professional.vmdk -t 0 WindowsXPProfessionalUnico.vmdk
Creating disk ‘WindowsXPProfessionalUnico.vmdk’
Convert: 100% done.
Virtual disk conversion successful.

Anotado en sistemas | Sin comentarios »

« Anotaciones Previas Anotaciones siguientes »