SDB:安装打印机

跳转到:导航搜索

情况

您想安装您的打印机。

首先,请检查以下先决条件是否已满足。

有关打印基础知识的信息,请参阅 Concepts printing

本文适用于 Linux 下 CUPS 版本高达 2.x,以及那里的传统过滤系统和后端。

如今的无驱动程序打印工作流程则大不相同。

先决条件

打印机必须受 openSUSE 支持

有关 openSUSE 支持的打印机的信息

  • PostScript 打印机受支持,请参阅 Concepts printing
  • HCL:Printers
  • 运行 YaST 打印机模块 并检查其中的型号列表。您无需连接打印机即可执行此操作。单击“添加”并为虚拟打印机设置打印队列。使用“搜索”功能来确定当前安装的 openSUSE 版本中是否有特定型号的驱动程序(即打印机描述文件)。在 YaST 中设置虚拟打印机时,请阅读帮助文本。
  • 以 root 用户身份运行命令 lpinfo -l -m | less(输入 'q' 退出),它还会显示有关当前使用的 openSUSE 版本的已安装打印机描述文件(PPD 文件)的信息。

有关 Linux 支持的打印机的信息(不一定受 openSUSE 支持)

由于 Linux 支持信息通常基于客户和用户的声明,因此无法保证上述来源的准确性。此外,“支持”通常意味着“平均质量和性能”,请参阅 SDB:Purchasing a Printer and Compatibility

如果您拥有一台所谓的“GDI 打印机”(一台不理解标准打印机语言的打印机),它可能不受 Linux 支持,请参阅 SDB:GDI Printers

打印机必须可访问

USB 打印机

常规 USB 打印机可以通过通用的 CUPS 后端 'usb' 访问(请参阅 SDB:CUPS in a Nutshell 中的“什么是 CUPS 后端以及它是如何工作的?”)。

有些 USB 打印机的行为不正常。因此,CUPS 后端 'usb' 了解一些针对特定 USB 打印机的所谓“怪癖”,以便即使是“怪癖”USB 打印机也能工作。请参阅 /usr/share/cups/usb/org.cups.usb-quirks 以了解当前已知的“怪癖”USB 打印机。您可能需要在那里添加您特定 USB 打印机的“怪癖”。

有一些“异常”打印设备通过 USB 连接,但它们根本不像常规 USB 打印机那样工作,因此它们无法通过 CUPS 后端 'usb' 访问,而是需要特殊的 CUPS 后端。在 /usr/share/cups/usb/org.cups.usb-quirks 中,当前已知不适用于 CUPS 后端 'usb' 的 USB 打印设备列在“黑名单”中。

主要针对旧系统

在当前系统中,通常不再需要 usblp 内核模块才能访问 USB 打印机,因为如今 USB 打印机访问是通过 libusb 完成的。在这种情况下,加载 usblp 内核模块甚至可能导致与通过 libusb 访问 USB 打印机的冲突/问题。

当打印机连接到 USB 时,并且它是连接到 USB 的唯一打印机时,以 root 用户身份重新加载用于直接 USB 打印机访问的内核模块(作为 root):

rmmod usblp
modprobe usblp

您可以使用以下命令(作为 root)测试是否可以将打印机作为第一个 USB 打印机访问:

echo -en "\rHello\r\f" >/dev/usb/lp0

如果上述“rmmod usblp”命令显示错误消息,例如“模块 usblp 不存在于 /proc/modules 中”,则在测试之前未加载 usblp 内核模块,因此您可以卸载 usblp 内核模块并返回到测试前的状态。

并行端口打印机

并行端口打印机越来越少,这导致对并行端口打印机支持的关注越来越少,上游项目对并行端口的开箱即用支持也越来越少。尽管如此,并行端口仍然应该可以工作,但如果出现问题,则不再有官方支持。

从 openSUSE 11.4 开始,udev 不再为并行端口提供静态内核设备节点,例如 /dev/lp0,因此内核模块 lp 不会自动加载。通过安装 RPM 包 parallel-printer-support,将创建并行端口设备节点,以便在将数据发送到并行端口设备节点时,将再次触发加载内核模块 lp

当打印机连接到第一个并行端口时,第一个并行接口的 BIOS 设置应如下:

  • IO 地址 378(十六进制)
  • 中断 7
  • 模式 NormalSPPOutput-Only(其他模式可能无法工作)
  • 禁用 DMA(应通过上述模式自动关闭)

您可以使用以下命令(作为 root)测试是否可以通过 /dev/lp0 访问第一个并行端口:

echo -en "\rHello\r\f" >/dev/lp0

如果这不起作用,您可以尝试卸载并行端口的内核模块(作为 root):

rmmod lp
rmmod ppdev
rmmod parport_pc
rmmod parport

当您的计算机中有并行端口硬件时,至少应默认加载内核模块 parportparport_pclp,否则您无法访问并行端口打印机。如果您收到类似 Module ... does not exist in /proc/modules 的错误消息,则未加载特定的内核模块,这表明为什么无法访问您的并行端口打印机。

然后重新加载它们(作为 root):

modprobe parport
modprobe parport_pc
modprobe ppdev
modprobe lp

最后重试:

echo -en "\rHello\r\f" >/dev/lp0

网络打印机

要测试网络打印机是否可访问,请参阅 SDB:Printing via TCP/IP network 中的测试这些连接

GDI 打印机通常不受支持

上述“echo ...”测试应打印一张带有单词 Hello 的纸。打印机必须能够直接打印纯 ASCII 文本,而无需任何额外的打印机驱动程序软件(在这种情况下,单词 Hello 被 ASCII 字符 \r 包围,该字符启动回车,后跟 ASCII 字符 \f,该字符启动换页)。

