English

Let's Use CUPS with Linux

2006年12月:このページは今後、管理をする予定はありません。
2005年5月追記:今じゃ、CUPS使うのが当たり前ですが、これを書いた当時はlpr コマンドで/etc/printcap で設定するのが普通で、市販インクジェットプリンタのLinux 用ドライバも入手するのも困難、ネットワークで印刷するのは至難の技でした。CUPSは画期的だったのです。

Last revised on April 3rd, 2003
minor touch on June 25th, 2003
reformatted html on August 5th, 2003

序、
Linuxのこれからの時代の印刷はLPRngではなくCUPS(Common Unix Printing System)となっていくでしょう。何故?それはLPRngが抱えていた問題点をすべて解決しているからです。

このホームページでは実例を挙げながらCUPSの機能のごく一面を紹介していきます。

<目次>
1、印刷に至るまでの(短い)道のり
2、コマゴマとした設定
3、ネットワーク
  3.1 前準備
  3.2 Samba
  3.3 Linux Client からの印刷
  3.4 小型Ethernet プリントサーバ
4、日本語印刷
5、BasiliskIIからの印刷
6、その他
7、参考文献






1、印刷に至るまでの(短い)道のり:

例えば一台のプリンタを使えるようにしたい!なんて時の話をします。

ここでは取りあえず私が使っているパラレルポートにつながっている EPSON-PM870C、使用環境Debian GNU/Linux 3.0 (woody) 、に話を限定します。一通 りcupsysや、cupsys-bsd、cupsys-client、等のパッケージをインストールします。エプソンコーワ(2009年現在アヴァシス株式会社) のLinux Driver Site からPM870C 用 pips-cups ドライバをダウンロード、インストールし、更に必要であれば(他のプリンタも使うのであれば) cupsysのドライバに関するパッケージをインストールします。
ルートユーザになって、 コマンドラインから
# lpadmin -p pm870c -E -v parallel:/dev/lp0 -m ekpm870c.ppd
と打ち込めば不思議な事に、印刷できるようになってしまうのです。

CUPS初心者にお薦めなのが、ウェブブラウザでの設定です。
コマンドラインから
# mozilla http://localhost:631

とすれば、設定web cgiが起動されます。

試しに/usr/share/doc/gs/examples下にある golfer.ps でも印刷してみましょ う。(テストですからPostScriptファイルなら何でもいいです。但し日本語は ちょっと待ってください。)
$ lp -d pm870c /usr/share/doc/gs/examples/golfer.ps
あるいは
$ lpr -P pm870c /usr/share/doc/gs/examples/golfer.ps

これをLPRngで同じ事をしようと思ったら/etc/printcapや、それに用いるフィルタファイルの設定など、手間は3倍どころでは済みません。(もっともフィルタファイルはCUPSでも使うのですが。但しはるかにエレガントな方法です。)

<目次へ>






2、コマゴマとした設定:

LPRngでは解決できなかった、もう一つの事は印刷時のプリンタ設定です。場合によって、高速印刷、白黒印刷、フォトファイン印刷・・・・・書き出したらきりがありませんね・・・・・どうしてました?私がやっていたのは/etc/printcapのエントリを複数、必要な分だけ用意し、使い分けていました。

CUPSではその必要が無いのです!

