Overview of the Common UNIX Printing System
Printing within UNIX has historically been done using one of two software packages: the Berkeley Line Printer Daemon (LPD) and the AT&T Line Printer (LP) system. These print spoolers were designed in the 1970's only for printing text to line printers. Over the years vendors have tried adding support for other types of printers with mixed success, and replacements like LPRng are little more than a new coat of paint over an aging text spooling interface.
The Common UNIX Printing System (CUPS) is a completely new printing environment which is designed to handle printing of modern document files to today's printers while supporting existing printing commands and applications transparently.
On the outside, CUPS is built upon the Internet Printing Protocol (IPP) which provides advanced network/Internet printing capabilities. On the inside, CUPS provides an extensible system interface that allows new printers, document formats, and interfaces to be supported quickly, easily, and transparently.
The Administrator's Perspective
Printing used to be the bane of every system administrator. With CUPS, the administrator immediately has command-line, WWW, and GUI interfaces to the print server and printer drivers. Point your Web browser at the print server's administration page and you'll have the pleasure of configuring printers using simple wizards, which guide you through every step of the process. If you prefer to do things from the command line, CUPS provides two simple tools for adding and configuring your printers.
Imagine setting up a laser printer queue with a simple command such as
lpadmin -p DeptLaserJet -v ipp://126.96.36.199/ipp -E -m laserjet.ppd
This simple command configures a networked HP LaserJet printer called "DeptLaserJet." The printer is on the network and using IPP ("-v ipp://188.8.131.52/ipp"), is enabled by default ("-E"), and uses the sample HP LaserJet printer driver supplied with CUPS ("-m laserjet.ppd").
If you have multiple "client" computers that will be printing through your print server, CUPS even makes that job easy; just add the broadcast address for your network to the CUPS configuration file, for example:
Once configured, all clients on the same subnet will automatically see the printers you have defined on the server. You don't have to configure every client, or use unreliable schemes to pull or push configuration files on the client machines, you just let CUPS do the work for you!
If you have a complex network with multiple subnets, you just need to set up a few clients to relay the printer information from the server to the local subnets. The clients (or other servers) merely act as repeaters for the main server, again limiting the amount of work you have to do.
This automatic printer sharing offers another additional feature not found in any other printing solution: implicit classes. Implicit classes are groups of identical network printers that each client creates automatically. When a user prints to an implicit class, the client chooses the next available server in the list and forwards the job for printing. If a server is overloaded or goes down, the client will use another server automatically. Thus, implicit classes provide automatic load balancing and fail-safe operation, and you don't have to do a thing!