NixOSとプリンタードライバーの格闘。
LinuxをメインOSとして使う上で、プリンタードライバーをどうやって手に入れるかという問題がある。プリンターメーカーで純正のドライバーを提供していればいいが、そうでない場合が多い。サポートされているプリンターを手に入れるか、ドライバーが提供されているディストリビューションを選択するか、なんとか頑張って動くドライバーを探すかである。
LinuxはCUPSという仕組みを使って印刷ができるという。これはWebブラウザーで下記アドレスを入力すると設定ができる。
http://localhost:631/
CUPSのページが開く。そこからプリンター追加を選んでメーカーを探す。
当方富士ゼロックス製のカラーレーザープリンターを使用している。残念ながら富士ゼロックスはなく、富士フイルムとゼロックスがあった。見ると、該当機種はなく、次の手を考える。
メーカーのModel一覧に該当する機種がなかったためGenericからドライバーを選択した。単純に印刷できれば良いとするのなら、Genericからプリンタードライバーを選択すればとりあえず印刷できた。
ここで困ったのが、カラー印刷ができないこと。当方カラーレーザープリンターを使用しているが、カラーを選択しても白黒印刷で出力されてしまった。そのためGenericからModelを入れ替えては出力テストを繰り返した。
できればWindowsと同じようにカラー印刷がしたい。その思いから1時間以上かけてテストしたが、うまくカラー印刷できなかった。
Genericからの選択を諦めて、メーカー内のModelから近い機種を探してみた。
米国ゼロックスではPhaserシリーズであるため、日本国内のDocuPrint Cとは名付け規則が違う。画像検索でDocuPrint CP400dを探すと海外ではPhaser 6600というモデル名で販売されていることがわかった。しかし6600シリーズは無かった。
そこで、同じゼロックスならドライバーはある程度使えるかもと思い、近い機種を選んで出力テストをした。だが、これでも白黒印刷だったり、おかしな文字が印刷されたりして満足行く結果が得られなかった。
そこで、メーカーのダウンロードページに行ってみた。
Linux用としてドライバーが提供されていたが、.rpmパッケージと.debパッケージであった。
ディストリビューショは、Red Hat Enterprise Linux 7 Desktop (64bit)とあり独自パッケージを採用しているNixOSには使えない。Debian系の.debパッケージも同様。ここで考えてパッケージファイルを展開してNixOSの
/var/lib/cups/ppd
にファイルをコピーしてみた。ppdファイルが読み込めればプリンタードライバーが正常動作しないかと思った。結果はだめ。
そこで、NixOSのパッケージサーチでドライバーを検索した。
ドンピシャで富士ゼロックスのLinuxプリントドライバーが出てきた。迷わずインストールする。
nix-env -iA nixos.fxlinuxprint
これでGUIのプリンター設定から追加できるかと思いきや、FXドライバーは見えてこない。CUPSの設定からも見えない。さてどうしよう。
ネット上を検索してまわると、プリンター設定コマンドがあることを知る。
system-config-printer
CUPSの設定とほぼ同じことができる。個人的にはこちらのほうが好みだった。ここでChoose DriverからSearch for a Printer driver to downloadを選択して探してみた。
機種名のうち400dを使って検索すると、複数のメーカーの400dとつく機種のドライバーが出てきた。そのうちの一つ、Savin SP C400DNを選んだ。ドライバー種類でPDFとPostScriptが選べるのでPDFを選択。どうもRicoh製のようだ。
そのままテストページ印刷をすると、なんとカラーでテストページが出てきた!
デフォルトプリンターに設定しておくことで、lprコマンドからの印刷も問題なくできた。
さんざん格闘しての結果が他社プリンタードライバーでカラー印刷ができたというオチがついた。
UbuntuやDebianなどのメジャーディストリビューションを使えばこんな問題も起きないのだけれど、NixOSが好きになってしまったのでしょうがない。しかし、nix-envコマンドでインストールしたfxlinuxprintアプリケーションは何か役に立っているのだろうか?コマンドラインから設定する方法があるのかもしれないが、自分には見つけられなかった。
NixOSにおいて、Linuxのプリンタードライバーに悩む方の参考になればと思い公開しました。