Gift Guide

Network Printing


On today's networks it's common to have users running Windows, Apple, Novell, and many versions of Unix. Each operating system has its own printing facility and there is little or nothing in common between them—there is no single system for print spooling. Yet all users want to be able to print, and most of the time they have to share the same printers. The network administrator has to solve this problem as efficiently as possible.O'Reilly's Network Printing shows network administrators a way out of this problem....

See more details below
Other sellers (Paperback)
  • All (11) from $1.99   
  • New (1) from $11.96   
  • Used (10) from $1.99   
Sending request ...


On today's networks it's common to have users running Windows, Apple, Novell, and many versions of Unix. Each operating system has its own printing facility and there is little or nothing in common between them—there is no single system for print spooling. Yet all users want to be able to print, and most of the time they have to share the same printers. The network administrator has to solve this problem as efficiently as possible.O'Reilly's Network Printing shows network administrators a way out of this problem. It details how to set up a network printing system that's based on Linux, but can handle printing from Windows, Novell, Apple, and any version of Unix. To this end, it offers thorough discussions of the Unix printing facility (both LPR and LPRng); Samba's printer sharing; Netatalk, a free implementation of the AppleTalk protocol; and ncpfs, a Linux implementation of the Netware protocols. The book also shows how to get printers to boot correctly on a network, using solutions like bootp and DHCP; how to manage printers remotely using SNMP; and how to set up a network-wide printer configuration repository with LDAP.

This guide shows how to set up a network printing architecture that supports all kinds of clients using Linux machines as print servers. It covers the standard Unix print servers on BSD and System V, LPRng, Samba printing services, and using LDAP as a configuration repository for printers.

Read More Show Less

Product Details

  • ISBN-13: 9780596000387
  • Publisher: O'Reilly Media, Incorporated
  • Publication date: 10/28/2000
  • Series: Network Administration Series
  • Edition number: 1
  • Pages: 304
  • Product dimensions: 7.03 (w) x 9.18 (h) x 0.77 (d)

Meet the Author

Matthew Gast currently works for an advanced wireless network systems company in the Bay Area. Prior to that, he spent several years as an engineer for a series of network security companies. He is the author of 802.11 Wireless Networks: The Definitive Guide, Network Printing, and T1: A Survival Guide.

Todd Radermacher has been working with computer and network technology for the past 15 years, starting with Systems Programmer and Technologist positions at EG & G, and working with the Sandia, Livermore, and Los Alamos Laboratories. Todd moved into the commercial sector in 1994, and since then has held various technical and managerial positions with Silicon Valley start-up companies, primarily focusing on data security.

Read More Show Less

Read an Excerpt

Chapter 5: The Next Generation Berkeley Spooler: LPRng

In this chapter:
Compiling and Installing LPRng
Configuring LPRng
More Fun with Filters

In spite of our great fondness for the Berkeley spooler, we must admit that its age clearly shows--the stock Berkeley spooler has been in use longer than many of its users have been working with computers. Recent developments have led to one potential successor: LPRng. LPRng began life as a PLP, a reimplementation of the Berkeley spooler free of the AT&T Unix license. In the early 1990s at San Diego State University in California, Patrick Powell redesigned and rewrote the PLP code base to build a print server package that could stand up to the rigors of an academic environment.1 Due to the number of changes that were made, the package was renamed LPRng in honor of its venerable ancestor.

LPRng supports the LPD protocol as described in RFC 1179, but adds several nifty features. System V command emulation enables system administrators to replace System V spoolers with Berkeley spoolers while retaining compatibility with System V print commands. Several configuration file options make it easier to manage large sites or improve scalability.

Perhaps the main strength of LPRng, though, is that it can be used to provide a unified interface to the print spooler on several different operating systems. For administrators who are more familiar with the Berkeley spooler, it offers the opportunity to replace System V spoolers with Berkeley spoolers, but such an ambitious project should not be taken lightly.

Compiling and Installing LPRng

The first step in using any software package distributed in source form is compilation and installation. Several modern Linux distributions have, however, adopted LPRng as the standard print spooler. Compiling Your Own Binaries

On other operating systems, especially those descended from System V, building from source is required. LPRng is freely available in source form under the GNU General Public License from The latest stable distribution will be stored as LPRng-stable.tgz. Documentation is distributed from the same site in the file LPRng_DOC-latest.tgz. As this chapter was written, the latest version of LPRng was Unpacking the source

