UNIX systems generally , and Linux systems in particular, support a large number of printing packages, most of which implement the LPD protocol. In 2001, the three most popular printing packages for Linux are:
The original BSD LPD server ” This package has long been the standard in Linux, and many Linux programs assume that BSD LPD utilities are installed. For this reason, both LPRng and CUPS emulate the BSD LPD tools, although to differing extents. BSD LPD is very simple in its access control mechanisms, which is one of the reasons many distributions have begun shifting away from it.
The LPRng package ” This system, headquartered at http://www.astart.com/lprng/LPRng.html, is designed as a more-or-less direct replacement for the BSD LPD system. It deviates from the BSD LPD system in some of its configuration file formats, but retains the BSD LPD format in other configuration files. It doesn't alter the basic printing model, which requires that the application know something about the printer to which it's printing (in Linux, most applications assume the printer is a PostScript model).
The Common UNIX Printing System (CUPS) ” This system, whose home page is http://www.cups.org, is a more radical deviation from the BSD LPD system than is LPRng. Like LPRng, CUPS provides workalike commands for some of the common tools, but CUPS uses an entirely different set of printer configuration files. CUPS also provides information on the printers it drives to applications that are written for CUPS. (To use this feature over a network, both the client and the server must run CUPS.) In addition to the LPD protocol, CUPS supports a newer network printing protocol, IPP.
| || |
Other printing systems are common on some other UNIX-like OSs. For instance, versions of UNIX derived from SysV often use a different system. The SysV printing system can interoperate with the BSD system, but it uses different commands, such as lp rather than lpr to submit a print job.
Table 9.1 details the printing systems that ship with several popular Linux distributions. Of course, you can install a printing system on a distribution even if that printing system doesn't ship with the distribution, but you may need to put additional effort into configuring the software. Getting the software to start up automatically may be a particular challenge, as described in Chapter 4, Starting Servers.
| || |
The distinction between "standard" and "alternative" printing systems in Table 9.1 is sometimes very slim. For instance, Mandrake gives you the option at installation time of using LPRng or CUPS. The default choice is LPRng, but it takes only a single mouse click to change this to CUPS. Debian doesn't install any printing system by default, so listing BSD LPD as the standard is entirely arbitrary.
Table 9.1. Standard Printing Software with Several Linux Distributions
| Distribution || Standard Printing System || Alternative Printing Systems |
| Caldera OpenLinux Server 3.1 || CUPS || none |
| Debian GNU/Linux 2.2 || BSD LPD || LPRng, CUPS |
| Linux Mandrake 8.1 || LPRng || CUPS |
| Red Hat Linux 7.2 || LPRng || none |
| Slackware Linux 8.0 || BSD LPD || none |
| SuSE Linux 7.3 || LPRng || CUPS |
| TurboLinux 7.0 || LPRng || none |
Most Linux documentation has been written with a BSD LPD system in mind. Most of this documentation applies almost as well to an LPRng system, although the details of how to restrict access to a networked print server differ between the two, as the following sections illustrate . Most of the generic Linux printing documentation applies only loosely to CUPS, because CUPS uses entirely different configuration files.