cups for Debian ---------------------- If you found a problem, please read HOWTO_BUGREPORT.txt and report me via Debian Bug Tracking System. -- Kenshi Muto kmuto@debian.org --------- This package contains the Common UNIX Printing System(tm), or CUPS(tm) for short. CUPS is a new printing system for Unix that acts as a substitute for System V or BSD printing systems; it supports a more comprehensive driver model, more protocols, and Web administration, among other things. Internally, CUPS uses the new Internet Printing Protocol (IPP) described in RFCs 2565 through 2569. The terms "CUPS" and "Common UNIX Printing System" are trademarks of Easy Software Products, the author of the system. This package is a derivative of the CUPS system, modified for Debian and possibly containing modifications and fixes that are not present in the standard CUPS package. For a comprehensive list of changes from the original source, see the diff file from the source package. For more information about the legal stuff surrounding this package, see the Debian copyright file or the CUPS Web site (www.cups.org). After installation, CUPS is pretty close to being ready to go. The last step is to add administrative access; the "lpadmin" group has been created and granted administrative rights to CUPS. You may need to add users to this group in order to add printers, modify settings, etc. By default, the root user has been granted this permission, but you should only use the root user on the local system. The printers can be added with either the lpadmin program or the web interface, which is located at http://localhost:631/admin by default. Backend Configuration --------------------- CUPS supports serial, parallel, USB, SCSI, IPP, HTTP, Socket and Samba for its backend. But unfortunately, some backends cause a trouble. For example, serial backend confuses and won't stop when non printer device connects serial port. Parallel backend is more terrible for PPC, it may cause kernel crash (kernel bug, sigh). So, CUPS setting puts serial and SCSI off from backend by default. And if you use PPC, parallel backend is off also. If you want to use these backends, you can configure by using 'dpkg-reconfigure cups'. SSL Support ----------- CUPS supports SSL via the OpenSSL toolkit, but licensing conflicts between OpenSSL's license and the GPL make this combination difficult to use, even though the CUPS license itself allows this. A competing library, GNU TLS, has an OpenSSL compatibility layer that could work with these packages, but the compatibility library is licensed under the GNU GPL, which could conflict with the license of certain programs that support CUPS. Therefore, the cups packages as shipped do not support SSL. It is possible to build the packages yourself with SSL support. You can either use the OpenSSL libraries or GNU TLS's OpenSSL compatibility library. Just set an environment variable: "CUPS_OPENSSL" for OpenSSL support, or "CUPS_GNUTLS" for GNU TLS support, and make sure you have the proper development packages installed (libssl-dev for OpenSSL or libgnutls7-dev for GNU TLS). PLEASE NOTE: If you build packages with SSL support and distribute them, you are responsible for making sure you do not violate the licenses of any of the software you distribute. Important Security Notes ------------------------ - By default, cups is configured to only allow connections to printers from localhost, effectively disabling network printing. The previous default was to allow anyone to connect to printers from any location. You can change these defaults by editing /etc/cups/cupsd.conf; the access controls are at the end of the file. Be sure you only allow access from the locations you trust, or require authentication. - CUPS used to support a file backend that was handled internally by cupsd. This was only intended to be used for testing filters, and not in production use, as it can be a security risk and will drop jobs under certain circumstances. In keeping with that, the file "backend" has been renamed to "test", and the lpadmin command no longer rewrites bare path URIs (either to "file:" or "test:"). If you need a backend that dumps a completed job to a file on the filesystem, you should write a separate backend and put it in /usr/lib/cups/backend. See the CUPS documentation for information on how to do this. - To relieve the burden of local authentication somewhat, CUPS uses special tokens called "certs" that are passed between client and server. In normal CUPS installations, these are stored in /etc/cups/certs. However, this location violates Debian policy, as the certs are generated and not available to edit. Thus, the real certs are now stored in /var/spool/cups/certs, with a symlink at /etc/cups/certs for compatibility. Drivers ------- The CUPS software includes generic drivers for several brands of printers. At the moment, this includes HP LaserJets and DeskJets, various Epson and Okidata printers, and Dymo label printers. There are also other packages containing CUPS printer drivers. If any of those were written explicitly for your printer, chances are that it will support your printer better than the generic drivers that ship with CUPS. I try to keep the package Suggestions current regarding popular CUPS driver packages; to see this list, run this command: apt-cache show cups | grep Suggests PostScript printers often ship with PPD files supplied by the printer manufacturer. Any valid PPD for a PostScript printer is a valid CUPS driver. To enable them for use with CUPS, copy the PPDs into /usr/share/cups/model; they should then be available for use with lpadmin -m and the Web interface for adding printers. If you find a CUPS driver that isn't packaged for Debian and you'd like it to be, you can contact me and let me know where the driver is, and I'll get to it as soon as I can. Or, you can package them yourself. See below for details. Packaging --------- There are five packages provided by CUPS: the server, the primary command-line client programs, the BSD client and server compatibility programs, and the library and development packages. The CUPS BSD commands and cups-lpd daemon are separated into their own package (cups-bsd); the hope is to make it possible to run CUPS and some other BSD-style printing system (such as lpr) side-by-side for testing purposes. If you encounter any trouble doing this, file a bug. It's known that CUPS conflicts with LPRng, since LPRng provides some System V printing commands as well; this problem will (hopefully) be dealt with in time. The cups-lpd daemon is disabled by default. To enable it, run 'dpkg-reconfigure cups-bsd' and follow the prompts. You will need a compatible inetd daemon installed (not xinetd). Add-ons for CUPS (such as drivers, backends, clients, etc.) should depend on the proper packages. If your package is CUPS-specific, you should name it so it can be easily identified as a CUPS package, with names such as: cups-driver-foo (for a driver for Foo printers) cups-backend-bar (for a backend to print to Bar printers) cups-client-baz (for a client module to hook Baz into CUPS) If you feel your driver/backend/client/whatever package is popular enough that most CUPS users would be interested in it, please file a wishlist bug against cups requesting that it be added to the Suggests line for cups. Other Add-Ons ------------- I'm also collecting add-ons - filters, backends, etc. - and putting them in the "examples" directory with the rest of the cups package documentation files. Check there for some interesting filters and backends. To install a filter from the filters directory, copy the filter itself into /usr/lib/cups/filter and the associated .types and .convs files into /etc/cups. Then restart cupsd, and you should be ready to use it. If you have a filter or backend you'd like to contribute, but don't think it's big enough to warrant its own package, file a wishlist bug and attach your script. If it's a filter, send along a .convs and .types file as well. Integration with Samba ---------------------- It is possible to configure Samba to share CUPS printers to Microsoft clients. There are two ways to do this: 1. Recent versions of Samba have direct CUPS support, including Debian's. With this present, you can configure Samba as follows: [global] printing = cups printcap name = cups 2. If, for some reason, you don't want to use Samba's native CUPS support, you can configure Samba to use System V printing. This can be done by adding the following information to Samba's smb.conf (/etc/samba/smb.conf on Debian): [global] printing = sysv printcap name = lpstat [printers] lpq command = /usr/bin/lpstat %p lprm command = /usr/bin/cancel %p-%j print command = /usr/bin/lp -d%p -oraw %s ; /bin/rm -f %s This method will require installation of the cups-client package. For more tips on integration with Samba, check out the man page for cupsaddsmb, which is part of the cups-client package. Miscellaneous Tips ------------------ - CUPS has support for browsing, which uses broadcast traffic to auto-discover other CUPS servers and printers and make them available to clients. In the default configuration, cupsd will accept browse packets in the CUPS format from other CUPS servers, but will not send any. If sending browse packets is turned on, it may trigger demand dialers and increase traffic on the network. To help prevent this, set the BrowseAddress parameter to only advertise CUPS printers on specific interfaces. As a potentially more robust option, CUPS also supports SLP (Service Location Protocol). - You may encounter some problems using the "enable" command under bash, as "enable" is a builtin there. As a workaround, I've created the "cupsenable" command, which acts exactly as "enable" does. There are also "cupsdisable", "cupsaccept", and "cupsreject" commands for consistency. - There is an online database with PPDs for lots of different printers at http://www.linuxprinting.org/. These will often require the "cupsomatic" utility; this can be found in the foomatic-bin package. Another case, some PPDs require the "foomatic-rip" utility; this can be found in the foomatic-filters package (this package will be installed when you install foomatic-filters-ppds package). - Default location of pid file is /var/run/cups/cupsd.pid. If you'd like to change this, you can modify by using "PidFile " directive at your /etc/cups/cupsd.conf. - When using the LPD support provided by cups-bsd, you need to ensure debconf knows that you want LPD support enabled. Otherwise LPD support will be disabled when you upgrade cups-bsd. To check, run this command: $ debconf-get-settings |grep setuplpd which should return: cups-bsd cups-bsd/setuplpd boolean true Enjoy! -- Jeff Licquia and Kenshi Muto