The source is distributed as a compressed tar file. Uncompress and unpack it with tar and gzip, as shown here:

gunzip LPRng-stable.tgz 
tar -xf LPRng-stable.tar 
. . .etc. . .
Configuring for your system

One of our favorite trends in free software for Unix systems is the use of the GNU autoconfiguration package. Software developers include a script that runs many small test programs to determine what library calls are available and where other software is installed. GNU autoconf reduces configuration to running the . /configure script in the top-level source directory. You will see a large number of tests. Here is the start of the procedure on a Sun running Solaris 7:

cd LPRng-3.6.12 
creating cache ./config.cache 
checking host system type... sparc-sun-solaris2.7 
checking target system type... sparc-sun-solaris2.7 
checking build system type... sparc-sun-solaris2.7 
checking for mawk... no 
checking for gawk... no 
checking for nawk... nawk 
checking for perl... /usr/bin/perl 
. . . other tests skipped . . .

By default, LPRng will be installed in /usr/local, but the target can be set by supplying the -bindir option to the configure script, or by editing the Makefile after running the configure script. Compiling the code

The next step is to run make to build the software. Minor confusion exists because GNU make and Berkeley make are slightly different.

With GNU make, run make clean all. For BSD make, specify the BSD Makefile instead by using the -f option on the command line: make -f Makefile.bsd clean all. Here is the beginning of the procedure for Solaris 7:53

gmake clean all 
gmake MAKETARGET=clean src man po 
gmake[1]: Entering directory `/export/home/gast/LPRng-3.6.12' 
gmake -C src clean 
gmake[2]: Entering directory `/export/home/gast/LPRng-3.6.12/src' 
rm -f *.o *.core *.a ? core lpc lpd lpq lpr lprm lpf lpraccnt pclbanner psbanner checkpc lp lpstat lpbanner monitor ../lpd.conf
sserver sclient
gmake[2]: Leaving directory `/export/home/gast/LPRng-3.6.12/src' gmake -C man clean gmake[2]: Entering directory `/export/home/gast/LPRng-3.6.12/man' gmake[2]: Nothing to be done for `clean'. gmake[2]: Leaving directory `/export/home/gast/LPRng-3.6.12/man' gmake -C po clean gmake[2]: Entering directory `/export/home/gast/LPRng-3.6.12/po' gmake[2]: Nothing to be done for `clean'. gmake[2]: Leaving directory `/export/home/gast/LPRng-3.6.12/po' gmake[1]: Leaving directory `/export/home/gast/LPRng-3.6.12' gmake -C src all gmake[1]: Entering directory `/export/home/gast/LPRng-3.6.12/src' gcc -g -O2 -g -Wall -DHAVE_CONFIG_H -DLOCALEDIR=\"/usr/local/share/locale\" -DLPD_CONF_PATH=\"/usr/local/
etc/lpd.conf\" -DLPD_PERMS_PATH=\"/usr/local/etc/lpd.perms\" -DPRINTCAP_PATH=\"/usr/local/etc/printcap\" -DLPD_
PRINTCAP_PATH=\"/usr/local/etc/lpd_printcap\" -DFORCE_LOCALHOST=\"1\" -DREQUIRE_CONFIGFILES=\"1\" -I..
-I./include -c -o lpc.o ./common/lpc.c
. . . lots of other stuff skipped. . .

As root, run make again to install the binaries to the location specified in the Makefile. If your system uses a BSD derived version of make, use Makefile.bsd :

su - 
Sun Microsystems Inc.   SunOS 5.7       Generic October 1998 
gmake install 
gmake MAKETARGET=install src man po 
gmake[1]: Entering directory `/export/home/gast/LPRng-3.6.12' 
gmake -C src install 
gmake[2]: Entering directory `/export/home/gast/LPRng-3.6.12/src' 
echo "SETUID_ROOT IS SUID_ROOT_PERMS, PERMS 04755 -o root"; 
for i in /usr/local/bin /usr/local/sbin /usr/local/sbin /usr/local/libexec/filters; do \ 
 if [ ! -d $i ] ; then ./mkinstalldirs $i ; fi; \ 
