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
Info Laser Printer Location anokha DeviceURI parallel:/dev/lp0 State Idle Accepting Yes JobSheets none none PageLimit 0 KLimit 0 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>
• 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