Blog de Cymo REABIERTO a petición de los colegas

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.