Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Debian sarge で EPSON LP-9000C が CUPS から使えない

何か印刷できないよ、というときの対処法も含めて。
まず、 /etc/cups/cupsd.conf の LogLevel を default の "info" から "debug2" に変更。これで、 /var/log/cups/error_log にフルに情報が出力される(印刷したりする際に tail -n 0 -f して見てみよう)。なお、 error_log の permission を 660 あたりにして、さらに作業が終わったら loglevel を元に戻すこと。パスワードのハッシュが漏れる可能性があるから。
さて、次のコマンドラインで得られた出力を見るわけだが……

tail -n 0 -f /var/log/cups/error_log > ~/cups.error.lp-9000c

今回のケースは割とラクに問題点が見つかった。

D [28/Jan/2006:12:53:57 +0900] [Job 766] foomatic-gswrapper: gs '-dBATCH' '-dPARANOIDSAFER' 
'-dQUIET' '-dNOPAUSE' '-sDEVICE=lp9000c' '-r600x600' '-sJobInfo=600x600;A4' '-sPAPERSIZE=a4'
 '-sDriver=EpsonPageColor' '-sModel=LP-XX00C' '-sOutputFile=/dev/fd/3' '/dev/fd/0' 3>&1 1>&2
D [28/Jan/2006:12:53:58 +0900] [Job 766] Unknown device: lp9000c

lp9000c というデバイスがない、と GhostScript が言っている。実際、 "gs -help | grep lp9000c" はマッチしない。この辺の指示を指定しているのは、 CUPS でモデル名/ドライバの設定を行う際の "Epson LP-9000C Foomatic/eplaser-jp (recommended)" って奴みたい。
というわけで、次のどちらかが要る。

  • lp9000c 以外のデバイスを使うように指示する CUPS の設定ファイル
  • バイス lp9000c をサポートする(-sDEVICE=lp9000c と指定できる) GhostScript を探す

今回は、結局両方要ることになった。
まず、デバイス lp9000c をサポートする GhostScript はエプソンアヴァシスが公開しているようなのだけれど、 Debian で使う方法がよく分からなかったのでこれはパス。代わりに、 Debian で LP-XX00C を使う方法のページ を参考に、 GhostScript に opvp というデバイスを指定する方法を使うことにする。
上記ページの手順はうまくいかなかったので、まず opfc のページ の作業に従って opvp 対応の gs-esp (と関係パッケージ)だけをインストールする。次に http://mambo.kuhp.kyoto-u.ac.jp/~takushi/debian/ に直接アクセスし、 eplaser-opvp_0.1.3-1_i386.deb をダウンロード。そして

$ sudo dpkg -i eplaser-opvp_0.1.3-1_i386.deb

インストールが無事に済めば、 CUPS でモデル名に "Epson LP-XX00C, opvpepcolor" が指定できるようになっているので、これを指定する。

……が今度は GhostScript に "opvp なんてドライバはない" と言われる。どうやら gs-esp ではなく gs を呼んでいるのが原因らしい(実際 "gs-esp -help | grep opvp" はマッチする)。
これを修正する方法としては、次の 2 つがある。

  • /etc/cups/ppd/プリンタ名.ppd を、バックアップをとった上で次のように編集する("gs" のところを "gs-esp" にしただけ)。
*FoomaticRIPCommandLine: "gs-esp -q -dBATCH -dPARANOIDSAFER -dQUIET -dNOPA&&
USE -sDEVICE=opvp%A%Z -sDriver=EpsonPageColor -sModel=LP-XX00C -sOutputFile=- -"
  • 実は /usr/bin/gs は symbolic link なので、この向きを変える。次のコマンドで出てくる選択肢で、 gs-esp を指定すればよい。こっちの方がたぶん正当。
$ sudo update-alternatives --config gs

当方はこれで印刷できました。