我有两台 Brother 打印机:一台 QL-1050 标签打印机(USB 插入)和一台 MFC-9330CDW(wifi)。
两者都可以在 Ubuntu 笔记本电脑上正常工作,但我很难让它们在 Fedora 28 下打印(实际上 F23 也有同样的问题,但从未设法解决该问题)。
我在Brother网站上下载了官方驱动:
mfc9330cdwcupswrapper.i386
mfc9330cdwlpr.i386
ql1050cupswrapper.i386
ql1050lpr.i386
我还安装了以下 32 位软件包,因为 Brother 不提供 64 位驱动程序:
glibc.i686
libgcc.i686
libstdc++.i686
nss-softokn-freebl.i686
CUPS 正确检测到两台打印机,但都无法打印,无论是通过lpr
, evince
, eog
, firefox
... 作业默默地从队列中消失,但没有打印任何内容,并且打印机从未真正做出反应。
这可能是因为 Brother 过滤器无提示地失败,如调试级别的 CUPS 日志所示:
$ journalctl -u cups
…
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] PID 17877 (/usr/lib/cups/filter/pdftops) exited with no errors.
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] /usr/lib/cups/filter/brother_lpdwrapper_mfc9330cdw : ligne 133 : 17902 Erreur de segmentation /opt/brother/Printers/mfc9330cdw/cupswrapper/brcupsconfpt1 MFC9330CDW $PPDC $LOGCLEVEL \"$CUPSOPTION\" \"mfc9330cdw\" $BRPRINTERRCFILE >> $LOGFILE
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] /opt/brother/Printers/mfc9330cdw/lpd/filtermfc9330cdw : ligne 63 : 17914 Fini eval cat $INPUT_TEMP
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] 17915 | $PSCONV $PSCONV_OP
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] 17916 Erreur de segmentation | $BRCONV $BRCONV_OP
juil. 23 17:14:24 Schenker cupsd[17868]: [Job 36] PID 17878 (/usr/lib/cups/filter/brother_lpdwrapper_mfc9330cdw) exited with no errors.
…
(正如您可能已经猜到的,“Erreur de分段”是法语“分段错误”的意思。)
我的猜测是驱动程序正在尝试使用 64 位库而不是 32 位库。我该如何检查,和/或我可以做什么来强制它使用 32 位库?
编辑:显然他们确实使用 32 位库:
$ ldd /opt/brother/Printers/mfc9330cdw/cupswrapper/brcupsconfpt1
linux-gate.so.1 (0xf7ed4000)
libc.so.6 => /lib/libc.so.6 (0xf7d10000)
/lib/ld-linux.so.2 (0xf7ed6000)
我必须提到我读过这个常见问题解答然后brother_lpdwrapper_mfc9330cdw
做存在于两个都 /usr/lib/cups/filter/
和/usr/lib64/cups/filter/
。前者实际上已被使用(事实上我能够更改其中的调试级别)。
答案1
实际上这个问题与架构无关。 “偶然”我的笔记本电脑死机了,我发现自己陷入了困境“无法加载 SELinux 策略。冻结。”启动时的情况,然后在 SELinux 禁用的情况下,打印机可以正常工作。
显然众所周知,SELinux 会阻止 Brother 打印机驱动程序完成其工作自 Fedora 21 起。
解决方案非常简单。 引用上面链接的错误报告的结束评论:
为此有一个布尔值。
setsebool -P cups_execmem 1