mkdir /usr/local/sbin 
mkdir /usr/local/libexec/filters 
.././install-sh -c -s -m 04755 -o root lpq /usr/local/bin 
.././install-sh -c -s -m 04755 -o root lprm /usr/local/bin 
.././install-sh -c -s -m 04755 -o root lpr /usr/local/bin 
.././install-sh -c -s -m 04755 -o root lpstat /usr/local/bin 
.././install-sh -c -s -m 04755 -o root lpc /usr/local/sbin 
. . . more skipped  . . .

Installation ends with the installation of skeleton lpd.perms and lpd.conf files in /usr/local/etc. Replacing the Existing Spooler

When replacing an existing spooler, begin by removing your old spooler software. Kill the old daemon

The spooler daemon on BSD systems is lpd:

kill `ps -aux | grep lpd | grep -v grep | awk '{print $2}'`

System V uses the lpsched daemon, and requires slightly different flags to ps:

kill `ps -ef | grep lpsched | grep -v grep | awk '{print $2}'`
CLASS="HeadC">Replace the vendor-provided printing programs with the LPRng programs

First, check your system's man pages to find the name of the programs that make up your print system. To search the disk for the lpr program, use the find command:

find / -type file -name lpr -print

After running the find command, rename the existing program lpr, and then link lpr to the LPRng lpr :

mv /usr/bin/lpr /usr/bin/lpr.orig 
ln -s /usr/local/bin/lpr /usr/bin/lpr
Modify system startup scripts

System startup scripts launch the print spooler daemon on boot. On BSD systems, look for the command that starts lpd in /etc/rc and replace it with a line that runs the LPRng lpd instead. Alternatively, remove that line entirely and run the LPRng lpd in /etc/rc.local.

On System V, print services are frequently started at run level 3. Look for the script that starts lpsched and delete it (or at least rename it). You also need to track down and delete the S and K links to this script, which are probably in /etc/init.d/rc3.d. We'll replace this with a script that starts the LPRng lpd. The very basic script in Example 5-1 provides a jumping off point for further customization. For example, some administrators first check that the System V daemons are stopped before starting LPRng daemons....

Read More Show Less

Table of Contents

Preface ix
I. The Basics: Unix Queuing 1
1. Introduction, Architecture, and History 3
Today's Networking Swamp 4
The Book in a Nutshell 5
File Service: the Other Half of the LAN Server 10
A Brief History of Printing and Publishing 11
2. Printer Languages 22
PostScript 23
PCL 27
GDI 30
3. Exploring the Spooler 31
The Berkeley Spooler: lpr and lpd 31
System V Release 4 Printing: lp 46
BSD to System V Translator for System Administrators 57
Microsoft TCP/IP Printing 58
4. Extending the Berkeley Spooler with Print Filters 63
Remote Printers 63
Print Filters 64
Magic Filters 70
5. The Next Generation Berkeley Spooler: LPRng 73
Compiling and Installing LPRng 74
Configuring LPRng 79
More Fun with Filters 86
Accounting 88
II. Front-End Interfaces to Unix Queues 91
6. Connecting Windows to Unix Servers: Let's Samba 93
Introduction to the Server Message Block Protocol (SMB) 93
Compiling and Installing Samba 95
Configuring Samba for Print Service 99
Troubleshooting 110
7. Connecting Macintosh Networks to Unix Servers 120
The AppleTalk Protocol Suite 120
Compiling and Installing netatalk 121
Configuring netatalk 126
Configuring Macintosh Clients 131
Troubleshooting netatalk 137
8. Connecting NetWare Networks to Linux Servers 141
IPX and the NetWare Protocol Suite 141
Compiling and Installing ncpfs 142
Configuring Your NetWare Server 144
Looking at the NetWare Network from Linux 148
Queue Drainage with the pserver Daemon 149
III. Administration 151
9. Using SNMP to Manage Networked Printers 153
A Simple Introduction to SNMP 153
Public MIBs 160
SNMP Tools 161
10. Using Boot Servers for Basic Printer Configuration 165
Front Panel Configuration 166
Telnet 167
BOOTP's Partner in Crime: TFTP 174
DHCP 175
Configuring Printers for Dynamic Booting 178
11. Centralized Configuration with LDAP 183
What Is a Directory? 183
A Short Introduction to LDAP 184
OpenLDAP 187
Practical LDAP Printer Management 192
12. Accounting, Security, and Performance 224
Accounting 224
Security 232
Performance Monitoring and Tuning 236
Epilogue 238
IV. Appendixes 239
A. Printcap Reference 241
B. SNMP MIB Objects for Managing Printers 253
Index 269
Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)