lunes, 31 de marzo de 2008

VLC:No suitable decoder module for fourcc `XVID'

Recientemente he tenido problemas para la reproducción de archivos avi, codificados con xvid.

Usando el comando: vlc -vvv --no-plugin-cache
Obtenia el siguiente error: cannot load module `/usr/lib/vlc/codec/libffmpeg_plugin.so' (libmp4v2.so.0: cannot open shared object file: No such file or directory).

Para ver el software instalado ejecutamos como usuario normal:
zypper se libmp4


El problema es debido a que tengo dos repositorios para el paquete libmp4v2, el de vlc y el packman, las versiones en cada uno de ellos es diferente.

La versión instalada procede del repositorio del packman libmp4v2 (version 1.5.0.1-10.pm.0) .
la desinstalamos como root y con el comando
zypper rm libmp4v2

Procedemos a instalar la versión del repositorio de VLC con:
zypper in libmp4v2-0

Realizando estos pasos deberiamo poder visualizar correctamente los archivos avi en el reproductor VLC

viernes, 21 de marzo de 2008

Init: cambiar el runlevel inicial

En Opensuse 10.3 podemos cambiar el runlevel por defecto (que suele ser 5) a cualquier otro. Para ello:
1) editaremos el fichero /etc/inittab.
2) El runlevel por defecto viene definido en una linea como esta:
id:5:initdefault


En lugar del 5 pondremos el runlevel que deseemos:
runlevel 0: System halt
runlevel 1: Single user mode
runlevel 2: Local multiuser sin red
runlevel 3: full multiuser con red
runlevel 4: no se usa
runlevel 5: full multiuser con red y xdm (entorno gráfico)
runlevel 6: system reboot


Los runlevels habituales son el 5 con el que se carga el entorno grafico y el 3.

miércoles, 12 de marzo de 2008

Procedimiento para dar permisos a un usuario sobre un conjunto de tablas

El objetivo es realizar un procedimiento que reciba como argumento un usuario, y cuya función sea dar permisos de lectura a todas nuestras tablas, salvo aquellas por ejemplo que comiencen por TMP.
Es posible añadir condiciones adcionales para filtrar las tablas a las que queremos dar permisos, de modo que sólo tablas con un nombre determinado sean las que tengan permisos de lectura.

Para ello usamos un CURSOR y lo recorremos mediante un blucle.

create or replace
PROCEDURE permisos( USER IN VARCHAR2) AS
CURSOR tablas IS
select table_name from user_tables where table_name not like 'TMP%'
table_name VARCHAR2(255);

BEGIN
OPEN tablas;
FETCH tablas INTO table_name;
WHILE tablas%found
LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON ' || table_name || ' TO "' || USER || '"';
FETCH tablas INTO table_name;
END LOOP;
CLOSE tablas;
COMMIT;

END;

De esta forma y con tan solo llamar a una función podemos automatizar el otorgar privilegios a otros usuarios.