无法打印 ASCII 文本的打印机很可能是 GDI 打印机,但有些无法打印 ASCII 文本但仍然可以与 Linux 配合使用的打印机。

打印机安装和配置

运行 YaST 打印机模块 进行打印机安装和配置。YaST 打印机模块可以在 YaST 控制中心中的 Hardware -> Printer 中找到。

打印机驱动程序包的版本升级

各种 openSUSE 版本(例如 openSUSE Leap、openSUSE Tumbleweed)通常提供各种打印机驱动程序上游项目在特定 openSUSE 版本开发和准备时正式发布的最新打印机驱动程序版本(而不是特定 openSUSE 版本最终发布时)。

对于打印机驱动程序包,版本升级仅对那些实际上拥有尚未通过我们提供的版本支持的打印机设备的用户有意义。

由于打印机驱动程序包支持许多不同的打印机型号,因此我们(即 openSUSE)以合理的方式对其进行测试的可能性很小,这意味着:基本上,打印机驱动程序包根本没有针对所有受支持的打印机型号进行测试。

因此,作为常规维护更新,所有用户都强制进行打印机驱动程序包版本升级是不可能的,因为对于某个或另一个打印机型号可能会出现回归,并且提前不知道。

或者换句话说:当打印机驱动程序包的版本对特定用户及其特定打印机型号有效时,没有理由强制该用户通过常规维护更新进行版本升级。

另一方面,当打印机驱动程序包的版本对特定用户及其特定打印机型号不起作用时,该用户没有理由不进行版本升级并尝试较新版本是否适用于他的特定型号(前提是较新版本声称支持该型号)。

各种打印机驱动程序上游项目正式发布的最新打印机驱动程序版本通常在 openSUSE Build Service 开发项目“Printing”中可用(通常在打印机驱动程序上游项目发布后不久)。

通常,我们不提供不稳定打印机驱动程序开发版本(例如 Git 快照)到“Printing”项目,该项目用于开发 openSUSE 打印机驱动程序 RPM 包,而不是开发打印机驱动程序。后者发生在各种打印机驱动程序上游项目中。

如果您的特定打印机型号列在匹配的打印机驱动程序上游项目中,该项目要求比您在特定 openSUSE 版本中提供的更新的打印机驱动程序版本,并且该较新版本已在打印机驱动程序上游项目中正式发布,那么请查看 openSUSE Build Service 开发项目“Printing”中是否有适用于您的特定 openSUSE 版本的打印机驱动程序版本。

要从“Printing”项目获取打印机驱动程序 RPM 包,请转到 https://software.opensuse.net.cn 并搜索打印机驱动程序 RPM 包名称(例如“gutenprint”或“hplip”),然后单击“查看”以查看其版本。然后选择您的确切 openSUSE 版本(例如 openSUSE Leap 15.5、openSUSE Leap 15.6、openSUSE Tumbleweed),“显示实验包”,最后从“Printing”项目选择该包。或者,要直接下载纯 RPM 包,请转到 http://download.opensuse.org/repositories/Printing/ 并按照与您的系统和系统体系结构匹配的链接。使用与您的系统匹配的包。较旧系统的包可能适用于较新的系统。例如,openSUSE Leap 15.5 的包可能适用于 openSUSE Leap 15.6,但切勿在较旧的系统中使用较新系统的包,例如,除非您真的想弄乱您的系统,否则请勿在您的系统不是“openSUSE Tumbleweed”时使用“openSUSE Tumbleweed”的包。

“Printing”存储库是 openSUSE 打印机驱动程序 RPM 包的官方 openSUSE 开发存储库,这意味着

“Printing”开发项目可能包含新的软件或现有软件的正在进行中的更改,这些更改可能既不稳定也不适合当前安装的系统。请记住这一点,如果您考虑将“Printing”项目中的包安装到您当前运行的系统中。

“Printing”项目中的包没有任何保证或担保,也没有任何支持。作为极端示例,这意味着如果由于这些包导致您的整个计算机中心崩溃,那只是您的问题。

另一方面,这并不意味着这些包已知存在严重问题,但它们没有经过彻底测试,因此可能会发生任何意外问题。

最终,打印机驱动程序只是应用程序(打印机驱动程序不是内核驱动程序),这意味着升级“Printing”项目中的较新版本不会“炸毁”您的系统(前提是您使用与您的系统匹配的包)。

如果新版本不起作用,通常有帮助的是降级(并根据需要重新配置)以使其再次工作。

通常,我们(即 openSUSE)分发来自各种上游项目的各种打印机驱动程序包,但我们不开发打印机驱动程序。

通常,我们没有各种打印机驱动程序的各种打印机型号,因此通常无法在打印机驱动程序出现问题时做任何事情。特别是,我们通常无法重现打印机驱动程序的问题。

当特定打印机驱动程序列在匹配的上游项目中,该项目表明它应该适用于您的特定打印机型号,但它对您不起作用,并且使用匹配的上游项目正式发布的最新打印机驱动程序版本时,建议直接向匹配的上游项目中的驱动程序作者报告问题,以便您与上游作者之间进行直接沟通。

也就是说,在向匹配的上游项目中的驱动程序作者报告问题之前,您可能需要将打印机驱动程序 RPM 包升级到 openSUSE“Printing”项目中的包,并验证问题是否也发生在最新的打印机驱动程序版本中。

如果出现打印机驱动程序问题,请参阅 SDB:How to Report a Printing Issue,了解基本测试和基本操作,以诊断问题的原因。

另请参阅 openSUSE:How to contribute to the Printing project 中的“打印机驱动程序包的版本升级”。

更多信息