おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

今年もよろしくお願いします&foomatic-rip のデバッグオプション

新年あけましておめでとうございます。本年もよろしくお願い致します。

年末になにやら毎日日記をつないでいくというイベントが一杯行われてましたねー。皆さん面白いネタたくさんあるなーとちょいちょい覗き見してました。

ということで日本人なので、私も正月の間*1 はせめてここ更新しようかなって思います。みなさんみたいにコア技術があるわけじゃないし真面目な技術者じゃないので、その日の思いついたことをダラダラと……。

んで、元旦にふさわしいネタはいくつか仕込んでたんですが、詰め切れないうちに寝正月を決め込んでしまったので、いきなり今日から落とすかと思いした。ということで本日は手持ちのネタをほいっと出して終わりにします。

なおこの記事は某雑誌に書いた(未刊行の)記事の予告編になってます*2。ネタバレにはなってないと思うので、どの雑誌か見つけたら併読してくださいね。

foomatic-rip のデバッグオプション

日経 Linux の紙先生の連載:

日経 Linux (リナックス) 2011年 08月号 [雑誌]

日経 Linux (リナックス) 2011年 08月号 [雑誌]

(↑は第一回) とか、Software Design の 2011 年 11 月号:のプリンタ特集を見た方ならお分かりだと思いますが、CUPS の印刷オプションというのはフィルターへの引数に文字列で渡されてくるんですよね(詳しくは CUPS Filter の設計ドキュメント参照)。ので、引数をながめてみれば結構いろんなことが分かるんですよね。

んで、私自身はフィルタパイプラインにある、よく使われるフィルタ (例えば pdftopdf とか) をシェルスクリプトでラップするとか乱暴なやり方をやってたんですが、これはちょっとオススメできないんでもうちょっといいやり方ないもんかなーというか、/etc/cups/cups.conf の LogLevel ぐらい見てくれよって思ってんたですよねぇ〜。

けど、ここでふと気づいたんですが、CUPS 印刷システムで非常にメジャーなフィルターに foomatic-rip というのがあるんですね。もしかして、コイツにもデバッグオプションってあるんじゃね? と思って、man してみたら……

CONFIGURATION FILE
       The file /etc/foomatic/filter.conf is  read  whenever  foomatic-rip  is
       executed.  It  allows  to  configure  the  behavior  of foomatic-rip as
       follows  (lines  beginning  with  #  are  comments  and  therefore  get
       ignored):

       ...

       debug: 0|1
                 Turns on (1) or off (0) the debug mode. This is equivalent to
                 supplying the --debug command line option. Default setting is
                 0.

……あるじゃん。

ということでさっそく手持ちの Ubuntu 11.10 でやってみよう、と思って sudo vi /etc/foomatic/filter.conf してみたら、

# This file allows you to configure the "foomatic-rip" filter.

# You can force reconfiguration managed via debconf by running the
# following command:
#   dpkg-reconfigure foomatic-filters
# You may need to change the lowest priority of questions to be presented
# using the switch "-p" to access some or any of these options.

ってあるじゃーないですか。なーんだ、dpkg-reconfigure でできるんだ。偉いぞ Debian
ということでやってみようじゃないか。sudo dpkg-reconfigure foomatic-filters するといくつか選択項目が提示されるわけですが (ここらへんは Debian/Ubuntu 使いなら常識ですよね)、その中にこんな感じでデバッグオプションのオン/オフが切り替えられるようになってるんですね。

メッセージも日本語になってるし、もう間違えっこないですね。

なおメッセージにもあるとおり、このオプションは /tmp に lp ユーザー権限でファイル作ったりしますので、実運用しているプリントサーバーなんかでは不具合発見時以外はオンにしないでくださいね。

さて、こうやって foomatic-rip を利用するプリンターで印刷すると:

$ ls -l /tmp/foomatic-*
-rw------- 1 lp lp 2460 2012-01-01 21:19 /tmp/foomatic-rip.log
-rw------- 1 lp lp    0 2012-01-01 21:19 /tmp/foomatic-rip.ps
$ sudo head /tmp/foomatic-rip.log
foomatic-rip version 4.0.9.241 running...
called with arguments: '67', 'anonymous', 'Test Page', '1', 'job-uuid=urn:uuid:6c604626-a80a-343c-5887-c066b2dd5522 job-originating-host-name=localhost time-at-creation=1325420350 time-at-processing=1325420350 AP_D_InputSlot='
Getting input from file 
Parsing PPD file ...
Added option ColorSpace
Added option Resolution
Added option PageSize
Added option PrintoutMode
Added option ImageableArea
Added option PaperDimension

てーな感じでオプションが見られるようになるんですねー。

まぁこんなことをしたい人がどれだけいるかは分かりませんが、foomatic-rip のバグレポには少なくとも使えますね :)

そして明日は

テーマ決めてません(ぉ

明日は東京東部翻訳カフェだから、翻訳ネタでも書こうかなー。
では!

*1:定義はいろいろあるでしょうかと思いますがとりあえず1/15までということで。

*2:というか、スペースの関係で入らなかったのを流用しただけ^^;