CUPS
CUPS のサイト より:
- "CUPS は標準ベースの、Apple によって開発されている OS X® やその他の UNIX® ライクなオペレーティングシステム向けのオープンソースの印刷システムです。"
LPRNG など印刷パッケージは他にも存在しますが、使いやすい Common Unix Printing System が最も人気があります。
目次
CUPS Linux 印刷ワークフロー
cups バージョン 1.5.3-3 現在、Arch Linux は新しい pdf ベースの印刷ワークフローを使用します。詳しくは PDF standard printing job format を読んで下さい。昔のワークフローは CUPS filtering chart に載っています。 Linux の印刷に関する問題の一般的な説明は ここ にあります。
プリンターの設定には2つの方法があります。
- ネットワーク上で CUPS サーバーが動作していてプリンターが共有されている場合、必要なのはクライアントパッケージをインストールすることだけです。
- プリンターがシステムに直接接続されていたり IPP ネットワークプリンターにアクセスできる場合、ローカルの CUPS サーバーをセットアップします。
クライアントパッケージのインストール
libcups が唯一必要なパッケージです。公式リポジトリからインストールしてください。
次に CUPS サーバーの IP アドレスかホストネームを /etc/cups/client.conf
の ServerName
の後に加えて下さい。これで終わりです。アプリケーションが CUPS サーバーによって共有されているプリンターをすぐに見つけるはずです。
高度なネットワークセットアップ
ネットワーク上の未知の共有ドライバを見つけるために Avahi ブラウジングを有効にして cupsd+cups-browsed のインスタンス全体をクライアントで動かすことも可能です。サーバーがこれはわからないような巨大なセットアップで便利になります。
CUPS を32ビットの chroot 環境にインストールする
32ビットの chroot 環境を使って64ビットのベースインストールをした場合、32ビット環境で明示的に CUPS をインストールする必要はありません。chroot 環境からインストールした CUPS プリンターにアクセスするには、/var/run/cups
ディレクトリを chroot 環境の同じ場所にバインドしなくてはなりません。chroot にディレクトリ (おそらく存在しません) を作り (-o bind
をコマンドに指定して) マウントすれば、32ビット chroot アプリケーションからすぐにプリンターが使えるようになるはずです。
# mkdir /path/to/chroot/var/run/cups # Example: # mkdir /opt/arch32/var/run/cups # mount -o bind /var/run/cups /path/to/chroot/var/run/cups
サーバーパッケージのインストール
以下のパッケージとプリンタードライバが必要になります。公式リポジトリからインストールしてください。
- cups - CUPS デーモン
- ghostscript - (任意) PostScript インタプリタ
- gsfonts - GhostScript 標準 Type1 フォント
ネットワークを介したプリンターブラウジングを有効にしたいのならば、avahi もインストールして systemd を使って avahi-daemon.service
を有効にしてください。
Samba プロトコルを使ってシステムをネットワークプリンターに接続する場合、もしくはシステムを Windows クライアント用の印刷サーバーにする場合、samba もインストールしてください。
プリンタードライバ
以下はドライバパッケージの一部です。プリンターに合わせて適切なドライバを選んで下さい:
- cndrvcups-lbAUR - Canon の UFR2 ドライバーで LBP, iR, MF シリーズのプリンターをサポートしています。パッケージは AUR から利用可能です。
- cnijfilter-mg4200AUR - Canon MG4200 のプリンタードライバー。
- cups-pdf - 送られたジョブから PDF を生成する仮想 PDF プリンターを設定するためのパッケージ。
- foo2zjsAUR - HP Laserjet 1018 など ZjStream プロトコルを使うプリンターのためのドライバー。ここ に詳細があります。パッケージは AUR から利用可能です。
- foomatic-db, foomatic-db-engine, foomatic-db-nonfree - Foomatic は Unix でフリーソフトウェアのプリンタードライバをスプーラと統合するデータベース駆動型のシステムです。
- gutenprint - Canon, Epson, Lexmark, Sony, Olympus, PCL のプリンターで GhostScript, CUPS, Foomatic, GIMP を使うための高品質なドライバのコレクション
- hplip - HP の DeskJet, OfficeJet, Photosmart, Business Inkjet と複数の LaserJet プリンター機種、そして多数の Brother プリンター用のドライバーです。
- hpojAUR - HP の Officejet を使っているのならば、このパッケージをインストールして指示に従ってこのスレッドに書かれているような問題を回避する必要があります。パッケージは AUR から利用可能です。
- samsung-unified-driverAUR - Samsung のプリンターとスキャナー用の統合 Linux ドライバー。ML-2160 などの新しいプリンターで必要になります。パッケージは AUR から利用可能です。
- splix - SPL (Samsung Printer Language) プリンターに対応する Samsung のドライバーです。
どのドライバーパッケージをインストールすればいいかわからなかったり、使っているドライバーが動いているのかどうか不明な場合、全てのドライバーをインストールするのが一番簡単な解決策です。パッケージの名前とは関係ないドライバーが必要になることもあるので注意してください。例えば、Brother HL-2140 には hplip ドライバーをインストールする必要があります。
プリンター PPD のダウンロード
プリンターによっては、この手順は必要ないかもしれません。標準の CUPS にすでに相当数の PPD (Postscript Printer Description) ファイルが含まれているからです。さらに、foomatic-filters, gimp-print, hplip パッケージにも少数の PPD ファイルが入っており CUPS によって自動で検知されます。
以下は Linux Printing ウェブサイトから引用した PPD ファイルの説明です:
- "全ての PostScript プリンターには、特定のプリンター機種に関するプリンター固有の情報が含まれた PPD ファイルがメーカーによって提供されています: プリンターのカラーやフォント、PostScript レベルなどプリンターの基本的な機能と、用紙サイズや解像度などユーザーが調整できるオプション。"
プリンターの PPD が CUPS に存在しない時は:
- AUR をチェックしてプリンターやメーカーのパッケージが存在しないか確認してください
- OpenPrinting データベース にアクセスしてメーカーとプリンターの機種を選択してください
- メーカーのサイトに行って GNU/Linux 用のドライバーを配布してないか検索してください
プリンタードライバーの他のソース
Turboprint は GNU/Linux でサポートされていないプリンター (例えば Canon i*) 用のプロプライエタリのドライバーです。CUPS とは違って、高品質の印刷にはウォーターマークが加えられたり料金を支払う必要があります。
ハードウェアのサポートと設定
USB プリンター
USB プリンターには2つの方法でアクセスが可能です: usblp カーネルモジュールと libusb。前者はクラシックな方法になります。やっていることはシンプルです: シリアルデータストリームとしてデータをデバイスファイルに書き出してプリンターに送信します。同じデバイスファイルを読むことで bi-di アクセスが可能になり、インク残量や状態、プリンタ性能情報 (PJL) を読み出せます。シンプルなプリンタでは問題なく動作しますが、複合機 (プリンタ・スキャナ) には適しておらず HP などのメーカーはバックエンドを提供しています。ソース: here。
usblp のブラックリスト化
USB プリンタが動作しない問題がある場合、usblp
カーネルモジュールのブラックリスト化を試すことができます:
/etc/modprobe.d/blacklistusblp.conf
blacklist usblp
カスタムカーネルのユーザーは先に進む前に usbcore
カーネルモジュールを手動でロードする必要があるかもしれません。
モジュールをインストールしたら、プリンタを接続して次を実行することでカーネルがプリンタを検知したかどうか確認できます:
# tail /var/log/messages.log
もしくは
# dmesg
usblp
を使っている場合、プリンタが検知されると以下のような出力がされているはずです:
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920 Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver
usblp
をブラックリストに入れた場合、以下のように表示されます:
usb 3-2: new full speed USB device using uhci_hcd and address 3 usb 3-2: configuration #1 chosen from 1 choice
パラレルポートプリンター
パラレルポートプリンターを使うには lp
, parport
, parport_pc
カーネルモジュールをロードする必要があります。
次を実行してセットアップを確認してください:
# tail /var/log/messages.log
おそらく次のような表示があるはずです:
lp0: using parport0 (polling).
USB からパラレルポートへの変換器を使っている場合、CUPS はプリンターを検知することができません。対策としては、異なる接続タイプを使ってプリンターを追加し /etc/cups/printers.conf
の DeviceID を変更してください:
DeviceID = parallel:/dev/usb/lp0
HP プリンター
HP のプリンターでは HP の Linux セットアップツールを使ってインストールすることも可能です。公式リポジトリから hplip をインストールしてください。
qt フロントエンドで起動するには:
# hp-setup -u
コマンドラインで起動するには:
# hp-setup -i
systray スプールマネージャを起動するには:
$ hp-systray
PPD ファイルは /usr/share/ppd/HP/
にあります。
プロプライエタリの HP プラグインが必要なプリンター (Laserjet Pro P1102w や 1020 など) を使うには、AUR から hplip-pluginAUR パッケージをインストールしてください。
設定
CUPS がインストールされた今、印刷ソリューションを設定する様々なオプションが存在します。いつもどおり、コマンドラインを使う方法は自由に使えます。CUPS にはフル機能のウェブインターフェイスも内蔵されています。同じく、GNOME や KDE などのデスクトップ環境にはプリンターの管理を助ける便利なプログラムが付いています。あなたの必要に応じて、どれか一つの方法を選ぶことが可能です。
コンピュータに直接プリンターを接続するのではなく、ネットワークプリンターに接続するつもりならば、先に CUPS プリンター共有のページを読んでおくといいかもしれません。GNU/Linux システム間でのプリンターの共有はとても簡単でほとんど設定が必要ありません。他方、Windows と GNU/Linux で共有するにはちょっとした作業が必要になります。
CUPS デーモン
CUPS をインストールしたら、systemd を使って org.cups.cupsd.service
を起動できます。必要に応じて有効にしてください。
任意で、CUPS は Avahi のブラウジングを使ってネットワーク上にある共有プリンターを発見することができます。サーバーがどこにあるのかわからないような巨大なセットアップを使っているときに便利です。この機能を使用するには、cups-browsed.service
systemd ユニットを起動してください。
ウェブインターフェイスとツールキット
デーモンが起動したら、ブラウザを開いて次のページに行って下さい: http://localhost:631 (localhost は /etc/hostname
に書かれているホストネームに置き換える必要があるかもしれません)。
ここから、ウィザードに従ってプリンターを追加してください。通常は Adding Printers and Classes と Add Printer をクリックしてウィザードを開始します。ユーザー名とパスワードの入力を求められたら、root でログインしてください。プリンターに割り当てられる名前にあまり意味はありません、これは 'location' や 'description' にも同じことが言えます。次に、選択するデバイスのリストが表示されます。プリンターの実際の名前はラベルの横に表示されます (例: USB プリンターなら USB Printer #1 の後)。最後に、適切なドライバを選択すれば設定は完了です。
Maintenance ドロップダウンメニューから Print Test Page を押して設定をテストしてください。印刷がされなかったり設定が正しく適用されていない場合は、おそらく適切なプリンタードライバが欠けているのが問題です。
CUPS の管理
ウェブインターフェイスでプリンターを管理する時 (例: プリンターを追加・削除する、印刷タスクを停止する) はユーザー名とパスワードが必要になります。デフォルトのユーザー名は sys グループに割り当てられたユーザー、もしくは root です。他の admin グループ (例: printadmin) は /etc/cups/cups-files.conf
の SystemGroup
行に追加することができます (この行を新しく加える必要があるかもしれません):
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...SystemGroup sys rootSystemGroup printadmin
グループを作成してください (man groupadd
):
# groupadd printadmin # groupadd lp
グループにユーザーを追加してください (man gpasswd
):
# gpasswd -a username printadmin # for printer administration # gpasswd -a username lp # for printing priviledges
変更を適用するには org.cups.cupsd.service
デーモンを再起動してログインし直す必要があります:
# systemctl restart org.cups.cupsd.service
root アカウントがロックされている (つまり sudo を使っている) と、デフォルトのユーザー名 (root) とパスワードでは CUPS の管理インターフェイスにログインできません。この投稿を読んで他のユーザーを cups の管理者として追加してください。
ウェブインターフェイスにリモートアクセスする
デフォルトでは、CUPS のウェブインターフェイスは localhost (インストールしたコンピュータ) からしかアクセスできないようになっています。インターフェイスに外部からアクセスするには、以下の変更を /etc/cups/cupsd.conf
ファイルに加えて下さい。次の行を:
Listen localhost:631
下のように置き換えてください。
Port 631
これで CUPS がリクエストを受け取るようになります。
3つのアクセスレベルを設定することができます:
<Location /> #サーバーへのアクセス <Location /admin> #admin ページヘのアクセス <Location /admin/conf> #設定ファイルへのアクセス
リモートホストに以上のレベルのどれか一つを与えるには、レベルのセクションに Allow
の記述を追加してください。Allow
は以下のような形式で使うことができます:
Allow from all Allow from host.domain.com Allow from *.domain.com Allow from ip-address Allow from ip-address/netmask Allow from @LOCAL
また、Deny
も使うことが可能です。例えば、ローカルネットワークインターフェイス上にあるホスト全てに完全なアクセス権を与えるには、ファイル /etc/cups/cupsd.conf
に以下を記述します:
# Restrict access to the server... # By default only localhost connections are possible <Location /> Order allow,deny Allow from @LOCAL </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow from @LOCAL </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow From @LOCAL </Location>
次の設定も追加する必要があるかもしれません:
DefaultEncryption Never
この設定によって次のエラーを止めることができます: 426 - Upgrade Required when using the CUPS web interface from a remote machine。
コマンドライン設定
コマンドラインからツール (lp* と cups* コマンドファミリー) を使って CUPS を完全に操作することができます。
Arch Linux では、ほとんどのコマンドはシェルの自動補完をサポートしています。 また、コマンドラインのスイッチはグループ化することはできないので注意してください。
- デバイスを一覧する
# lpinfo -v
- ドライバを一覧する
# lpinfo -m
- 新しいプリンターを追加する
# lpadmin -p printer -E -v device -P ppd
printer はあなたが自由に設定できます。デバイスは lpinfo -v
コマンドで取得できます。
例:
# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -P /usr/share/ppd/HP/hp-deskjet_940c.ppd.gz
以下のコマンドの、printer はあなたが設定したプリンターの名前に置き換えてください。
- プリンターから raw ドライバーを使用する
# lpadmin -p printer -m raw
- デフォルトのプリンターを設定する
$ lpoptions -d printer
- 状態をチェックする
$ lpstat -s $ lpstat -p printer
- プリンターを無効にする
# cupsdisable printer
- プリンターを有効にする
# cupsenable printer
- プリンターを削除する
まず印刷要求のエントリを全て拒否するように設定してください:
# cupsreject printer
次にプリンターを無効にしてください。
# cupsdisable printer
最後にプリンターを削除してください。
# lpadmin -x printer
- ファイルを印刷する
$ lpr file $ lpr -# 17 file # ファイルを17部印刷する $ echo "Hello, world!" | lpr -p # print the result of a command. The -p switch adds a header.
- 印刷キューを確認する
$ lpq $ lpq -a # on all printers
- 印刷キューを削除する
# lprm # 最後のエントリを削除 # lprm - # 全てのエントリを削除
他の CUPS インターフェイス
GNOME
system-config-printer をインストールすることでプリンターを設定・管理できます。このプログラムは複数の gnome 依存パッケージを呼びこむことがあります。
cups スケジューラを管理するのに必要な特権をユーザーが持っていない場合、system-config-printer は起動時に root パスワードの入力を求めます。以下の設定をすることでこれを回避することが可能です。
1. cups スケジューラを管理するグループを作成してください:
# groupadd lpadmin
2. ユーザーを新しく作成したグループに追加してください:
# usermod -aG lpadmin username
3. cups が新しく作成したグループを使うように設定してください:
/etc/cups/cups-files.conf
... SystemGroup sys root lpadmin ...
4. cups を再起動してください:
# systemctl restart org.cups.cupsd.service
5. 一度ログアウトしてからログインしなおすか、コンピュータを再起動してください。
KDE
KDE のユーザーはコントロールセンターからプリンターを変更することが可能です。ハードウェアグループにプリンターインターフェイスが現れない時は kdeutils-print-manager パッケージをインストールする必要があるかもしれません。インターフェイスの使用方法など詳しい情報はデスクトップ環境のドキュメントを参照してください。
その他
PDF 仮想プリンター
cups-pdf パッケージを使うことで送信されたデータから PDF を作成する仮想プリンターをセットアップすることができます。このパッケージは必須ではありませんが、使うと非常に便利です。
パッケージをインストールした後、他のプリンターと同じようにウェブインターフェイスを使って設定してください。cups の印刷マネージャ http://localhost:631 にアクセスして選択してください:
Administration -> Add Printer Select CUPS-PDF (Virtual PDF), choose for the make and driver: Make: Generic Driver: Generic CUPS-PDF Printer
生成された PDF ドキュメントは /var/spool/cups-pdf
のサブディレクトリに置かれます。通常、サブディレクトリにはジョブを実行したユーザーの名前が付けられます。ちょっとした設定で、印刷した PDF ドキュメントをもっと簡単に見つけられるようにできます。/etc/cups/cups-pdf.conf
を編集して、次の行を
#Out /var/spool/cups-pdf/${USER}
下のように変更してください
Out ${HOME}
PostScript に印刷する
CUPS-PDF (仮想 PDF プリンター) は実際は PostScript ファイルを作成してから ps2pdf ユーティリティを使って PDF を作成しています。PostScript に印刷するには、印刷ダイアログでプリンターとして "CUPS-PDF" を選択し、"print to file" のチェックボックスを選択して、印刷を押し、filename.ps を入力して保存をクリックするだけです。これはファックスなどで便利です。
トラブルシューティング
CUPS/トラブルシューティングを見て下さい。
参照
- 公式 CUPS ドキュメント, ローカルにインストールされたドキュメント
- 公式 CUPS ウェブサイト
- OpenPrinting ホームページ
- Arch Linux ユーザーフォーラム