PreguntasLinux

Versión Completa: [HOWTO] Cups en Solaris 10
Actualmente estas viendo una versión simplificada de nuestro contenido. Para ver la versión completa en el formato correcto, dale click aquí
Es un hecho que el antiquísimo sistema de impresión de unix ya está obsoleto y cada vez más la gente piensa en CUPS como sistema administrador de impresión.
Los viejos lp, lpadmin y compañía ya pueden tener un eterno descanso.

[info]Si bien este howto abarca la instalación de CUPS en Solaris 10 11/06 y 8/07, no dudo que se adaptará excelentemente bien a OpenSolaris.

Para realizar las siguientes tareas necesitaremos el DVD Software Companion de Solaris o bien descargar los paquetes individuales desde:
Solaris 10: http://www.sun.com/software/solaris/free...wnload.xml

Adjunto para otras versiones por si es necesario:
Solaris 9: http://www.sun.com/software/solaris/free...wnload.xml
Solaris 8 2/02: http://www.sun.com/software/solaris/free...wnload.xml

[info]Nótese que hace falta una cuenta MySun, el registro es gratuito.

Es recomendable descargar el paquete Depend-i386.pkgs.tar.bz2 e instalarlo (respetar las dependencias):

Código:
# bunzip2 Depend-i386.pkgs.tar.bz2
# tar xvf Depend-i386.pkgs.tar
# pkgadd -d SFWgcmn
# pkgadd -d SFWungif
# pkgadd -d SFWimlib

luego instalar el resto de los paquetes

Debe instalarse el paquete Printing-i386.pkgs.tar.bz2, en este orden:

Código:
# bunzip2 Printing-i386.pkgs.tar.bz2
# tar xvf Printing-i386.pkgs.tar
# pkgadd -d SFWfltk
# pkgadd -d SFWoslp
# pkgadd -d SFWcups
# pkgadd -d SFWpnm2p
# pkgadd -d SFWxpp


Nótese que EPS Ghostscript ya esta incluido en la instalación de Solaris (vea que existe el binario 'gs' en /usr/sfw/bin)
En este punto, CUPS esta instalado y se encuentra en /opt/sfw/cups.


Vamos a deshabilitar los servicios lp de Solaris, para ello es mejor deshabilitar los servicios, renombrar los binarios y crear links simbólicos a los que provee cups. Aquí hay un script de ejemplo:

Código:
#!/bin/bash
svcadm disable application/print/ipp-listener
svcadm disable application/print/server
svcadm disable application/print/rfc1179
cd /usr/bin
for i in lp lpstat cancel enable ; do
    mv $i $i.old
    ln -s /opt/sfw/cups/bin/$i .
done
cd /usr/sbin
for i in lpadmin lpmove accept ; do
    mv $i $i.old
    ln -s /opt/sfw/cups/sbin/$i .
done
ln -s /usr/sfw/bin/smbspool /opt/sfw/cups/lib/cups/backend/smb


Ahora crearemos el servicio para poder manipularlo mediante SMF.
Primero crearemos el archivo xml necesario, el cual guardaremos en /var/svc/manifest/site/cups.xml:

Código:
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type='manifest' name='site:cups'>

<service name='site/cups' type='service' version='0'>
  <create_default_instance enabled='true' />
  <single_instance />
  <dependency name='paths'
      grouping='require_all'
      restart_on='error'
      type='path'>
    <service_fmri value='file://localhost/opt/sfw/cups/sbin/cupsd' />
    <service_fmri value='file://localhost/opt/sfw/cups/etc/init.d/cups' />
  </dependency>

  <dependency name='network'
      grouping='require_any'
      restart_on='error'
      type='service'>
    <service_fmri value='svc:/network/service' />
  </dependency>

  <dependency
      name='fs-local'
      type='service'
      grouping='require_all'
      restart_on='none'>
    <service_fmri value='svc:/system/filesystem/local' />
  </dependency>

  <property_group name='start' type='method'>
    <propval name='exec' type='astring' value='/opt/sfw/cups/etc/init.d/cups start'/>
  </property_group>
  <property_group name='stop' type='method'>
    <propval name='exec' type='astring' value='/opt/sfw/cups/etc/init.d/cups stop'/>
  </property_group>

