Blog de Cymo - un poquito abandonado

domingo, 27 de febrero de 2011

Instalando OKI MC351 en Ubuntu 10.04 Lucid

Me ha dado más guerra de lo que esperaba. En mi caso está conectada a la intranet con una ip fija (192.168.33.55.18) asignada por DHCP.

Suponiendo que ya tenemos CUPS instalado y funcionando, abrir en el navegador http://localhost:631

Añadir la impresora, y como URI poner socket://IP-impresora:9100 (IP-Impresora la que tengamos, claro, por ej: 192.168.33.55.18).

Seleccionar el archivo PPD del DVD de la impresora, en mi caso: /media/cdrom/Drivers/ESP/PS/amd64/OKM351BA.PPD


Y claro, no funciona. Error porque el socket no es un URI válido.
$ sudo lpinfo -v

Y no me sale el interfaz socket. ¿?

Solución: crear un enlace al programa/librería socket de cups, que no viene activado por defecto. Y no acabo de entender por qué.

$sudo ln -s /usr/lib/cups/backend-available/socket /usr/lib/cups/backend/socket

Y reiniciar cups:

$sudo service cups restart

Con esa modificación, ya puedo crear la impresora. Pero no imprime. Revisando los logs de cups, veo
/usr/lib/cups/backend/socket: Permission denied

???

Reviso, y tiene permisos de ejecución.

Investigo un poco:

$ sudo dmesg -c
$ sudo aa-complain cups

Vuelvo a imprimir, y claro, el mismo error, pero ahora...

$dmesg
Operation="exec" pid=5529 parent=5519 profile="/usr/sbin/cupsd" requested_mask="::x" denied_mask="::x" fsuid=7 ouid=0 name="/usr/lib/cups/backend-available/socket"

Resulta que App Armor no le deja ejecutarse al script (el backend de cups no está habilitado en App Armor).

Solución 1: en vez de hacer un enlace simbólico para el interfaz socket, hacer un copy:

$ cp /usr/lib/cups/backend-available/socket /usr/lib/cups/backend/socket

Debería funcionar sin más.

Solución 2 (la que he utilizado): editar el perfil de cups en apparmor:

$gksu gedit /etc/apparmor.d/usr.sbin.cupsd

En la línea 84, aprox, vemos:

/usr/lib/cups/backend/socket ixr,
/usr/lib/cups/backend/usb ixr,


Lo cambiamos, añadiendo una línea:

/usr/lib/cups/backend/socket ixr,
/usr/lib/cups/backend-available/socket ixr,
/usr/lib/cups/backend/usb ixr,


Reiniciar app armor y cups (por si acaso):

$sudo service apparmor restart
$sudo service cups restart

Y a imprimir.