Configuring Printing Services
Setting up your GNU/Linux
system to print
NRCFOSS 1
Scope of this section
• Overview of printing on Linux
• Introduction to the CUPS printing system
• Installing and using CUPS
• About CUPS printer drivers
• Sharing your printer over the network
NRCFOSS 2
Printing on Linux
• Linux & Unix have a long history of printing
• Most printing, traditionally, has been handled through the
Berkley Line Printer Daemon (lpd)
• Over time, as printing technology advanced, Linux based
printing system also became more diverse
• People designed modern printing system to correct major
problems in lpd.
• LPRng, CUPS, OmniPrint are some examples of modern
Linux printing systems
• All printing systems on Linux make use of the excellent
PostScript system called GhostScript
(www.ghostscript.org).
NRCFOSS 3
Role of PostScript in Linux Printing
• Linux printing is more complicated than it seems
• Most printing systems today use a combination of multiple tools
(postscript interpreters, filters, rasterisers etc) to process and print
documents
• The printing system converts PostScript into a raster format
and then converts that into a printer specific language to
send commands to the printer
• Ghostscript is a PostScript interpreter that is most
commonly used on Linux
• Implements an excellent PostScript engine that can take as
inputs formats like JPEG, TIFF, PS & Text and output data in
formats like X Windows output, raster formats and PDF
• Also handles conversion of PS output for non-PS printers;
can also be used a basic, spoolerless printing system
NRCFOSS 4
Printing Systems on Linux
• Berkley Line Printer Daemon (lpd) the oldest
• LPRng are compatible replacements to the Berkley lpd
• CUPS is a very new (comparitively) and modern printing
system that we will use as a base for our discussion here
• Vendor-specific printing systems (like EPS from HP)
• OmniPrint - IBM’s initiative to support a wide variety of
printers using Ghostscript
• Postscript and Ghostscript
• Application specific printing engines (Eg. Gimp-Print)
NRCFOSS 5
Introduction to CUPS (Common
Unix Printing System)
• Was design as a common printing system for
Linux, Unix and compatible systems
• Designed on the IPP/1.1 (Internet Printing
Protocol) standard of the IETF PWG (Printer
Working Group)
• Robust and moders, CUPS can be extended to
support more printers, devices and protocols
• Rich documentation and extensive feature set
• Available on most distributions as the default
printing system
NRCFOSS 6
CUPS Features
• IPP/1.1 Support
• Supports banner pages, authentication, print accounting
and quota
• Supports parallel, serial, usb, IPP and JetDirect-based
printers as also printers shared through other printing
systems such as CUPS, lpd and Windows
• TLS (encryption) support
• Portable command set compatible with LPRng and LPD
• Excellent web-based interface for printer administration,
configuration and management
• PPD-based drivers, rich API and imaging libraries
• Foomatic Printer database (from linuxprinting.org) has
good support for CUPS
NRCFOSS 7
CUPS Architecture
• The scheduler is a server application that handles HTTP
requests - the HTTP server servers print requests as
well as printer / CUPS administration requests
• Filters are what convert input into intermediate formats
and finally to a printer specific format (like texttops)
• Backends are what allow CUPS to communicate to the
actual printer - through a hardware port or the network
NRCFOSS 8
Installing CUPS
• Using binary packages
-CUPS is divided into multiple packages: cupsys,
cupsys-bsd, cupsys-client
-It is also recommended to install the foomatic packages
for additional CUPS printer drivers: cupsomatic-ppd,
foomatic-db, foomatic-filters
• Using source code
- Download source code from: www.cups.org
-Use the supplied configure script to configure and
then compile the package
- Source only ships with the most basic drivers - you can
download the rest from the linuxprinting.org web site
• If installed form binary, cups can be started as:
/etc/init.d/cupsys start
NRCFOSS 9
CUPS Configuration Files
• CUPS is configured through the /etc/cups/cupsd.conf
config file
• The file format is very similar to the Apache configuration
file format
• This file manages the following things:
- Server Identity
- Server Options
- Network and Browsing Options
- Security and Access Control Options
• CUPS will function just fine with the default server options
• Printer configuration is stored in the
/etc/cups/printers.conf file - we will look at this file
in detail
NRCFOSS 10
printers.conf Sample
<Printer myprinter>
Info Laser Printer
Location anokha
DeviceURI parallel:/dev/lp0
State Idle
Accepting Yes
JobSheets none none
PageLimit 0
KLimit 0
</Printer>
NRCFOSS 11
CUPS Drivers
• CUPS drivers are stored in the
/usr/share/cups/model/ directory
• This directory contains PPD (PostScript Printer
Definition) files that define the specific features
and details of a printer
• A new PPD downloaded from the Internet could
be copied here and would be available for use
inside CUPS after it is restarted.
• If the PPD is a foomatic-based PPD, then it will
need the cupsomatic filter stored in the
/usr/lib/cups/filter/ directory.
NRCFOSS 12
Administering CUPS
• Cups can be administered very easily
through its web based administration page
• By default on the localhost has permission
to acess this page
• To configure CUPS, just type:
http://localhost:631/ in your web browser
to open the CUPS management interface
• Some screenshots are provided
separately
NRCFOSS 13
Using CUPS Configured Printers
• To use a printer configured through CUPS, we
can use the lpr command
• Syntax for the lpr command is: lpr -P
<destination> <filename>
• <filename> can be any text, PostScript or
graphic file
• A destination is the name of the printer that you
want to print to. If you want to print to the default
printer, then it is not necessary to give a
destination; the default printer will be
automatically selected
NRCFOSS 14
Sharing Printers
• Sharing printers is very easy with CUPS
• As long as network browsing support is enabled correctly
in the configuration files, the printers on other machines
will be detected automatically
• This simplifies the mapping of printers in a network - you
just have to configure the printer in one machine and as
long as all other machines support and enable the CUPS
browse protocol, the configured printer will automatically
show-up in the network nodes
• On the server where the printer is configured, you may
wish to introduce a separate section to allow only
specific machines to print to the attached printer
NRCFOSS 15