Linux下使用打印机通常遇到的问题就是打印机驱动安装问题,而Linux系统下多数硬件无法使用也都是因为驱动缺少导致。今天来详细介绍打印机驱动安装及使用过程中遇到的问题及解决方法。通过分享这个过程,在遇到类似问题时就可以举一反三解决问题。
今天家里买了一台EPSON的L3255型号打印机,由于摆放位置距离较远的缘故,打印机与Linux主机通过局域网连接访问(无直连),因此Linux系统里配置打印机选择的是局域网TCP连接9100端口进行通信。
安装打印机驱动
官网获取Linux系统的驱动程序
- EPSON官网驱动下载地址, 输入型号 L3255 即可搜索获取下载地址。
以openSUSE 为例,我们需要下载.rpm
后缀的安装包,比如我下载的是epson-inkjet-printer-escpr-1.7.21-1lsb3.2.i486.rpm
包。
根据提示,我们需要提前安装lsb
依赖包:
Ubuntu: # apt install lsb
Fedora: # yum install lsb
openSUSE: # yast --install lsb
最后我们安装下载好的驱动安装包,正常情况下这样就可以使用打印机了。
但,实际情况是我的打印机并没有工作,系统打印机显示打印机状态正常,但渲染失败了,这说明打印驱动并没有正确工作。
遇到问题现象及解决方案
接下里,根据错误日志来分析驱动不工作的原因。
现象描述
测试打印机时查看/var/log/cups/error_log
错误日志文件,看到如下内容:
D [08/Sep/2022:11:28:05 +0800] [Job 27] Started filter /opt/epson-inkjet-printer-escpr/cups/lib/filter/epson-escpr-wrapper (PID 8327)
D [08/Sep/2022:11:28:05 +0800] [Job 27] Started backend /usr/lib/cups/backend/lpd (PID 8328)
D [08/Sep/2022:11:28:05 +0800] [Job 27] epson: error while loading shared libraries: libcupsimage.so.2: cannot open shared object file: No such file or directory
D [08/Sep/2022:11:28:05 +0800] [Job 27] PID 8327 (/opt/epson-inkjet-printer-escpr/cups/lib/filter/epson-escpr-wrapper) stopped with status 127 (File too large)
分析原因及解决方法
错误日志提示的很明显:
D [08/Sep/2022:11:28:05 +0800] [Job 27] epson: error while loading shared libraries: libcupsimage.so.2: cannot open shared object file: No such file or directory
少了libcupsimage.so.2
动态库文件,那按照正常逻辑只需要安装这个库文件就能解决问题。
接下来,我们来搜索一下这个安装包:
$ zypper se cupsimageS | Name | Summary | Type
---+---------------------+--------------------------------------------+-------
i | libcupsimage2 | CUPS library for working with large images | 软件包| libcupsimage2-32bit | CUPS library for working with large images | 软件包
找到原因了,/opt/epson-inkjet-printer-escpr/cups/lib/filter/epson-escpr-wrapper
是32位可执行程序,所以确实了32位的libcupsimage2-32bit
依赖包,安装完毕后,问题解决了。
打印机正确打印了文件。
总结
本例通过分析日志,找到了打印机无法工作、报错原因是缺少32位依赖库,这种缺少依赖库导致问题非常常见,若缺少依赖库较多可以通过ldd
命令找出缺失的所有动态库:
$ ldd /opt/epson-inkjet-printer-escpr/cups/lib/filter/epson-escpr-wrapper | grep notlibcupsimage.so.2 => not found
按照这个方法,缺少什么库就安装什么库就可以了。 若很难找到依赖库的安装包,那就一个途径了:
- 源码编译。
本文仅用于描述如何解决驱动问题,而往往Linux系统里很多问题都是依赖库确实、库版本不兼容等问题导致。希望看到这里的你可以举一反三,在遇到类似问题就可以自己解决了。