<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>Introduction</title>
<meta name="GENERATOR" content=
"Modular DocBook HTML Stylesheet Version 1.7">
<link rel="HOME" title=" LPRng Reference Manual" href=
"index.htm">
<link rel="PREVIOUS" title="Notes, warnings, and examples"
href="x126.htm">
<link rel="NEXT" title="Additional Resources " href=
"maillist.htm">
</head>
<body class="CHAPTER" bgcolor="#FFFFFF" text="#000000" link=
"#0000FF" vlink="#840084" alink="#0000FF">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border=
"0" cellpadding="0" cellspacing="0">
<tr>
<th colspan="3" align="center">LPRng Reference Manual: 24
Sep 2004 (For LPRng-3.8.28)</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a href=
"x126.htm" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom">
</td>
<td width="10%" align="right" valign="bottom"><a href=
"maillist.htm" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="LEFT" width="100%">
</div>
<div class="CHAPTER">
<h1><a name="INTRODUCTION"></a>Chapter 1. Introduction</h1>
<div class="TOC">
<dl>
<dt><b>Table of Contents</b></dt>
<dt>1.1. <a href="introduction.htm#SECFEATURES">What is
<b class="APPLICATION">LPRng</b>?</a></dt>
<dt>1.2. <a href="maillist.htm">Additional
Resources</a></dt>
<dt>1.3. <a href="x216.htm">Frequently Asked
Questions</a></dt>
<dt>1.4. <a href="x225.htm">License, Copyright, and
Disclaimer</a></dt>
<dt>1.5. <a href="x232.htm">Commercial Support</a></dt>
<dt>1.6. <a href="x237.htm">Web Site</a></dt>
<dt>1.7. <a href="secftp.htm">FTP Sites</a></dt>
<dt>1.8. <a href="x277.htm">Mailing List</a></dt>
<dt>1.9. <a href="faqref.htm">PGP Public Key</a></dt>
<dt>1.10. <a href="x291.htm">References and
Standards</a></dt>
</dl>
</div>
<p>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 <span class="emphasis"><i class=
"EMPHASIS">storing</i></span> or <span class="emphasis"><i
class="EMPHASIS">spooling</i></span> a file, and then
transferring it to the printer in a timely manner. In the
classical <span class="emphasis"><i class=
"EMPHASIS">multi-user</i></span> systems, each user expects
to share a common printer with one or more users; the print
<span class="emphasis"><i class=
"EMPHASIS">spooling</i></span> system provides arbitration
and sharing of the printer among the various users. In a
<span class="emphasis"><i class="EMPHASIS">network</i></span>
based multi-user system, there may be one or more printers
shared by multiple users on many different systems. The print
<span class="emphasis"><i class=
"EMPHASIS">spoolers</i></span> will need to cooperate to
provide print services to the users in a simple an
predictable manner.</p>
<div class="SECT1">
<h1 class="SECT1"><a name="SECFEATURES">1.1. What is <b
class="APPLICATION">LPRng</b>?</a></h1>
<p>The <b class="APPLICATION">LPRng</b> print spooler
software was developed to be robust, reliable, secure,
scalable, and portable. 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. <b class="APPLICATION">LPRng</b> provides
a highly flexible configuration system that allows it to
perform optimally in all of these environments.</p>
<p>The <b class="APPLICATION">LPRng</b> software has three
components: the <b class="APPLICATION">lpd</b> print
spooler and the user client applications <b class=
"APPLICATION">lpr</b>, <b class="APPLICATION">lpq</b>, <b
class="APPLICATION">lprm</b>, etc.; the IFHP print filter
(<b class="APPLICATION">ifhp</b>) which is used to convert
jobs into a suitable for a particular printer, and the the
LPRngTool Graphic User Interface (<b class=
"APPLICATION">lprngtool</b>) which provides a simple and
easy to use configuration and monitoring tool for the <b
class="APPLICATION">LPRng</b> print spooler.</p>
<p><b class="APPLICATION">LPRng</b> mimics many of the
features of the <span class="emphasis"><i class=
"EMPHASIS">vintage</i></span> or <span class="emphasis"><i
class="EMPHASIS">legacy</i></span> Berkeley (University of
California - Berkeley) Line Printer (LPR) package found on
Berkeley derivatives of the Unix operating system. <b
class="APPLICATION">LPRng</b> 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 <b class=
"APPLICATION">lpr</b>, <b class="APPLICATION">lpc</b> and
<b class="APPLICATION">lprm</b> 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.</p>
<p><b class="APPLICATION">LPRng</b> started life at the
University of Waterloo in 1986 as PLP (Public Line
Printer), a replacement for the original BSD <b class=
"APPLICATION">lpd</b> code. This was a one-shot effort by
the author, Patrick Powell, to develop freely redistributed
code without the restrictions of the BSD/AT&T license
and would allow non-licensed sites to fix and patch
problems. From 1988 to 1992 individuals and groups added
features, hacked, slashed, and modified the PLP code,
coordinated largely by Justin Mason (<code class=
"EMAIL"><<a href=
"mailto:jmason@iona.ie">jmason@iona.ie</a>></code>) who
started the <b class="APPLICATION">LPRng</b> mailing
list.</p>
<p>In 1992 while at San Diego State University Prof. Powell
redesigned and reimplemented the PLP code and named the
result <b class="APPLICATION">LPRng</b>. The goals of the
<b class="APPLICATION">LPRng</b> 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.</p>
<p>In 1999 the code base for <b class=
"APPLICATION">LPRng</b> was again reorganized in order to
provide a common method for running on non-UNIX platforms
such as Microsoft Windows NT, Apple Rhapsody, and embedded
systems.</p>
<p>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 <b class=
"APPLICATION">LPRng</b>. For example, <b class=
"APPLICATION">LPRng</b> clients such as lpr, lprm, lpc, and
lpq can run as ordinary users programs, the lpd server can
run as a non-root user once a network port has been opened,
and all text formatting operations done by <b class=
"APPLICATION">LPRng</b> use a very restricted and highly
secure version of the <b class="APPLICATION">snprintf</b>
function.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border=
"0" cellpadding="0" cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"><a href=
"x126.htm" accesskey="P">Prev</a></td>
<td width="34%" align="center" valign="top"><a href=
"index.htm" accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"><a href=
"maillist.htm" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Notes,
warnings, and examples</td>
<td width="34%" align="center" valign="top"> </td>
<td width="33%" align="right" valign="top">Additional
Resources</td>
</tr>
</table>
</div>
</body>
</html>
syntax highlighted by Code2HTML, v. 0.9.1