LPRng-HOWTO: Introduction

Next Previous Contents

## 1. Introduction

Printing is one of the essential services provided by computer systems. Users want reliable and easy to use methods of printing that require a minimum amount of effort to used and understand. On single user systems with a directly attached printer they perceive that the printing process is simply a matter of storing or spooling a file, and then transferring it to the printer in a timely manner. In the classical multi-user systems, each user expects to share a common printer with one or more users; the print spooling system provides arbitration and sharing of the printer among the various users. In a network based multi-user system, there may be one or more printers shared by multiple users on many different systems. The print spoolers will need to cooperate to provide print services to the users in a simple an predictable manner.

The LPRng print spooler software was developed to a flexible and scalable approach to each of these printing problems. It has been used since 1988 in extremely demanding academic printing environments such as University of Minnesota, MIT, and Rutgers, commercial companies such as Dow Jones and Abbot Pharmaceuticals, as well as being distributed with Linux, FreeBSD, and other systems. Each of these environments has a unique set of problems, demanding various configuration and administrative capabilities. For example, the simple single user system with a single or limited number of printers requires easy configuration and simple diagnostic procedures, while the network based printing system requires highly robust error logging, authentication, and failover support.

This document is structured to first provide an overview of the LPRng printing system, and then a quickstart guide for single user systems with a simple printer. This includes printer hardware and Operating System specific setup descriptions. Next, more complex configurations are described, and their management and configuration are outlined. Next, an extremely detailed description of the LPRng print spooling components and their functionality is provided. Finally, an index to the various features and functions of LPRng is provided.

## 1.1 What is LPRng?

LPRng is a print spooling system. It was designed to mimic the Berkeley (University of California - Berkeley) Line Printers (LPR) package, first found on Berkeley derivatives of the Unix operating system. LPRng will print a document with little or no knowledge of the content or special processing required to print the document on a stand-alone machine or in a distributed printing environment. New (as compared to Berkeley LPR) features include: lightweight `lpr`, `lpc` and `lprm` programs, dynamic redirection of print queues, automatic job holding, highly verbose diagnostics, load balancing queues; enhanced security (SUID not required in most environments), and easy configuration.

LPRng started life at the University of Waterloo in 1986 as PLP (Public Line Printer), a replacement for the original BSD LPD code. This was a one-shot effort by the author, Patrick Powell, to develop code that could be freely redistributed without the restrictions of the BSD/AT&T license and would allow non-license sites to fix and patch problems that they were having with print spooling. From 1988 to 1992, various individuals and groups added features, hacked, slashed, and modified the PLP code, coordinated largely by Justin Mason (`<jmason@iona.ie>`), who started the LPRng mailing list (see More Information).

In 1992 while at San Diego State University Prof. Powell redesigned and reimplemented the PLP code and named the result LPRng. The goals of the LPRng project were to build a server system that was as close to user abuse proof as possible, that would provide services limited only by the inherent capacities of the support system, RFC1179 compliant, and with extensive debugging capabilities to allow quick and easy diagnostics of problems. Over the period from 1994-1999, LPRng users have suggested extensions, provided patches, and added facilities.

In early 1999 the code base for LPRng was reorganized in order to provide a common method for running on non-UNIX platforms such as Microsoft Windows NT, Apple Rhapsody, and embedded systems.

As a side effect of this work, many security problems that could develop were identified and steps taken to ensure that they were not present in LPRng. For example, LPRng clients such as lpr, lprm, lpc, and lpq run as ordinary users programs, and even the lpd server can run as a user once a network port has been opened. Bounds checking is performed on all input and formatting (for example, snprintf() rather than sprintf() is used), as well as other preventive measures where appropriate.

## 1.2 More Information

The main LPRng documentation is the LPRng-HOWTO, which is available in text, HTML, info, and PostScript format. Information about LPRng and the latest release can be found on the LPRng web page:

http://www.astart.com/LPRng.html

There is also a mailing list at `lprng@iona.com`. To subscribe, send an email to `lprng-request@iona.com`. The body should contain only the word `subscribe'. To get off the list later on, repeat the same procedure, but use the word `unsubscribe'.

Several presentations of LPRng and print spooling software have been made at the Large Scale Installation Administrator (LISA) conferences and are in the LPRng distribution and available on web sites. LPRng - An Enhanced Printer Spooler System was presented at the LISA95 conference, and is in the LPRng distribution as LPRng_DOC/LPRng-LISA95.ps. The slides for the LISA97 and LISA98 tutorials on Network Printing and Print Spooling.

## 1.3 Frequently Asked Questions

There is a list of Frequently Asked Questions that appear regularly on the LPRng mailing list. For your convenience, see The Most Frequently Asked Questions.

## 1.4 Copyright

Material included in this document from the LPRng distribution Copyright Patrick Powell 1988-2000, where applicable.

