4.  Setting up

      The 4.3BSD release comes with the necessary programs installed and with the default line printer queue created. If the system must be modified, the makefile in the directory /usr/src/usr.lib/lpr should be used in recompiling and reinstalling the necessary programs.

      The real work in setting up is to create the printcap file and any printer filters for printers not supported in the distribution system.

4.1.  Creating a printcap file

      The printcap database contains one or more entries per printer. A printer should have a separate spooling directory; otherwise, jobs will be printed on different printers depending on which printer daemon starts first. This section describes how to create entries for printers that do not conform to the default printer description (an LP-11 style interface to a standard, band printer).

4.1.1.  Printers on serial lines

      When a printer is connected via a serial communication line it must have the proper baud rate and terminal modes set. The following example is for a DecWriter III printer connected locally via a 1200 baud serial line.

lp|LA-180 DecWriter III:\
	:lp=/dev/lp:br#1200:fs#06320:\
	:tr=\f:of=/usr/lib/lpf:lf=/usr/adm/lpd-errs:
The lp entry specifies the file name to open for output. Here it could be left out since ``/dev/lp'' is the default. The br entry sets the baud rate for the tty line and the fs entry sets CRMOD, no parity, and XTABS (see tty(4)). The tr entry indicates that a form-feed should be printed when the queue empties so the paper can be torn off without turning the printer off-line and pressing form feed. The of entry specifies the filter program lpf should be used for printing the files; more will be said about filters later. The last entry causes errors to be written to the file ``/usr/adm/lpd-errs'' instead of the console. Most errors from lpd are logged using syslogd(8) and will not be logged in the specified file. The filters should use syslogd to report errors; only those that write to standard error output will end up with errors in the lf file. (Occasionally errors sent to standard error output have not appeared in the log file; the use of syslogd is highly recommended.)

4.1.2.  Remote printers

      Printers that reside on remote hosts should have an empty lp entry. For example, the following printcap entry would send output to the printer named ``lp'' on the machine ``ucbvax''.

lp|default line printer:\
	:lp=:rm=ucbvax:rp=lp:sd=/usr/spool/vaxlpd:
The rm entry is the name of the remote machine to connect to; this name must be a known host name for a machine on the network. The rp capability indicates the name of the printer on the remote machine is ``lp''; here it could be left out since this is the default value. The sd entry specifies ``/usr/spool/vaxlpd'' as the spooling directory instead of the default value of ``/usr/spool/lpd''.

4.2.  Output filters

      Filters are used to handle device dependencies and to do accounting functions. The output filtering of of is used when accounting is not being done or when all text data must be passed through a filter. It is not intended to do accounting since it is started only once, all text files are filtered through it, and no provision is made for passing owners' login name, identifying the beginning and ending of jobs, etc. The other filters (if specified) are started for each file printed and do accounting if there is an af entry. If entries for both of and other filters are specified, the output filter is used only to print the banner page; it is then stopped to allow other filters access to the printer. An example of a printer that requires output filters is the Benson-Varian.

va|varian|Benson-Varian:\
	:lp=/dev/va0:sd=/usr/spool/vad:of=/usr/lib/vpf:\
	:tf=/usr/lib/rvcat:mx#2000:pl#58:px=2112:py=1700:tr=\f:
The tf entry specifies ``/usr/lib/rvcat'' as the filter to be used in printing troff(1) output. This filter is needed to set the device into print mode for text, and plot mode for printing troff files and raster images (see va(4V)). Note that the page length is set to 58 lines by the pl entry for 8.5" by 11" fan-fold paper. To enable accounting, the varian entry would be augmented with an af filter as shown below.
va|varian|Benson-Varian:\
	:lp=/dev/va0:sd=/usr/spool/vad:of=/usr/lib/vpf:\
	:if=/usr/lib/vpf:tf=/usr/lib/rvcat:af=/usr/adm/vaacct:\
	:mx#2000:pl#58:px=2112:py=1700:tr=\f:

4.3.  Access Control

      Local access to printer queues is controlled with the rg printcap entry.

	:rg=lprgroup:
Users must be in the group lprgroup to submit jobs to the specified printer. The default is to allow all users access. Note that once the files are in the local queue, they can be printed locally or forwarded to another host depending on the configuration.

      Remote access is controlled by listing the hosts in either the file /etc/hosts.equiv or /etc/hosts.lpd, one host per line. Note that rsh(1) and rlogin(1) use /etc/hosts.equiv to determine which hosts are equivalent for allowing logins without passwords. The file /etc/hosts.lpd is only used to control which hosts have line printer access. Remote access can be further restricted to only allow remote users with accounts on the local host to print jobs by using the rs printcap entry.

	:rs: