Next Previous Contents

5. Which spooling software?

Until recently, the choice for Linux users was simple - everyone ran the same old lpd lifted mostly verbatim out of BSD's Net-2 code. Even today, most vendors ship this software. But this is beginning to change. SVR4-like systems including Sun's Solaris come with a completely different print spooling package, centered around lpsched.

Today, I recommend the PDQ system for both simple home users and (in a hybrid pdq/lpd setup) people in many larger environments. It provides both the simplest and most flexible configuration mechanism, and the nicest user utilities (indeed, it's the only one that provides a uniform printer option control vaguely equivalent to the functionality of the Print Setup dialogs in Windows).

5.1 PDQ

PDQ is a non-daemon-centric print system which has a built-in, and sensible, driver configuration syntax. This includes the ability to declare printing options, and a GUI or command line tool for users to specify these options with; users get a nice dialog box in which to specify resolution, duplexing, paper type, etc.

Running all of the filters as the user has a number of advantages: the security problems possible from Postscript are mostly gone, multi-file LaTeX jobs can be printed effectively as dvi files, and so forth.

This is what I now use; I've written driver spec files for my printers, and there are several included with the distribution, so there are plenty of examples to base yours on. I've also written a few tools to automate driver spec generation to help the rest of you.

If you have many users, many printers, or anything else complex going on, I recommend using PDQ as a front-end to LPD-protocol based network printing (you can print via the lpd protocol to the local machine). In many such situations, rather than using BSD's lpd as the back-end, I recommend LPRng:

5.2 LPRng

There are signs that some Linux vendors will shift to providing LPRng, a far less ancient print spooling implementation that is more or less freely available. LPRng is far easier to administer for large installations (read: more than one printer, any serial printers, or any peculiar non-lpd network printers) and has a less frightfully haphazard codebase than does stock lpd. It can even honestly claim to be secure - there are no SUID binaries, and it supports authentication via PGP or Kerberos.

LPRng also includes some example setups for common network printers - HP LaserJets, mainly, that include some accounting abilities. If you'd like more information on LPRng, check out the LPRng Web Page.

LPRng is distributed under either the GPL or an Artistic license. (Previously that was not so, but it is now.)

5.3 PPR

PPR is a Postscript-centric spooler which includes a rudimentary Postscript parsing ability from which it derives several nice features. It includes good accounting capabilities, good support for Appletalk, SMB, and LPD clients, and much better error handling than lpd. PPR, like every other spooler here, can call Ghostscript to handle non-Postscript printers.

I only recently found out about PPR; I don't know of anyone who has tried it. It was written by, and is in use at, Trinity College. The license is BSD-style; free for all use but credit is due.

5.4 CUPS

One interesting newcomer on the scene is "CUPS", an implementation of the Internet Printing Protocol, an HTTP-esque RFC-defined replacement protocol for the venerable (and klunky) lpd protocol. The primary implementation of this is the open-source component of the commercial product "Easy Print", which consists of an intelligent spooler (CUPS) and a collection of commercial printer drivers built around Ghostscript (ESP Print Pro).

CUPS, the spooler, is distributed under a GPL license. ESP Print Pro is a binary-only commercial product (except for the included spooler, which is also available separately as the GPLed CUPS).


Next Previous Contents