如何让 Brother 打印机驱动程序在 Fedora 上运行?

如何让 Brother 打印机驱动程序在 Fedora 上运行?

我有两台 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

相关内容