如何讓 Brother 列印機驅動程序在 Fedora 上工作?
我有兩台 Brother 列印機:一台 QL-1050 標籤列印機(USB 插入)和一台 MFC-9330CDW(wifi)。
兩者都可以在 Ubuntu 筆記型電腦上正常工作,但我很難讓它們在 Fedora 28 下列印(實際上 F23 也有同樣的問題,但從未設法解決這個問題)。
我在兄弟網站上下載了官方驅動:
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 segmentation”是法語中“segmentation fault”的意思。)
我的猜測是驅動程序正在嘗試使用 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/
實際上這個問題與架構無關。偶然地,我的筆記型電腦當機了,我發現自己處於“無法載入 SELinux 策略。當機”。啟動時的情況,然後在禁用 SELinux 的情況下笨拙地列印機工作。
顯然,自 Fedora 21 以來**,SELinux 就阻止了 Brother 列印機驅動程序的工作。**
解決方案非常簡單。 引用上面連結的錯誤報告的結束評論:
有一個布爾值。
setsebool -P cups_execmem 1