30 FreeBSD连载:配置打印机

配置打印机本地打印机通常连接到计算机的并口上,因此在安装打印机之前,首先要查看并口的状态是否正常 。正常情况下,缺省的硬件配置将能够自动侦测到计算机的并口,那么在启动时,系统将在控制台上显示下面的信息,如果由于滚屏太快而没有看到这一行的话,可以使用dmesg命令进行查看:
$ dmesg | grep lpt
nlpt0:on ppbus 0
nlpt0: Interrupt-driven port在FreeBSD 3.0之前使用lpt作为打印机的驱动程序,这个老驱动程序对于现有具备多个模式的并口硬件支持能力不足 。3.1之后系统的并口驱动程序更新了,使用了nlpt作为新的驱动程序名字,但设备文件的名字仍然为/dev/lpt0 。以后当老版本的驱动程序彻底从FreeBSD中消失之后,驱动程序名字会恢复为lpt 。
通常不需任何配置,并口就能正常工作 。此时就可以通过设备文件/dev/lpt0来直接访问并口(0表示第一个并口,依次类推),如果并口和打印机的电缆连接也正常,就能测试打印机是否正常,此时需要root权限 。
# lptest > /dev/lpt0如果对于普通行式打印机,这将打印出一页测试信息,但如果打印机是使用PostScript或其他页面描述语言,打印机并不一定进行打印,但打印机的状态指示灯将闪烁 。如果打印机是PostScript打印机,可以使用下面命令来测试:
# lptest | a2ps -q -o - > /dev/lpt0这需要预先通过Packages Collection安装好a2ps软件,其中使用的-q参数表示不输出a2ps的状态信息,-o -参数表示向标准输出输出转化后的PS数据,如果没有使用这个参数,则a2ps直接将PS数据发送给lpr命令,由于此时打印系统还未设置完毕,因此需要直接输出到打印机端口上以进行测试 。
当这个测试正常之后,就可以尝试使用lpr命令来打印文档了 。当然此时打印系统的设置还没有完成,缺省的设置并不一定适合每个计算机 。应该调整打印设置,使得打印系统适合本系统 。
打印机配置文件printcap
当并口和打印机连接正确之后,可以进行下一步配置/etc/printcap文件了 。在BSD打印系统中,使用这个printcap文件来定义打印机,包括命名打印机、将打印缓冲区和具体的打印机相联系等 。下面的例子中配置了两个打印机,一个为本地的LaserJet 6P型打印机,另一个为远程FreeBSD计算机printersvr上的打印机 。
lp|lj|ps|HP LaserJet 6P:
:lp=/dev/lpt0:sd=/var/spool/lpd/lp:lf=/var/log/lpd-errs:sh:mx#0:
:if=/usr/local/libexec/lpfilter:

rlp|remote printer:
:rm=printersvr:rp=lp:sd=/var/spool/output/lpd/printersvr:lf=/var/log/lpd-errs:从上面的例子可以看出printcap文件的格式:
printcap中的每行描述由多个部分组成,每个部分用 “:” 分隔;由于对打印机的描述一行写不下,必须使用反斜杠 “” 分隔,这是Unix和C语言的标准做法 。为了避免出现配置错误等问题,不要在同一个描述部分的中间续行;
每行中的第一个描述部分定义打印机的名字,通常可以用多个名字来称呼一个打印机,例如本例中第一个HP LaserJet 6P又有另外的名字lp、lj和ps,这些名字方便用户和不同的程序使用打印机 。这些名字之间使用竖线“|” 分隔,习惯上使用最后一个名字作为打印机的全名;
每个打印机的各个定义部分定义了打印机的不同属性,定义方式就是上例中使用的方式,定义字符串使用 “=“,定义数值使用 “#”。一个打印机应该具备下面的不同属性:
lp(local printer)定义本地打印机使用的设备,通常为并口设备/dev/lpt0 。
【30 FreeBSD连载:配置打印机】rm(remote Machine)定义远程计算机的名字,这在使用远程打印机时有用 。
rp(remote printer)的值应该为rm定义的远程计算机上的一个打印机名 。远程打印机不需要lp来定义打印机端口,但需要使用rm和rp定义,以将打印文件发送到远程计算机上的正确打印机中 。这个打印机名应该在远程计算机中/etc/printcap中进行了定义 。如果没有使用rp定义而只使用了rm定义,则使用该计算机上的缺省打印机 。

推荐阅读