単にコマンドラインから
# lpadmin -p pm870c -o Ink=MONO
# lpadmin -p pm870c -o PageSize=A4_AUTO
などなど、コマンドラインで指定すれば良いのです。
(これもcups のweb cgi : http://localhost:631でも設定できます。お薦めです。)

ちなみに 設定できるオプションはコマンドラインから
# lpoptions -p pm870c -l
から調べられます。

<目次へ>





3、ネットワーク

CUPSを使って得られる利点は何でしょう?

近ごろEPSONのドライバであるPIPS(Photo Image Printing System)をはじめ、
様々なメーカのCUPSドライバが開発、出回っています。つまり様々なプリンタに対応しているという分かりやすい利点もあるのですが、私が述べるとしたら、パソコン一台・プリンタ一台と言う単純な環境から、ネットワーク(LAN)、(WANも?)を介した環境まで、使用形態を選ばず印刷できるという点でしょう。


3.1 前準備
まず、1、2、に従ってサーバで印刷できるのを確認してください。。


3.2 Samba
Samba が正常にインストールされていることが前提です。
``SambaでCUPS''
http://www.kde.gr.jp/document/printing/samba_cups.html
に詳しく書かれていますが、例えばSAMBA2.2上では、/etc/samba/smb.confに
			printing = cups
			printcap name = cups
という項目を変更あるいは追加すればMS-Windows 上で認識されます。

大事なのはサーバの

			/etc/cups/mime.types
			/etc/cups/mime.convs

のraw設定のコメントアウトされている所を有効にすること!MS-Windowsから問題無く利用できるようになります。

# /etc/init.d/samba restart

をお忘れなく!(上記コマンドラインはDebian woodyの場合です。)


3.3 Linux Client からの印刷
当然WindowsクライアントからだけではなくLinuxクライアントからもCUPSは利用できます。驚く無かれホームディレクトリの~/.cupsrcに

ServerName 192.168.1.1


と記述さえすれば良いのです。もっともこれは簡単に言いすぎで、実際にはcupsys-clientパッケージをインストールする必要があるのですが。(それでも簡単でしょ?)(上記 192.168.1.1の部分は自分の環境にあったサーバIP アドレス、ホストネームに置き換えて下さい。)


3.4 小型Ethernet プリントサーバ
Planex社mini2等の小型Ethernetプリントサーバも利用できます。

コマンドラインから

# lpadmin -p pm760c -E -v lpd://192.168.1.220/lp -m C/escp2.ppd

(C/escp2.ppd は、debian上のプリンタ記述ファイルのデフォルト・パス /usr/share/cups/model/ より下のファイル位置を示してます。)
とプリンタを追加すれば良いだけなのです。(上記 192.168.1.220の部分は自分の環境にあったIP アドレス、ホストネームに置き換えて下さい。)
(これもウェブブラウザでhttp://server:631を見た方が・・・・楽?)

<目次へ>





4、日本語印刷

さて、肝心な日本語印刷ですが、問題無く使えます・・・・とは言いきれないのですが。
要はフィルタの設定とマシンパワーのようです。日本語印刷、フィルタの設定に関しては詳しくは

市山了一氏の``debianでCUPSとgimpprintを使おう''
http://www.bellbind.net/debian/cups-gimpprint.html


に詳細に記載されています。(このホームページは大変役に立ちました。感謝  m(__)m)


さて日本語処理に必要なマシンパワーについてです。例えばここではgs-cjkパッケージに含まれているgscjk_aj.psの印刷について述べますが、300MhzのGeode-GX1(x86互換)マシンを普段はプリンタ・ファイル・DHCP兼用サーバとして使っています。しかしこのGeode-GX1マシンでは実時間内に印刷を終わらせる事は出来ませんでした。(30分以上して忘れた頃にプリンタがじーこじーこと動き出しました。)ところが、cupsys-clientパッケージをAthlon 2000+ のlinuxクライアントに載せて、クライアントからGeode-GX1マシン経由で出力した所、問題無く瞬時にgscjk_aj.psを印刷できてしまいました。これ、どういう事なんでしょう?マシンの速度でしょうか、メモリ容量でしょうか?

何にしろ、LPRngではボトルネックとなるプリントサーバの処理速度はCUPSではボトルネックにならないという事らしいです。当然体感速度はLPRngよりも速いです。私の場合ではAthlon2000+という速度でしたが、恐らくクライアントは700Mhz前後でも日本語印刷出来ると思います(根拠なし)。

<目次へ>


5、BasiliskII からの印刷:

 2003年1月21日の時点では出来ませんでした。しかし、ふと2003年4月2日にやってみるとうまく動作しました。
 環境は次の通りです。

 プリントサーバ(DHCP兼家庭内LANサーバ)(GeodeGX1、300MHz)にNETATALK1.5.3.1-1を入れプリンタケーブルでPM870Cにつなぎます。CUPSの最新版(cups 1.1.18 gs-esp7.05など)をプリントサーバ(前述)にインストールし次の/etc/netatalk/papd.conf を用意し

temp:\
:pr=|/usr/bin/lpr -P pm870c :op=redrobin:\
:pd=/usr/share/cups/model/ekpm870c.ppd:
と設定しました。LaserWriter8 には version 8.6(E)を用いました。

# /etc/init.d/netatalk/restart


とすると印刷できてしまいました。どうも今まで netatalk との設定がうまく言っていなかったようです。このページはCUPSのページなのでNETATALK、BASILISKIIに関する設定は割愛しますが機会があれば別ページに書くつもりです。

<目次へ>


6.その他、未整理ですが、諸々の事を書きます

設定、運用上のTIPS

Cupsが動くようになるまでは、web cgi をブラウザ(http://localhost:631)で設定するのが無難です。設定最中にその場でエラー、設定ミスを指摘してくれるからです。

TroubleShooting:原則は/etc/cups/cupsd.confで対応すれば大抵解決します。
バックアップを取った後(!)、/etc/cups/cupsd.confを単純なものに換えていけば良いと思います。
cupsd.confに変更を加えた後は、
cupsysデーモンを再起動しないと意味ありません。debianの場合には
# /etc/init.d/cupsys restart

です。

以下は、間抜けながら私の/etc/cups/cupsd.confです。一回cupsd.confを消してしまい、ここまで復旧して動くようになったのでそれ以上は手を付けていません。分かっている人は笑ってやってください。でも動きます。


/etc/cups/cupsd.conf:


AccessLog /var/log/cups/access_log
ErrorLog /var/log/cups/error_log
LogLevel info
PageLog /var/log/cups/page_log
Printcap /etc/printcap.cups
User lp
Group sys
Port 631

Browsing Off
SystemGroup lpadmin

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>

<Location /admin>
AuthType None
AuthClass Anonymous
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>
<目次へ>



6.参考文献
( これらは大変参考になりました。)

[1]``debianでCUPSとgimpprintを使おう''
http://www.bellbind.net/debian/cups-gimpprint.html

市山了一氏著

[2]``SambaでCUPS''
http://www.kde.gr.jp/document/printing/samba_cups.html


[3]「CUPS:共通Unix印刷システム」
副題:「新世代の印刷システムを利用する」
マイケル・スウィート著(Michael R. Sweet)株式会社 沖データCUPSプロジェクト 訳
出版:株式会社ピアソン・エデュケーション 2002年8月20日初版 ¥2800+税

<目次へ>

TOP>LINUX>CUPS
Back to TOP>LINUX