</service>

</service_bundle>


Ahora por linea de comandos configuramos el servicio:

Código:
# svccfg
svc:> add site/cups
svc:> select site/cups
svc:/site/cups> addpg start method
svc:/site/cups> addpg stop method
svc:/site/cups> setprop start/exec = astring:"/opt/sfw/cups/etc/init.d/cups start"
svc:/site/cups> setprop stop/exec = astring:"/opt/sfw/cups/etc/init.d/cups stop"
svc:/site/cups> add default
svc:/site/cups> quit


Lo habilitamos:

Código:
# svcadm -v enable svc:/site/cups:default


y le indicamos que utilice el archivo xml que hemos creado:

Código:
#svccfg -v import /var/svc/manifest/site/cups.xml


Verificamos que cups esta funcionando (si no es así, lanzarlo):

Código:
# svcs -a | grep cups


Configuramos la contraseña de root para cups (puede ser distinta del usuario root):

Código:
# /opt/sfw/cups/bin/lppasswd -g sys -a root

esta contraseña se almacena en /opt/sfw/cups/etc/cups/passwd.md5

Vamos a ver en /usr/lib/lp/model/ppd/system/foomatic si existe algún archivo ppd que corresponda a nuestra impresora.
Si existe, lo copiamos:

Código:
# cp /usr/lib/lp/model/ppd/system/foomatic/ejemplo.ppd /opt/sfw/cups/share/cups/model

En algunos casos puede que los archivos ppd estén comprimidos con gzip.

De no existir el driver, se puede utilizar alguno alterno (por lo general los de modelos anteriores funcionan correctamente) o podemos dirigirnos a OpenPrinting.org y elegir el driver que más nos convenga.


También debemos bajar dos scripts de PERL:

Código:
# wget http://www.linuxprinting.org/foomatic-rip
# wget http://www.linuxprinting.org/foomatic-gswrapper


hacer una pequeña modificación en foomatic-rip para agregar el interprete gs de Ghostscript.

Código:
# vi foomatic-rip

buscamos la línea que sigue a continuación y agregamos al final "/usr/sfw/bin":
my $exepath = “NONE/bin:/usr/local/bin:/usr/bin:/bin:/usr/sfw/bin";


guardamos el cambio y movemos ambos archivos al directorio de filtros.

Código:
# chmod 755 foomatic*
# mv foomatic* /opt/sfw/cups/lib/cups/filter/


Abrimos un navegador y escribimos la dirección: http://localhost:631/admin
colocamos root y la contraseña que hemos definido anteriormente.
Agregamos la impresora, configuramos y lanzamos una impresión de prueba.
Se pueden agregar impresoras conectadas al LPT, al USB, de red o compartidas por windows montándolas por samba.

Solo resta agregar las impresoras necesarias, definir la impresora por default y listo.
Disfruta tu coctel Solaris/cups.


Fuentes:
http://www.cups.org
http://blogs.sun.com/DanX/entry/using_cu...server_for
http://www.sun.com/bigadmin/content/subm..._sol10.jsp

Excelente Howto, dragonauta!
A eso le llamo empezar el año con pilas renovadas. 023

Grax
Olvidé agregar la opción para dar marcha atrás a los cambios realizados. Aquí va.

Damos de baja el servicio de cups

Código:
# svcadm disable cups


y luego correr otro script para restaurar los binarios y servicios originales de Solaris:

Código:
#!/bin/bash
cd /usr/bin
for i in lp lpstat cancel enable ; do
    mv $i $i.cups
    mv $i.old $i
done
cd /usr/sbin
for i in lpadmin lpmove accept ; do
    mv $i $i.cups
    mv $i.old $i
done
svcadm enable application/print/ipp-listener
svcadm enable application/print/server
svcadm enable application/print/rfc1179

URLs de Referencia