lpd: 获取打印输出
在 16 世纪,印刷机开启了通讯的全新世界。印刷是第一个大众通讯媒介,为书籍、杂志、报纸以及这一代的所有其他便利设施铺平了道路。尽管我们生活在一个由计算机和电子产品主导的世界中,但印刷机仍然在我们的日常生活中扮演着重要的角色。如果您正在阅读本杂志的印刷版,那么这个事实尤其明显。
今天,印刷机的力量个人也可以使用。计算机、打印机和复印机几乎使任何人都可以有效地与任何数量的人进行交流。更好的是,它比以往任何时候都更容易和更便宜。
Linux 世界的新手最常问的问题之一是如何使他们的打印机在 Linux 下工作。实际上,有几种不同的方法可以完成此任务。但是,首先,您必须在内核中启用 lp 支持并重新编译。这在大多数内核中已经完成。要检查您的内核是否已准备就绪,请插入打印机并观看内核启动消息。如果您看到对 lp0 或 lp1 的引用,则说明您的内核已配置为并行打印。
打印文本文件最原始的方法是简单地使用 cat 命令将其发送到 /dev/lp1 的打印机
cat filename.txt > /dev/lp1
这将把文件(在本例中为 filename.txt)连接到 /dev/lp1,即您的打印机设备。如果您的打印机设备名称不同,请将 /dev/lp1 替换为您的打印机设备名称。
以这种方式打印文本文件的主要问题是,大多数人都会遇到可怕的“阶梯”效应。它使打印的文本看起来像
Something Like This.
这是不可接受的,因此大多数人使用 lpd(行式打印机守护进程)来打印文件。如果您尚未安装 lpd,则可以从 ftp://metalab.unc.edu/pub/Linux/system/printing/ 获取 lpr-linux 软件包。下载并安装该软件后,您可以将以下行添加到您的启动脚本之一中,以便在系统启动时启动 lpd。
if [ -f /usr/sbin/lpd ]; then echo -n "Starting lpd..." /usr/sbin/lpd fi您可能需要将 lpd 的路径替换为您自定义的路径。
但是,仅运行 lpd 并不是很有用。它实际上所做的只是方便打印作业的排队。它不进行任何转换或转换——这就是使用打印过滤器的原因。您可能知道,许多 Linux 和 X 应用程序可以输出和打印到 PostScript。这包括 Netscape 和 GIMP。要利用这些强大的应用程序和许多其他应用程序,您必须为您的特定打印机安装过滤器。有几种不同的打印机过滤器软件包可用,因此几乎所有流行的打印机都得到支持。
要安装过滤器,您必须做的第一件事是下载您想要的过滤器。许多过滤器可从 Sunsite Linux 存档 ftp://metalab.unc.edu/pub/Linux/system/printing/ 中获得。
最流行的打印过滤器是 apsfilter 和 magicfilter。除了主要的打印过滤器之外,还有许多小型转换器和翻译器以及其他打印机过滤器可从 metalab 下载。下载您想要的软件包后,只需按照提供的说明进行操作并安装软件包。(请注意,metalab.unc.edu 以前是 sunsite.unc.edu。)
现在到了棘手的部分。lpd 软件从一个名为 printcap 或打印机功能数据库的配置文件中读取信息。printcap 是一个简单的文本文件,其中包含 lpd 输出到打印机所需的信息。它具有广泛的功能和选项,但我们现在只以最简单的方式对其进行编辑。启动您喜欢的文本编辑器并打开文件 /etc/printcap。如果文件中当前有文本,请确保您不需要它(它都被注释和注解了),并通过在这些行的第一个字符前面放置 # 符号来注释掉不需要的行。
此时,您已准备好开始将打印机信息输入到文件中。在继续之前,请确保您已正确安装打印过滤器。
将这一行附加到您的 /etc/printcap 文件中
if=/path_to/print_filter:
首先,将 name 替换为您的打印机名称。其次,将 lpx 替换为您的打印机设备名称,这可能是 lp1。最后,将 /path_to/print_filter 替换为您的打印过滤器的实际路径。您必须记住更改已安装的打印过滤器的权限,使其可执行和可读。只需输入
chmod 755 /另外,请确保打印假脱机目录 /var/spool/lpd 存在。如果您想打印到另一台 UNIX 机器上的远程打印机,请在该机器上设置打印机,然后附加(不要开始新行)
rm=remotehost:rp=remoteprinter:到上面显示的先前 /etc/printcap 条目。如果您决定这样做,请将 :lp=/dev/lpx: 替换为普通的 :lp=:。有关放入 printcap 文件的更多选项,请查看 printcap 的 man 手册页(在提示符下键入 man printcap)。
现在,通过发出以下命令重新启动 lpd
killall -HUP lpd
应该会有一个短暂的暂停,然后您将被返回到命令提示符。如果您已正确按照这些说明进行操作,请进行测试打印:启动 Netscape 并打印测试页。单击“文件”菜单并选择“打印”或“打印框架”。确保“打印命令”字段设置为
lpr -当然,将 printername 替换为您在 /etc/printcap 中给您的打印机起的名称。-P 和 printername 之间没有空格。要打印文本文件,您可以在具有打印功能的程序(例如 Netscape)中打开它们,也可以在命令行中键入以下内容
lpr -将 printername 替换为打印机的名称,并将 filename 替换为您要打印的文件的名称。此时,如果一切按计划进行,您的打印机上应该会出现一张精美的打印纸。
现在您已经为自己设置了打印机,您可能想考虑与网络的其余部分共享它。有几种方法可以做到这一点。对于其他具有 BSD 风格打印系统的 UNIX 或 Linux 机器,只需按照上一节中的说明进行操作,您就可以开始了。请注意指定的网络配置行。
然而,最有可能的情况是一台 Linux 机器与一台或多台 Windows 机器共享其打印机。要做到这一点,您将需要使用 Samba,即 UNIX 的 SMB 实现,它在 Linux 上运行良好。完成打印机的设置后,在 Linux 机器上安装 Samba。Samba 可在 http://www.samba.org/ 上获得,并且也是开源软件。
通读 Samba 文档以进行安装。这是一个快速安装,但确实需要编辑一些配置文件。对于那些不耐烦的人,这是一个简单的配置文件供您使用(将其放在 /usr/local/samba/lib/smb.conf 中)
[global] remote announce = 192.168.1.255 interfaces = 192.168.1.1/255.255.255.0 netbios name = your_computer_name workgroup = your_workgroup_name printing = bsd security = share [public] comment = Public Stuff path = /tmp public = yes writable = yes
这将导出一个名为“public”的共享以供在网络上使用。如果您已使用相同的参数设置了 Win95 机器,您应该能够浏览公共共享并查看其所有子目录。
完成此操作后,您就可以添加打印机了。打印机以以下方式添加到配置文件中
[printername]
path = /
printer name =
writable = yes
public = yes
printable = yes
print command = lpr -Pprintername %s; rm %s
将 printer_spool_dir 替换为打印机的假脱机目录(我只使用 /tmp,但如果您愿意,可以使用 /var/spool/lpd/),并将 printername 替换为您的打印机的名称(我只使用了 hp)。
此时,重新启动 Samba
killall -HUP nmbd; killall -HUP smbd
确保您仍然可以在网络上浏览文件。这次,您应该会看到一个打印机图标,其名称来自 Samba 配置文件。
在 Win95 客户端上,最好安装通用 PostScript 打印机。然后您的所有 Win95 程序都将输出 PostScript,并且 Linux 服务器上的打印机过滤器将能够像处理本地文档一样对您的文档进行假脱机和打印。要在 Win95 中添加网络打印机,请在“添加打印机”脚本提示您时选择“网络”选项。但是,这种方法并不总是有效,您可能希望通过将上述配置文件代码段中的打印命令 行更改为以下内容来使用更粗略的打印方式
print command = cat %s > /dev/lp1; rm %s
将 /dev/lp1 替换为您的打印机连接到的设备。替换该行后,在您的 Win95 机器上重新安装打印机作为实际类型;即,如果您有 LaserJet 4L,请在 Win95 中将其安装为 LaserJet 4L。请注意,使用此方法,Linux 机器上不会进行打印假脱机。
我希望本教程能帮助您在 Linux 中设置打印服务。如果您有幸在家中或办公室拥有网络,您还应该能够设置有问题的打印机,以便在网络上的其他计算机上使用。如果您仍然在打印方面遇到问题,您可以查看位于 metalab.unc.edu/LDP/HOWTO/Printing-HOWTO.html 的 Linux 打印指南。祝你好运!