The rights to distribute this document complete or in part are hereby granted for non-commercial purposes. Partial reproductions must acknowledge the source.

Permission to distribute this file together with LPRng and `derived works' (as defined in the LPRng license) is explicitly granted. This is allowed independent of the license under which the software is distributed.

Citing the document is allowed as long as the source is acknowledged.

## 1.5 Disclaimer

THE MATERIAL IN THIS SOFTWARE PACKAGE IS PROVIDED WITHOUT FEE AND AS-IS WITH NO WARRANTY REGARDING FITNESS OF USE FOR ANY PURPOSE. THE AUTHOR AND ALL CONTRIBUTORS ARE NOT LIABLE FOR ANY DAMAGES, DIRECT OR INDIRECT, RESULTING FROM THE USE OF INFORMATION PROVIDED IN THIS DOCUMENT.

## 1.6 Commercial Support

AStArt Technologies provides commercial support and enhancements for the LPRng and other network software. AStArt provides network and system consulting services for UNIX and NT systems, as well as real time and network software.

## 1.7 Web Site

Web Page:

http://www.astart.com/lprng.html

## 1.8 FTP Sites

The software may be obtained from
ftp://ftp.astart.com/pub/LPRng(Main site)

Mirrors:
ftp://ftp.sage-au.org.au/pub/printing/spooler/lprng (AU)
ftp://sunsite.ualberta.ca/pub/Mirror/LPRng/ (CA)
ftp://ftp.informatik.uni-hamburg.de/pub/os/unix/utils/LPRng (DE)
ftp://ftp.uni-paderborn.de/pub/unix/printer/plp/LPRng (DE)
ftp://ftp.iona.ie/pub/plp/LPRng (IE)
ftp://ftp.chembio.ntnu.no/pub/mirrors/LPRng (NO)
ftp://ftp.mono.org/pub/LPRng (UK)
ftp://ftp.cs.columbia.edu/pub/archives/pkg/LPRng (US)
ftp://ftp.cs.umn.edu/pub/LPRng (US)
ftp://ftp.iona.com/pub/plp/LPRng (US)
ftp://uiarchive.uiuc.edu/pub/packages/LPRng (US)
ftp://uabgate.uab.ericsson.se/pub/unix/LPRng(SE)

## 1.9 Mailing List

To join the LPRng mailing list, please send mail to lprng-request@lprng.org with the word 'subscribe' in the BODY.

The LPRng mailing list is archived on
http://www.findmail.com/list/lprng

## 1.10 PGP Public Key

The LPRng distributions have an MD5 checksum calculated, which is then signed with a PGP public key. Here is the key for validating the checksums:

> `

>     Type Bits/KeyID    Date       User ID
>     pub  1024/00D95C9D 1997/01/31 Patrick A. Powell <papowell@astart.com>

>     -----BEGIN PGP PUBLIC KEY BLOCK-----
>     Version: 2.6.3i

>     mQCNAzLygTQAAAEEANBW5fPYjN3wSAnP9xWOUc3CvsMUxjip0cN2sY5qrdoJyIhn
>     qbAspBopR+tGQfyp5T7C21yfWRRnfXmoJ3FVtgToAsJUYmzoSFY08eDx+rmSqCLe
>     rdJjX8aG8jVXpGipEo9U4QsUK+OKzx3/y/OaK4cizoWqKvy1l4lEzDsA2VydAAUT
>     tCdQYXRyaWNrIEEuIFBvd2VsbCA8cGFwb3dlbGxAYXN0YXJ0LmNvbT6JAJUDBRA0
>     XonoiUTMOwDZXJ0BAQ2cBAC7zU9Fn3sC3x0USJ+3vjhg/qA+Gjb5Fi1dJd4solc4
>     vJvtf0UL/1/rGipbR+A0XHpHzJUMP9ZfJzKZjaK/d0ZBNlS3i+JnypypeQiAqo9t
>     FV0OyUCwDfWybgAORuAa2V6UJnAhvj/7TpxMmCApolaIb4yFyKunHa8aBxN+17Ro
>     rrQlUGF0cmljayBBLiBQb3dlbGwgPHBhcG93ZWxsQHNkc3UuZWR1PokAlQMFEDLy
>     gTSJRMw7ANlcnQEBYBYD/0zTeoiDNnI+NjaIei6+6z6oakqO70qFVx0FG3aP3kRH
>     WlDhdtFaAuaMRh+RItHfFfcHhw5K7jiJdgKiTgGfj5Vt3OdHYkeeh/sddqgf9YnS
>     tpj0u5NfrotPTUw39n6YTgS5/aW0PQfO9dx7jVUcGeod1TGXTe9mIhDMwDJI4J14
>     =3Zbp
>     -----END PGP PUBLIC KEY BLOCK-----

> `

Next Previous Contents