「CUPS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(org.cups.cupsd.serviceをcups.serviceに置き換え)
 
(2人の利用者による、間の9版が非表示)
9行目: 9行目:
 
[[ru:CUPS]]
 
[[ru:CUPS]]
 
[[th:CUPS]]
 
[[th:CUPS]]
[[tr:CUPS]]
+
[[zh-hans:CUPS]]
[[zh-CN:CUPS]]
+
[[zh-hant:CUPS]]
[[zh-TW:CUPS]]
 
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|CUPS プリンター共有}}
+
{{Related|CUPS/プリンター共有}}
{{Related3|CUPS/Printer-specific problems|CUPS プリンター別の問題}}
+
{{Related|CUPS/プリンター別の問題}}
{{Related|Samba}}
 
{{Related4|LPRng}}
 
 
{{Related|CUPS/トラブルシューティング}}
 
{{Related|CUPS/トラブルシューティング}}
  +
{{Related|Samba}}
  +
{{Related|LPRng}}
 
{{Related articles end}}
 
{{Related articles end}}
   
  +
[https://www.cups.org/ CUPS] は標準ベースの、Apple によって開発されている macOS® やその他の UNIX® ライクなオペレーティングシステム向けのオープンソースの印刷システムです。
[http://www.cups.org/index.php CUPS のサイト] より:
 
:"''[[Wikipedia:ja:Common Unix Printing System|CUPS]] は標準ベースの、Apple によって開発されている OS X® やその他の UNIX® ライクなオペレーティングシステム向けのオープンソースの印刷システムです。''"
 
   
  +
== インストール ==
LPRNG など印刷パッケージは他にも存在しますが、使いやすい Common Unix Printing System が最も人気があります。
 
   
  +
{{Pkg|cups}} パッケージを[[インストール]]してください。
== CUPS Linux 印刷ワークフロー ==
 
{{Pkg|cups}} バージョン 1.5.3-3 現在、Arch Linux は新しい pdf ベースの印刷ワークフローを使用します。詳しくは [http://www.linuxfoundation.org/collaborate/workgroups/openprinting/pdfasstandardprintjobformat PDF standard printing job format] を読んで下さい。昔のワークフローは [https://wiki.linuxfoundation.org/en/OpenPrinting/Database/CUPS-Filter-Chart CUPS filtering chart] に載っています。
 
Linux の印刷に関する問題の一般的な説明は [http://www.linuxfoundation.org/collaborate/workgroups/openprinting ここ] にあります。
 
   
  +
PDF 文章に「印刷」したい場合、{{pkg|cups-pdf}} パッケージもインストールしてください。デフォルトでは、PDF ファイルは {{ic|/var/spool/cups-pdf/$USER}} に保存されます。作成場所は {{ic|/etc/cups/cups-pdf.conf}} で変更できます。
プリンターの設定には2つの方法があります。
 
* ネットワーク上で CUPS サーバーが動作していてプリンターが共有されている場合、必要なのはクライアントパッケージをインストールすることだけです。
 
* プリンターがシステムに直接接続されていたり IPP ネットワークプリンターにアクセスできる場合、ローカルの CUPS サーバーをセットアップします。
 
   
  +
インストールしたら {{ic|cups.service}} を[[起動]]・[[有効化]]してください。
== クライアントパッケージのインストール ==
 
   
  +
== 接続インターフェイス ==
{{Pkg|libcups}} が唯一必要なパッケージです。[[公式リポジトリ]]から[[pacman|インストール]]してください。
 
  +
以下には様々なインターフェイスごとにプリンターを認識させる手順を載せています。
   
  +
{{Note|1=<nowiki></nowiki>
次に CUPS サーバーの IP アドレスかホストネームを {{ic|/etc/cups/client.conf}} の {{ic|ServerName}} の後に加えて下さい。これで終わりです。アプリケーションが CUPS サーバーによって共有されているプリンターをすぐに見つけるはずです。
 
  +
* CUPS ヘルパープログラムは {{ic|cups}} ユーザー・グループを使って動作します。これによってヘルパープログラムからプリンターデバイスにアクセスできるようになり {{ic|cups}} グループに属する {{ic|/etc/cups/}} の設定ファイルを読み込めるようになります。
  +
* {{Pkg|cups}} 2.2.6-2 以前では、{{ic|lp}} グループが使われていました [https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/cups&id=a209bf21797a239c7ddb4614f0266ba1e5238622]。アップグレード後、{{ic|/etc/cups}} のファイルの所有者は {{ic|cups}} グループに設定し、{{ic|/etc/cups/cups-files.conf}} には {{ic|User 209}} と {{ic|Group 209}} を記述する必要があります。
  +
}}
   
  +
=== USB ===
=== 高度なネットワークセットアップ ===
 
  +
USB プリンターが認識されているかどうか確認するには:
 
  +
{{hc|$ lsusb|
ネットワーク上の未知の共有ドライバを見つけるために Avahi ブラウジングを有効にして cupsd+cups-browsed のインスタンス全体をクライアントで動かすことも可能です。サーバーがこれはわからないような巨大なセットアップで便利になります。
 
  +
(...)
{{Note|この挙動は cups 1.6.x でも変わっていません - 1.5.x までの cupsd との違いは自身の共有プリンターだけをブラウズできるようになったことです。
 
  +
Bus 001 Device 007: ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse
ローカルの cupsd がリモートの cupsd サーバーによって共有されている他のプリンターを認識できるようにするには、Avahi を使ってローカルの (cups-filters 1.0.26 からサポートされている) cups-browsed インスタンスを実行してください。April 2013 に [https://bbs.archlinux.org/viewtopic.php?id&#61;161440 good news] があります (上と合わせる必要があります)。}}
 
  +
}}
 
=== CUPS を32ビットの chroot 環境にインストールする ===
 
 
[[64ビット環境に32ビット環境をインストール|32ビットの chroot 環境]]を使って64ビットのベースインストールをした場合、32ビット環境で明示的に CUPS をインストールする必要はありません。chroot 環境からインストールした CUPS プリンターにアクセスするには、{{ic|/var/run/cups}} ディレクトリを chroot 環境の同じ場所にバインドしなくてはなりません。chroot にディレクトリ (おそらく存在しません) を作り ({{ic|-o bind}} をコマンドに指定して) マウントすれば、32ビット chroot アプリケーションからすぐにプリンターが使えるようになるはずです。
 
 
{{bc|# 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}}
 
 
== サーバーパッケージのインストール ==
 
 
以下のパッケージとプリンタードライバが必要になります。[[公式リポジトリ]]から[[pacman|インストール]]してください。
 
 
* {{Pkg|cups}} - CUPS デーモン
 
* {{Pkg|ghostscript}} - (任意) PostScript インタプリタ
 
* {{Pkg|gsfonts}} - GhostScript 標準 Type1 フォント
 
 
ネットワークを介したプリンターブラウジングを有効にしたいのならば、{{Pkg|avahi}} もインストールして [[systemd#ユニットを使う|systemd]] を使って {{ic|avahi-daemon.service}} を有効にしてください。
 
 
[[Samba]] プロトコルを使ってシステムをネットワークプリンターに接続する場合、もしくはシステムを Windows クライアント用の印刷サーバーにする場合、{{Pkg|samba}} もインストールしてください。
 
 
=== プリンタードライバ ===
 
 
以下はドライバパッケージの一部です。プリンターに合わせて適切なドライバを選んで下さい:
 
 
* {{AUR|cndrvcups-lb}} - Canon の UFR2 ドライバーで LBP, iR, MF シリーズのプリンターをサポートしています。パッケージは [[Arch User Repository|AUR]] から利用可能です。
 
* {{AUR|cnijfilter-mg4200}} - Canon MG4200 のプリンタードライバー。
 
* {{Pkg|cups-pdf}} - 送られたジョブから PDF を生成する仮想 PDF プリンターを設定するためのパッケージ。
 
* {{AUR|foo2zjs}} - HP Laserjet 1018 など ZjStream プロトコルを使うプリンターのためのドライバー。[http://foo2zjs.rkkda.com ここ] に詳細があります。パッケージは [[Arch User Repository|AUR]] から利用可能です。
 
* {{Pkg|foomatic-db}}, {{Pkg|foomatic-db-engine}}, {{Pkg|foomatic-db-nonfree}} - Foomatic は Unix でフリーソフトウェアのプリンタードライバをスプーラと統合するデータベース駆動型のシステムです。
 
* {{Pkg|gutenprint}} - Canon, Epson, Lexmark, Sony, Olympus, PCL のプリンターで GhostScript, CUPS, Foomatic, [[アプリケーション一覧/マルチメディア#ラスタ画像|GIMP]] を使うための高品質なドライバのコレクション
 
* {{Pkg|hplip}} - HP の DeskJet, OfficeJet, Photosmart, Business Inkjet と複数の LaserJet プリンター機種、そして多数の Brother プリンター用のドライバーです。
 
* {{AUR|hpoj}} - HP の Officejet を使っているのならば、このパッケージをインストールして指示に従って[https://answers.launchpad.net/hplip/+question/133425 このスレッド]に書かれているような問題を回避する必要があります。パッケージは [[Arch User Repository|AUR]] から利用可能です。
 
* {{AUR|samsung-unified-driver}} - Samsung のプリンターとスキャナー用の統合 Linux ドライバー。ML-2160 などの新しいプリンターで必要になります。パッケージは [[Arch User Repository|AUR]] から利用可能です。
 
* {{Pkg|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 に''存在しない''時は:
 
*[[Arch User Repository|AUR]] をチェックしてプリンターやメーカーのパッケージが存在しないか確認してください
 
*[http://www.openprinting.org/printers OpenPrinting データベース] にアクセスしてメーカーとプリンターの機種を選択してください
 
*メーカーのサイトに行って GNU/Linux 用のドライバーを配布してないか検索してください
 
 
{{Note|PPD ファイルは {{ic|/usr/share/cups/model/}} に置きます。}}
 
 
==== プリンタードライバーの他のソース ====
 
 
[http://www.turboprint.de/english.html Turboprint] は GNU/Linux でサポートされていないプリンター (例えば Canon i*) 用のプロプライエタリのドライバーです。CUPS とは違って、高品質の印刷にはウォーターマークが加えられたり料金を支払う必要があります。
 
 
== ハードウェアのサポートと設定 ==
 
 
=== USB プリンター ===
 
 
{{Tip|ほとんどの USB プリンターは何も設定しなくても動作します。このセクションをスキップして、あなたのプリンターが動かないとわかったときに読みなおして下さい。}}
 
 
USB プリンターには2つの方法でアクセスが可能です: usblp カーネルモジュールと libusb。前者はクラシックな方法になります。やっていることはシンプルです: シリアルデータストリームとしてデータをデバイスファイルに書き出してプリンターに送信します。同じデバイスファイルを読むことで bi-di アクセスが可能になり、インク残量や状態、プリンタ性能情報 (PJL) を読み出せます。シンプルなプリンタでは問題なく動作しますが、複合機 (プリンタ・スキャナ) には適しておらず HP などのメーカーはバックエンドを提供しています。ソース: [http://lists.linuxfoundation.org/pipermail/printing-architecture/2012/002412.html here]。
 
 
==== usblp のブラックリスト化 ====
 
 
{{Warning|{{Pkg|cups}} バージョン 1.6.0 では、{{ic|usblp}} カーネルモジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れる必要はなくなっています。
 
 
ブラックリストを使わないと解決できない問題を発見した時は上流である CUPS のバグトラッカーに報告してください。おそらく Till Kamppeter (Debian の CUPS メンテナ) とコンタクトが取れるはずです。詳しくは [http://cups.org/str.php?L4128 upstream bug] を見て下さい。}}
 
   
  +
=== パラレルポート ===
USB プリンタが動作しない問題がある場合、{{ic|usblp}} [[カーネルモジュール]]のブラックリスト化を試すことができます:
 
  +
パラレルポートプリンターを使うには {{ic|lp}}, {{ic|parport}}, {{ic|parport_pc}} [[カーネルモジュール]]が必要です。
   
  +
{{hc|$ dmesg {{!}} grep -i parport|
{{hc|/etc/modprobe.d/blacklistusblp.conf|
 
  +
parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series
blacklist usblp
 
  +
lp0: using parport0 (polling)
 
}}
 
}}
   
  +
=== ネットワーク ===
カスタムカーネルのユーザーは先に進む前に {{ic|usbcore}} [[カーネルモジュール]]を手動でロードする必要があるかもしれません。
 
  +
[[Avahi]] を使うことでローカルネットワーク内のプリンターをスキャンできます。[[Avahi]] ホストネームを使ってネットワークプリンターを接続するには、[[Avahi#ホスト名の解決|.local ホストネーム解決]]をセットアップして {{ic|cups.service}} を[[systemd#ユニットを使う|再起動]]してください。
   
  +
[[Samba]] プロトコルを使ってネットワークプリンターに接続する場合や、Windows クライアント用のプリンターサーバーを使う場合、{{Pkg|samba}} パッケージをインストールしてください。
モジュールをインストールしたら、プリンタを接続して次を実行することでカーネルがプリンタを検知したかどうか確認できます:
 
# tail /var/log/messages.log
 
もしくは
 
# dmesg
 
   
  +
== プリンタードライバー ==
{{ic|usblp}} を使っている場合、プリンタが検知されると以下のような出力がされているはずです:
 
  +
プリンターのドライバーは以下のソースのどこかから入手することができます。動作するのが確認されているドライバーのリストは [[CUPS/プリンター別の問題]]を見てください。
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
 
   
  +
プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターでは [https://www.cups.org/doc/man-filter.html フィルター] も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [https://www.cups.org/doc/postscript-driver.html] に詳しく書かれています。
{{ic|usblp}} をブラックリストに入れた場合、以下のように表示されます:
 
usb 3-2: new full speed USB device using uhci_hcd and address 3
 
usb 3-2: configuration #1 chosen from 1 choice
 
   
  +
[http://www.openprinting.org/printers OpenPrinting Printer List] は多数のプリンターの推奨ドライバーを教えてくれます。個別のプリンターの PPD ファイルも提供されていますが、大抵の場合は [[#Foomatic|foomatic]] や推奨されているドライバーパッケージから手に入ります。
=== パラレルポートプリンター ===
 
   
  +
PPD ファイルが CUPS に供給されると、CUPS サーバーは PPD ファイルを再生成して {{ic|/etc/cups/ppd/}} に保存します。
パラレルポートプリンターを使うには {{ic|lp}}, {{ic|parport}}, {{ic|parport_pc}} [[カーネルモジュール]]をロードする必要があります。
 
   
  +
新しいドライバーをインストールした後は cups サービスの再起動が必要です。
次を実行してセットアップを確認してください:
 
# tail /var/log/messages.log
 
おそらく次のような表示があるはずです:
 
lp0: using parport0 (polling).
 
   
  +
=== CUPS ===
USB からパラレルポートへの変換器を使っている場合、CUPS はプリンターを検知することができません。対策としては、異なる接続タイプを使ってプリンターを追加し {{ic|/etc/cups/printers.conf}} の DeviceID を変更してください:
 
  +
CUPS は何も設定をしなくても動作する PPD やフィルターのバイナリを少数ながらデフォルトで用意しています。また、CUPS は [[wikipedia:ja:AirPrint|AirPrint]] と [http://www.pwg.org/ipp/everywhere.html IPP Everywhere] プリンターにも対応しています。
DeviceID = parallel:/dev/usb/lp0
 
   
=== HP プリンター ===
+
=== Foomatic ===
  +
[https://wiki.linuxfoundation.org/openprinting/database/foomatic foomatic] プロジェクトはフリーであるかを問わず多数のプリンタードライバーの PPD を提供しています。foomatic の活動の詳細は [http://www.openprinting.org/download/kpfeifle/LinuxKongress2002/Tutorial/IV.Foomatic-Developer/IV.tutorial-handout-foomatic-development.html Foomatic from the Developer's View] を見てください。
{{Warning|hplip ツールスタックは python2 を使っています。おそらく hp-setup の実行中、{{ic|/usr/bin/python}} が {{ic|/usr/bin/python3}} へのシンボリックリンクになっているために構文エラーが発生します。''一時的に'' {{ic|/usr/bin/python}} から {{ic|/usr/bin/python2}} にリンクを張って下さい。セットアップを終了した後は戻すようにしてください。}}
 
HP のプリンターでは HP の Linux セットアップツールを使ってインストールすることも可能です。[[公式リポジトリ]]から {{Pkg|hplip}} をインストールしてください。
 
   
  +
foomatic を使用するには、{{pkg|foomatic-db-engine}} と {{pkg|foomatic-db}}, {{pkg|foomatic-db-ppds}}, {{pkg|foomatic-db-nonfree-ppds}}, {{pkg|foomatic-db-gutenprint-ppds}} の最低でもどれかひとつをインストールします。
qt フロントエンドで起動するには:
 
# hp-setup -u
 
   
  +
foomatic の PPD は別途でフィルターを必要とすることがあり、{{pkg|gutenprint}} や {{pkg|ghostscript}} などが挙げられます (例えば {{aur|min12xxw}})。{{pkg|ghostscript}} が必要な場合、{{pkg|gsfonts}} もおそらく必須です。
コマンドラインで起動するには:
 
# hp-setup -i
 
   
  +
=== メーカー別のドライバー ===
systray スプールマネージャを起動するには:
 
  +
様々なプリンターメーカーが独自の Linux ドライバーを提供しています。中には Arch の公式リポジトリや [[AUR]] からインストールできるドライバーもあります。
$ hp-systray
 
   
PPD ファ{{ic|/usr/share/ppd/HP/}} にあります。
+
一部のドラバーについて[[CUPS/プリンター別の問題]]詳しい説明があります。
   
  +
== プリンター URI ==
{{Note|依存パッケージの gobject/dbus が欠けているというエラーが表示される場合は、{{Pkg|python2-gobject2}} と {{Pkg|python2-dbus}} をインストールしてください。詳しくは[https://bugs.archlinux.org/task/26666 バグレポート]を見て下さい。}}
 
   
  +
以下では手動での URI の生成について説明しています。
プロプライエタリの HP プラグインが必要なプリンター (Laserjet Pro P1102w や 1020 など) を使うには、[[Arch User Repository|AUR]] から {{AUR|hplip-plugin}} パッケージをインストールしてください。
 
   
  +
=== USB ===
{{Warning|hplip-setup のバグによって、[[Arch User Repository|AUR]] から前述の {{AUR|hplip-plugin}} パッケージをインストールしても、システムトレイや CUPS のログにエラー {{ic|Print job failed - required plug-in not found. Please run hp-plugin}} が表示される場合があります。修正するには、CUPS のウェブインターフェイスからプリンターを修正してドライバーを手動で選択してください (en,en バージョンが推奨)。その後 CUPS サービスを再起動してください。}}
 
   
  +
CUPS は USB プリンターの URI を自動的に生成します。例: {{ic|1=usb://HP/DESKJET%20940C?serial=CN16E6C364BH}}。
{{Note|
 
{{Pkg|hplip}} は {{Pkg|foomatic-db-engine}} に依存しており、プリンターが CUPS に追加されたときにウェブインターフェイスでドライバーリストが表示されないという問題が起こります (エラー: "Unable to get list of printer drivers")。解決するには、まず {{Pkg|hplip}} をインストールして適切な PPD ファイルを {{ic|/usr/share/ppd/HP/}} から取得してください。次に、{{Pkg|hplip}} を完全に削除します (不必要な依存パッケージも)。最後に、CUPS のウェブ UI を使って手動でプリンターをインストールしてください。先に取得した PPD ファイルを選択して {{Pkg|hplip}} を再インストールします。再起動後、プリンターは完全に動作するようになっているはずです。}}
 
   
  +
生成されない場合、[[CUPS/トラブルシューティング#USB プリンター]]を見てください。
== 設定 ==
 
   
  +
=== パラレルポート ===
CUPS がインストールされた今、印刷ソリューションを設定する様々なオプションが存在します。いつもどおり、コマンドラインを使う方法は自由に使えます。CUPS にはフル機能のウェブインターフェイスも内蔵されています。同じく、GNOME や KDE などのデスクトップ環境にはプリンターの管理を助ける便利なプログラムが付いています。あなたの必要に応じて、どれか一つの方法を選ぶことが可能です。
 
   
  +
URI は {{ic|parallel:''device''}} という形式になります。例えば、プリンターが {{ic|/dev/lp0}} で接続されている場合、{{ic|parallel:/dev/lp0}} を使ってください。USB からパラレルポートに変換するアダプタを使っている場合、プリンター URI は {{ic|parallel:/dev/usb/lp0}} を使ってください。
コンピュータに直接プリンターを接続するのではなく、ネットワークプリンターに接続するつもりならば、先に [[CUPS プリンター共有]]のページを読んでおくといいかもしれません。GNU/Linux システム間でのプリンターの共有はとても簡単でほとんど設定が必要ありません。他方、Windows と GNU/Linux で共有するにはちょっとした作業が必要になります。
 
   
=== CUPS デモン ===
+
=== ネットワ ===
   
  +
[[#ネットワーク]]に書かれているように [[Avahi]] を設定することで、CUPS はプリンター URI を探知します。{{ic|avahi-discover}} を使ってプリンターの名前やアドレスを確認することもできます (例: {{ic|BRN30055C6B4C7A.local/10.10.0.155:631}})。
{{Note|{{Pkg|cups}} 2.0.0 から、サービスの名前が {{ic|cups.service}} から {{ic|org.cups.cupsd.service}} に変更されています。このパッケージは2014年10月31日から extra リポジトリに入りました。バージョン 2.0.0 にアップデートするときは、古いサービスを手動で無効化する必要があります。{{ic|/etc/systemd/system/}} サブディレクトリに壊れたシンボリックリンクが残ってしまい、存在しないサービスがあると systemd によって警告が表示されてしまいます。}}
 
   
  +
[[Avahi]] を使わずに URI を手動で生成することも可能です。ネットワークプリンターで利用可能な URI スキーマのリストは CUPS のドキュメント [https://www.cups.org/doc/network.html#PROTOCOLS] を見てください。プリンターによって URI には細かい違いがあるので、プリンターのマニュアルや [[CUPS/プリンター別の問題]]もチェックしてください。
CUPS をインストールしたら、[[systemd#ユニットを使う|systemd]] を使って {{ic|org.cups.cupsd.service}} を起動できます。必要に応じて有効にしてください。
 
   
  +
リモートの CUPS 印刷サーバーは {{ic|ipp://''hostname'':631/printers/''queue_name''}} という形式の URI でアクセスできます。リモートの印刷サーバーをセットアップする方法は [[CUPS/プリンター共有#GNU/Linux システム間]]を見てください。
任意で、CUPS は Avahi のブラウジングを使ってネットワーク上にある共有プリンターを発見することができます。サーバーがどこにあるのかわからないような巨大なセットアップを使っているときに便利です。この機能を使用するには、{{ic|cups-browsed.service}} systemd ユニットを起動してください。
 
   
  +
他の問題については [[CUPS/トラブルシューティング#ネットワークの問題]]を見てください。
=== ウェブインターフェイスとツールキット ===
 
   
  +
{{Warning|1=サーバーとクライアントの両方をプリンターフィルターで設定してはいけません。クライアントかサーバーのどちらかの印刷キューが 'raw' である必要があります。フィルターによってプリンターに同じ印刷ジョブを2回送信して問題が発生するのを避けるためです (例: [https://bbs.archlinux.org/viewtopic.php?pid=1589908#p1589908])。印刷キューを 'raw' に設定する例は[[#使用方法]]を見てください。}}
デーモンが起動したら、ブラウザを開いて次のページに行って下さい: http://localhost:631 ('''''localhost''' は'' {{ic|/etc/hostname}} ''に書かれているホストネームに置き換える必要があるかもしれません'')。
 
   
  +
== 使用方法 ==
ここから、ウィザードに従ってプリンターを追加してください。通常は ''Adding Printers and Classes'' と ''Add Printer'' をクリックしてウィザードを開始します。ユーザー名とパスワードの入力を求められたら、root でログインしてください。プリンターに割り当てられる名前にあまり意味はありません、これは 'location' や 'description' にも同じことが言えます。次に、選択するデバイスのリストが表示されます。プリンターの実際の名前はラベルの横に表示されます (例: USB プリンターなら ''USB Printer #1'' の後)。最後に、適切なドライバを選択すれば設定は完了です。
 
   
  +
CUPS はコマンドラインツールの the lp* と cups* を使うことで制御できます。また、[[#ウェブインターフェイス|ウェブインターフェイス]]や [[#GUI アプリケーション|GUI アプリケーション]]を利用することも可能です。
''Maintenance'' ドロップダウンメニューから ''Print Test Page'' を押して設定をテストしてください。印刷がされなかったり設定が正しく適用されていない場合は、おそらく適切なプリンタードライバが欠けているのが問題です。
 
   
  +
* ''queue'' はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。
{{Tip|他のフロントエンドは [[#他の CUPS インターフェイス]] を参照してください。}}
 
  +
* ''location'' はプリンターの物理的な場所の説明です (例えば "bedroom" や "kitchen" など)。複数のプリンターを管理しやすくするためにあります。
{{Note|
 
  +
* ''description'' はプリンターの完全な説明です。大抵はプリンターの正式名称が使われます ("HP LaserJet 5P" など)。
* USB プリンターを設定するとき、''Add Printer'' ページにプリンターが表示されるはずです。"SCSI printer" オプションしか表示されない場合は、おそらく CUPS がプリンターを認識できていません。
 
* HP の複合機で {{pkg|hplip}} パッケージを使ってワイヤレススキャンを有効にするには、HTTP プロトコルを使ってネットワークプリンターとしてプリンターを追加する必要があります。使用する URI を得るには、{{ic|hp-makeuri}} コマンドを実行してください。}}
 
   
==== CUPS の管理 ====
+
=== CLI ツール ===
   
  +
[http://localhost:631/help/options.html CUPS ローカルドキュメント] にはコマンドラインツールに関するヒントが載っています。
ウェブインターフェイスでプリンターを管理する時 (例: プリンターを追加・削除する、印刷タスクを停止する) はユーザー名とパスワードが必要になります。デフォルトのユーザー名は ''sys'' グループに割り当てられたユーザー、もしくは root です。他の admin グループ (例: ''printadmin'') は {{ic|/etc/cups/cups-files.conf}} の {{ic|SystemGroup}} 行に追加することができます (この行を新しく加える必要があるかもしれません):
 
   
  +
{{Note|コマンドラインのスイッチはまとめて指定することができません。}}
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
 
<strike>SystemGroup sys root</strike>
 
SystemGroup printadmin
 
   
  +
;デバイスを確認
グループを作成してください ({{ic|man groupadd}}):
 
  +
# lpinfo -v #
  +
$ /usr/lib/cups/backend/snmp ''ip_address'' # Use SNMP to find a URI
   
  +
;モデルを確認
# groupadd printadmin
 
# groupadd lp
+
$ lpinfo -m
   
  +
;新しい印刷キューを追加
グループにユーザーを追加してください ({{ic|man gpasswd}}):
 
  +
# lpadmin -p ''queue_name'' -E -v ''uri'' -m ''model''
   
  +
''queue_name'' は適当な名前に置き換えてください。例:
# gpasswd -a username printadmin # for printer administration
 
  +
# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz
# gpasswd -a username lp # for printing priviledges
 
  +
# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere # Driverless queue (Apple AirPrint or IPP Everywhere)
  +
# lpadmin -p SHARED_PRINTER -m raw # Raw queue; no PPD or filter
  +
# lpadmin -p Test_Printer -E -v "ipp://10.0.1.3/ipp/print" -m pxlmono.ppd # Specifying a PPD instead of a model
   
  +
{{Note|PPD を指定する場合、フルパスではなくファイル名だけ指定してください (例えば {{ic|/usr/share/ppd/cupsfilters/pxlmono.ppd}} ではなく {{ic|pxlmono.ppd}} を指定します)。}}
変更を適用するには {{ic|org.cups.cupsd.service}} デーモンを再起動してログインし直す必要があります:
 
   
  +
;デフォルトプリンターを設定
# systemctl restart org.cups.cupsd.service
 
  +
$ lpoptions -d ''queue_name''
   
  +
;オプションを変更
root アカウントがロックされている (つまり sudo を使っている) と、デフォルトのユーザー名 (root) とパスワードでは CUPS の管理インターフェイスにログインできません。[https://bbs.archlinux.org/viewtopic.php?id=35567 この投稿]を読んで他のユーザーを cups の管理者として追加してください。
 
  +
$ lpoptions -p ''queue_name'' -l # List the options
  +
$ lpoptions -p ''queue_name'' -o ''option''=''value'' # Set an option
   
  +
例:
==== ウェブインターフェイスにリモートアクセスする ====
 
  +
$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
   
  +
;状態を確認
デフォルトでは、CUPS のウェブインターフェイスは ''localhost'' (インストールしたコンピュータ) からしかアクセスできないようになっています。インターフェイスに外部からアクセスするには、以下の変更を {{ic|/etc/cups/cupsd.conf}} ファイルに加えて下さい。次の行を:
 
  +
$ lpstat -s
Listen localhost:631
 
  +
$ lpstat -p ''queue_name''
下のように置き換えてください。
 
Port 631
 
これで CUPS がリクエストを受け取るようになります。
 
   
  +
;プリンターを無効化
3つのアクセスレベルを設定することができます:
 
  +
# cupsdisable ''queue_name''
<Location /> #サーバーへのアクセス
 
<Location /admin> #admin ページヘのアクセス
 
<Location /admin/conf> #設定ファイルへのアクセス
 
   
  +
;プリンターを有効化
リモートホストに以上のレベルのどれか一つを与えるには、レベルのセクションに {{ic|Allow}} の記述を追加してください。{{ic|Allow}} は以下のような形式で使うことができます:
 
  +
# cupsenable ''queue_name''
Allow from all
 
Allow from host.domain.com
 
Allow from *.domain.com
 
Allow from ip-address
 
Allow from ip-address/netmask
 
Allow from @LOCAL
 
   
  +
;ジョブを受け取るようにプリンターを設定
また、{{ic|Deny}} も使うことが可能です。例えば、ローカルネットワークインターフェイス上にあるホスト全てに完全なアクセス権を与えるには、ファイル {{ic|/etc/cups/cupsd.conf}} に以下を記述します:
 
  +
# cupsaccept ''queue_name''
# 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>
 
   
  +
;プリンターの削除
次の設定も追加する必要があるかもしれません:
 
  +
まず印刷を要求するエントリを全て拒否するように設定してください:
  +
# cupsreject ''queue_name''
  +
次にプリンターを無効化してください:
  +
# cupsdisable ''queue_name''
  +
最後に削除してください:
  +
# lpadmin -x ''queue_name''
   
  +
;ファイルを印刷
DefaultEncryption Never
 
  +
$ lpr ''file''
  +
$ lpr -# 17 ''file'' # print the file 17 times
  +
$ echo 'Hello, world!' | lpr -p # print the result of a command. The -p switch adds a header.
   
  +
;印刷キューを確認
この設定によって次のエラーを止めることができます: 426 - Upgrade Required when using the CUPS web interface from a remote machine。
 
  +
$ lpq
  +
$ lpq -a # on all queues
   
  +
;印刷キューを消去
=== コマンドライン設定 ===
 
  +
# lprm # remove last entry only
  +
# lprm - # remove all entries
   
  +
=== ウェブインターフェイス ===
コマンドラインからツール (lp* と cups* コマンドファミリー) を使って CUPS を完全に操作することができます。
 
   
  +
CUPS サーバーはウェブインターフェイスを使って管理することができます。http://localhost:631/ を開いてください。
Arch Linux では、ほとんどのコマンドはシェルの自動補完をサポートしています。
 
また、コマンドラインのスイッチはグループ化することはできないので注意してください。
 
   
  +
{{Note|HTTPS 接続で CUPS を使用する場合、初めてアクセスしたときにインターフェイスが表示されるまで長い時間がかかります。初期設定で行われる SSL 証明書の生成に時間がかかるためです。}}
;デバイスを一覧する
 
# lpinfo -v
 
   
  +
ウェブインターフェイスから管理設定を行うには認証が必要です。{{ic|root}} で認証するか、ユーザーをプリンターの管理権限グループに追加してください。[[#設定]]を参照。
;ドライバを一覧する
 
# lpinfo -m
 
   
;新しいプリンターを追加する
+
;印刷キューを追加
  +
'''Administration''' ページを開いてください。
# lpadmin -p ''printer'' -E -v ''device'' -P ''ppd''
 
   
  +
;既存のキューを編集
''printer'' はあなたが自由に設定できます。デバイスは {{ic|lpinfo -v}} コマンドで取得できます。
 
  +
'''Printers''' ページを開いて、編集したいキューを選択してください。
例:
 
# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -P /usr/share/ppd/HP/hp-deskjet_940c.ppd.gz
 
   
  +
;キューをテスト
以下のコマンドの、''printer'' はあなたが設定したプリンターの名前に置き換えてください。
 
  +
'''Printers''' ページを開いて、キューを選択してください。
   
  +
=== GUI アプリケーション ===
;デフォルトのプリンターを設定する
 
$ lpoptions -d ''printer''
 
   
  +
CUPS を管理するのに十分な権限を持っていない場合、アプリケーションが起動するときに root パスワードが要求されます。root 権限を与えずにユーザーに管理者権限を与える方法は[[#設定]]を見てください。
;状態をチェックする
 
$ lpstat -s
 
$ lpstat -p ''printer''
 
   
  +
* {{App|print-manager|印刷ジョブとプリンターの管理ツール ([[KDE]])。|https://cgit.kde.org/print-manager.git|{{Pkg|print-manager}}}}
;プリンターを無効にする
 
  +
* {{App|system-config-printer|[[GTK+]] の CUPS プリンター設定ツール・状態アプレット。|http://cyberelk.net/tim/software/system-config-printer/|{{Pkg|system-config-printer}}}}
# cupsdisable ''printer''
 
  +
* {{App|gtklp|CUPS の GTK+ インターフェイス。|https://gtklp.sirtobi.com/index.shtml|{{AUR|gtklp}}}}
   
  +
== 設定 ==
;プリンターを有効にする
 
# 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 ====
 
 
{{Pkg|system-config-printer}} を[[pacman|インストール]]することでプリンターを設定・管理できます。このプログラムは複数の gnome 依存パッケージを呼びこむことがあります。
 
 
cups スケジューラを管理するのに必要な特権をユーザーが持っていない場合、system-config-printer は起動時に root パスワードの入力を求めます。以下の設定をすることでこれを回避することが可能です。
 
 
1. cups スケジューラを管理するグループを作成してください:
 
 
# groupadd lpadmin
 
   
  +
CUPS サーバーの設定は {{ic|/etc/cups/cupsd.conf}} と {{ic|/etc/cups/cups-files.conf}} にあります ({{man|5|cupsd.conf}} や {{man|5|cups-files.conf}} を参照)。どちらかのファイルを編集したら、変更を適用するために {{ic|cups.service}} を[[再起動]]してください。大抵の場合はデフォルト設定で問題ありません。
2. ユーザーを新しく作成したグループに追加してください:
 
   
  +
プリンターの管理者権限を持つ[[グループ]]は {{ic|/etc/cups/cups-files.conf}} の {{ic|SystemGroup}} で定義されます。デフォルトでは {{ic|sys}} グループが使われます。
# usermod -aG lpadmin ''username''
 
   
  +
{{pkg|cups}} は {{pkg|libpaper}} のサポートを有効にしてビルドされており、libpaper はデフォルトの用紙サイズとして '''Letter''' を使います。印刷キューを追加するたびに用紙サイズを変更しなくてもいいように、{{ic|/etc/papersize}} を編集してデフォルトの用紙サイズを設定してください。詳しくは {{man|5|papersize}} を参照。
3. cups が新しく作成したグループを使うように設定してください:
 
   
  +
デフォルトでは、全てのログは {{ic|/var/log/cups/}} 内のファイルに送信されます。{{ic|/etc/cups/cups-files.conf}} 内の {{ic|AccessLog}}, {{ic|ErrorLog}}, {{ic|PageLog}} ディレクティブの値を {{ic|syslog}} に変更することで、CUPS から [[systemd#Journal|systemd journal]] にログを吐かせることができます。詳しくは [https://fedoraproject.org/wiki/Changes/CupsJournalLogging fedora wiki] を見てください。
{{hc|/etc/cups/cups-files.conf|
 
...
 
SystemGroup sys root '''lpadmin'''
 
...}}
 
   
  +
=== cups-browsed ===
4. cups を再起動してください:
 
   
  +
CUPS は [[Avahi]] を使ってネットワーク上の未知の共有プリンターを発見することができます。サーバーがどこにあるのかわからないくらい巨大な構成で有用です。この機能を使うには [[Avahi#ホスト名の解決|.local ホストネーム解決]]を設定して、{{ic|avahi-daemon.service}} と {{ic|cups-browsed.service}} の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、キューの作成が上手く行かない場合もあります。[http://www.pwg.org/ipp/everywhere.html IPP Everywhere] あるいは [[wikipedia:ja:AirPrint|AirPrint]] に対応しているドライバー不要のプリンターであれば特に設定をしなくても問題なく動作するはずです。
# systemctl restart org.cups.cupsd.service
 
   
  +
{{Note|1=ネットワークプリンターの検索によってコンピュータの起動時間が大幅に遅くなってしまうことがあります [https://bbs.archlinux.org/viewtopic.php?pid=1720219#p1720219]。}}
5. 一度ログアウトしてからログインしなおすか、コンピュータを再起動してください。
 
   
==== KDE ====
+
=== プリンター共有 ===
   
  +
[[CUPS/プリンター共有]]と[[CUPS/プリンター共有#リモート管理]]を見てください。
[[KDE]] のユーザーはコントロールセンターからプリンターを変更することが可能です。ハードウェアグループにプリンターインターフェイスが現れない時は {{Pkg|kdeutils-print-manager}} パッケージをインストールする必要があるかもしれません。インターフェイスの使用方法など詳しい情報はデスクトップ環境のドキュメントを参照してください。
 
   
  +
=== PolicyKit による管理者認証 ===
==== その他 ====
 
   
  +
[[PolicyKit]] を設定することで管理者パスワードを入力しなくても GUI を使ってユーザーからプリンターを設定できるようにすることができます。
[[Arch User Repository|AUR]] に {{AUR|gtklp}} があります。
 
   
  +
{{Note|ルールを適用するには {{Pkg|cups-pk-helper}} のインストールが必要な場合があります。}}
== PDF 仮想プリンター ==
 
{{Note|GNOME では、PDF や Postscript ファイルに直接プリントすることが可能なため、そのような場合 CUPS-PDF が必要ありません。}}
 
   
  +
以下は wheel [[グループ]]のメンバーにプリンターの管理を許可する例です:
{{Pkg|cups-pdf}} パッケージを使うことで送信されたデータから PDF を作成する仮想プリンターをセットアップすることができます。このパッケージは必須ではありませんが、使うと非常に便利です。
 
   
  +
{{hc|/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules|<nowiki>
パッケージをインストールした後、他のプリンターと同じようにウェブインターフェイスを使って設定してください。cups の印刷マネージャ http://localhost:631 にアクセスして選択してください:
 
  +
polkit.addRule(function(action, subject) {
Administration -> Add Printer
 
  +
if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" &&
Select CUPS-PDF (Virtual PDF), choose for the make and driver:
 
  +
subject.isInGroup("wheel")){
Make: Generic
 
  +
return polkit.Result.YES;
Driver: Generic CUPS-PDF Printer
 
  +
}
  +
});</nowiki>}}
   
  +
=== ローカルの CUPS サーバーを使わない ===
生成された PDF ドキュメントは {{ic|/var/spool/cups-pdf}} のサブディレクトリに置かれます。通常、サブディレクトリにはジョブを実行したユーザーの名前が付けられます。ちょっとした設定で、印刷した PDF ドキュメントをもっと簡単に見つけられるようにできます。{{ic|/etc/cups/cups-pdf.conf}} を編集して、次の行を
 
#Out /var/spool/cups-pdf/${USER}
 
   
  +
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。{{Pkg|libcups}} パッケージの[[インストール]]が必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに {{Pkg|cups}} パッケージのインストールを必要とします。
下のように変更してください
 
   
  +
{{Warning|ローカルの CUPS サーバーを使わずにリモートプリンターにアクセスすることは開発者によって非推奨とされています [http://www.cups.org/pipermail/cups/2015-October/027229.html]。}}
Out ${HOME}
 
   
  +
リモートの CUPS サーバーを使うには、{{ic|CUPS_SERVER}} [[環境変数]]を {{ic|printerserver.mydomain:port}} に設定してください。例えば、[[Firefox]] で別の印刷サーバーを使いたい場合 ({{ic|printserver.mydomain:port}} は適当な印刷サーバーの名前とポートに置き換えてください):
=== PostScript に印刷する ===
 
   
  +
$ CUPS_SERVER=printserver.mydomain:port firefox
CUPS-PDF (仮想 PDF プリンター) は実際は PostScript ファイルを作成してから ps2pdf ユーティリティを使って PDF を作成しています。PostScript に印刷するには、印刷ダイアログでプリンターとして "CUPS-PDF" を選択し、"print to file" のチェックボックスを選択して、印刷を押し、filename.ps を入力して保存をクリックするだけです。これはファックスなどで便利です。
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
[[CUPS/トラブルシューティング]]を見てさい。
+
[[CUPS/トラブルシューティング]]を見てください。
   
 
== 参照 ==
 
== 参照 ==
   
* [http://localhost:631/help 公式 CUPS ドキュメント], ''ローカルにインストールされたドキュメント''
+
* [http://localhost:631/help CUPS 公式ドキュメント], ''ローカルにインストールされたドキュメント''
  +
* [[Wikipedia:ja:Common Unix Printing System]]
* [http://www.cups.org/ 公式 CUPS ウェブサイト]
 
* [http://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting ホームページ]
+
* [https://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting ホームページ]
  +
* [https://ja.opensuse.org/%E5%8D%B0%E5%88%B7%E5%87%A6%E7%90%86%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9 OpenSuSE の印刷処理の考え方 - 印刷ワークフローについての説明]
* [https://bbs.archlinux.org/ Arch Linux ユーザーフォーラム]
 
  +
* [https://en.opensuse.org/SDB:CUPS_in_a_Nutshell OpenSuSE CUPS in a Nutshell - a quick CUPS overview]
  +
* [https://wiki.gentoo.org/wiki/Printing/ja Gentoo の印刷ガイド]
  +
* [https://wiki.debian.org/Printing Debian の印刷ポータル]
  +
* [https://wiki.debian.org/SystemPrinting Debian の CUPS 印刷システムの概要]

2020年11月28日 (土) 00:27時点における最新版

関連記事

CUPS は標準ベースの、Apple によって開発されている macOS® やその他の UNIX® ライクなオペレーティングシステム向けのオープンソースの印刷システムです。

インストール

cups パッケージをインストールしてください。

PDF 文章に「印刷」したい場合、cups-pdf パッケージもインストールしてください。デフォルトでは、PDF ファイルは /var/spool/cups-pdf/$USER に保存されます。作成場所は /etc/cups/cups-pdf.conf で変更できます。

インストールしたら cups.service起動有効化してください。

接続インターフェイス

以下には様々なインターフェイスごとにプリンターを認識させる手順を載せています。

ノート:
  • CUPS ヘルパープログラムは cups ユーザー・グループを使って動作します。これによってヘルパープログラムからプリンターデバイスにアクセスできるようになり cups グループに属する /etc/cups/ の設定ファイルを読み込めるようになります。
  • cups 2.2.6-2 以前では、lp グループが使われていました [1]。アップグレード後、/etc/cups のファイルの所有者は cups グループに設定し、/etc/cups/cups-files.conf には User 209Group 209 を記述する必要があります。

USB

USB プリンターが認識されているかどうか確認するには:

$ lsusb
(...)
Bus 001 Device 007: ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse

パラレルポート

パラレルポートプリンターを使うには lp, parport, parport_pc カーネルモジュールが必要です。

$ dmesg | grep -i parport
 parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series
 lp0: using parport0 (polling)

ネットワーク

Avahi を使うことでローカルネットワーク内のプリンターをスキャンできます。Avahi ホストネームを使ってネットワークプリンターを接続するには、.local ホストネーム解決をセットアップして cups.service再起動してください。

Samba プロトコルを使ってネットワークプリンターに接続する場合や、Windows クライアント用のプリンターサーバーを使う場合、samba パッケージをインストールしてください。

プリンタードライバー

プリンターのドライバーは以下のソースのどこかから入手することができます。動作するのが確認されているドライバーのリストは CUPS/プリンター別の問題を見てください。

プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターでは フィルター も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [2] に詳しく書かれています。

OpenPrinting Printer List は多数のプリンターの推奨ドライバーを教えてくれます。個別のプリンターの PPD ファイルも提供されていますが、大抵の場合は foomatic や推奨されているドライバーパッケージから手に入ります。

PPD ファイルが CUPS に供給されると、CUPS サーバーは PPD ファイルを再生成して /etc/cups/ppd/ に保存します。

新しいドライバーをインストールした後は cups サービスの再起動が必要です。

CUPS

CUPS は何も設定をしなくても動作する PPD やフィルターのバイナリを少数ながらデフォルトで用意しています。また、CUPS は AirPrintIPP Everywhere プリンターにも対応しています。

Foomatic

foomatic プロジェクトはフリーであるかを問わず多数のプリンタードライバーの PPD を提供しています。foomatic の活動の詳細は Foomatic from the Developer's View を見てください。

foomatic を使用するには、foomatic-db-enginefoomatic-db, foomatic-db-ppds, foomatic-db-nonfree-ppds, foomatic-db-gutenprint-ppds の最低でもどれかひとつをインストールします。

foomatic の PPD は別途でフィルターを必要とすることがあり、gutenprintghostscript などが挙げられます (例えば min12xxwAUR)。ghostscript が必要な場合、gsfonts もおそらく必須です。

メーカー別のドライバー

様々なプリンターメーカーが独自の Linux ドライバーを提供しています。中には Arch の公式リポジトリや AUR からインストールできるドライバーもあります。

一部のドライバーについては CUPS/プリンター別の問題に詳しい説明があります。

プリンター URI

以下では手動での URI の生成について説明しています。

USB

CUPS は USB プリンターの URI を自動的に生成します。例: usb://HP/DESKJET%20940C?serial=CN16E6C364BH

生成されない場合、CUPS/トラブルシューティング#USB プリンターを見てください。

パラレルポート

URI は parallel:device という形式になります。例えば、プリンターが /dev/lp0 で接続されている場合、parallel:/dev/lp0 を使ってください。USB からパラレルポートに変換するアダプタを使っている場合、プリンター URI は parallel:/dev/usb/lp0 を使ってください。

ネットワーク

#ネットワークに書かれているように Avahi を設定することで、CUPS はプリンター URI を探知します。avahi-discover を使ってプリンターの名前やアドレスを確認することもできます (例: BRN30055C6B4C7A.local/10.10.0.155:631)。

Avahi を使わずに URI を手動で生成することも可能です。ネットワークプリンターで利用可能な URI スキーマのリストは CUPS のドキュメント [3] を見てください。プリンターによって URI には細かい違いがあるので、プリンターのマニュアルや CUPS/プリンター別の問題もチェックしてください。

リモートの CUPS 印刷サーバーは ipp://hostname:631/printers/queue_name という形式の URI でアクセスできます。リモートの印刷サーバーをセットアップする方法は CUPS/プリンター共有#GNU/Linux システム間を見てください。

他の問題については CUPS/トラブルシューティング#ネットワークの問題を見てください。

警告: サーバーとクライアントの両方をプリンターフィルターで設定してはいけません。クライアントかサーバーのどちらかの印刷キューが 'raw' である必要があります。フィルターによってプリンターに同じ印刷ジョブを2回送信して問題が発生するのを避けるためです (例: [4])。印刷キューを 'raw' に設定する例は#使用方法を見てください。

使用方法

CUPS はコマンドラインツールの the lp* と cups* を使うことで制御できます。また、ウェブインターフェイスGUI アプリケーションを利用することも可能です。

  • queue はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。
  • location はプリンターの物理的な場所の説明です (例えば "bedroom" や "kitchen" など)。複数のプリンターを管理しやすくするためにあります。
  • description はプリンターの完全な説明です。大抵はプリンターの正式名称が使われます ("HP LaserJet 5P" など)。

CLI ツール

CUPS ローカルドキュメント にはコマンドラインツールに関するヒントが載っています。

ノート: コマンドラインのスイッチはまとめて指定することができません。
デバイスを確認
# lpinfo -v # 
$ /usr/lib/cups/backend/snmp ip_address # Use SNMP to find a URI
モデルを確認
$ lpinfo -m
新しい印刷キューを追加
# lpadmin -p queue_name -E -v uri -m model

queue_name は適当な名前に置き換えてください。例:

# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz
# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere    # Driverless queue (Apple AirPrint or IPP Everywhere)
# lpadmin -p SHARED_PRINTER -m raw    # Raw queue; no PPD or filter
# lpadmin -p Test_Printer -E -v "ipp://10.0.1.3/ipp/print" -m pxlmono.ppd    # Specifying a PPD instead of a model
ノート: PPD を指定する場合、フルパスではなくファイル名だけ指定してください (例えば /usr/share/ppd/cupsfilters/pxlmono.ppd ではなく pxlmono.ppd を指定します)。
デフォルトプリンターを設定
$ lpoptions -d queue_name
オプションを変更
$ lpoptions -p queue_name -l # List the options
$ lpoptions -p queue_name -o option=value # Set an option

例:

$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
状態を確認
$ lpstat -s
$ lpstat -p queue_name
プリンターを無効化
# cupsdisable queue_name
プリンターを有効化
# cupsenable queue_name
ジョブを受け取るようにプリンターを設定
# cupsaccept queue_name
プリンターの削除

まず印刷を要求するエントリを全て拒否するように設定してください:

# cupsreject queue_name

次にプリンターを無効化してください:

# cupsdisable queue_name

最後に削除してください:

# lpadmin -x queue_name
ファイルを印刷
$ lpr file
$ lpr -# 17 file            # print the file 17 times
$ echo 'Hello, world!' | lpr -p # print the result of a command. The -p switch adds a header.
印刷キューを確認
$ lpq
$ lpq -a # on all queues
印刷キューを消去
# lprm   # remove last entry only
# lprm - # remove all entries

ウェブインターフェイス

CUPS サーバーはウェブインターフェイスを使って管理することができます。http://localhost:631/ を開いてください。

ノート: HTTPS 接続で CUPS を使用する場合、初めてアクセスしたときにインターフェイスが表示されるまで長い時間がかかります。初期設定で行われる SSL 証明書の生成に時間がかかるためです。

ウェブインターフェイスから管理設定を行うには認証が必要です。root で認証するか、ユーザーをプリンターの管理権限グループに追加してください。#設定を参照。

印刷キューを追加

Administration ページを開いてください。

既存のキューを編集

Printers ページを開いて、編集したいキューを選択してください。

キューをテスト

Printers ページを開いて、キューを選択してください。

GUI アプリケーション

CUPS を管理するのに十分な権限を持っていない場合、アプリケーションが起動するときに root パスワードが要求されます。root 権限を与えずにユーザーに管理者権限を与える方法は#設定を見てください。

  • print-manager — 印刷ジョブとプリンターの管理ツール (KDE)。
https://cgit.kde.org/print-manager.git || print-manager
  • system-config-printerGTK+ の CUPS プリンター設定ツール・状態アプレット。
http://cyberelk.net/tim/software/system-config-printer/ || system-config-printer
  • gtklp — CUPS の GTK+ インターフェイス。
https://gtklp.sirtobi.com/index.shtml || gtklpAUR

設定

CUPS サーバーの設定は /etc/cups/cupsd.conf/etc/cups/cups-files.conf にあります (cupsd.conf(5)cups-files.conf(5) を参照)。どちらかのファイルを編集したら、変更を適用するために cups.service再起動してください。大抵の場合はデフォルト設定で問題ありません。

プリンターの管理者権限を持つグループ/etc/cups/cups-files.confSystemGroup で定義されます。デフォルトでは sys グループが使われます。

cupslibpaper のサポートを有効にしてビルドされており、libpaper はデフォルトの用紙サイズとして Letter を使います。印刷キューを追加するたびに用紙サイズを変更しなくてもいいように、/etc/papersize を編集してデフォルトの用紙サイズを設定してください。詳しくは papersize(5) を参照。

デフォルトでは、全てのログは /var/log/cups/ 内のファイルに送信されます。/etc/cups/cups-files.conf 内の AccessLog, ErrorLog, PageLog ディレクティブの値を syslog に変更することで、CUPS から systemd journal にログを吐かせることができます。詳しくは fedora wiki を見てください。

cups-browsed

CUPS は Avahi を使ってネットワーク上の未知の共有プリンターを発見することができます。サーバーがどこにあるのかわからないくらい巨大な構成で有用です。この機能を使うには .local ホストネーム解決を設定して、avahi-daemon.servicecups-browsed.service の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、キューの作成が上手く行かない場合もあります。IPP Everywhere あるいは AirPrint に対応しているドライバー不要のプリンターであれば特に設定をしなくても問題なく動作するはずです。

ノート: ネットワークプリンターの検索によってコンピュータの起動時間が大幅に遅くなってしまうことがあります [5]

プリンター共有

CUPS/プリンター共有CUPS/プリンター共有#リモート管理を見てください。

PolicyKit による管理者認証

PolicyKit を設定することで管理者パスワードを入力しなくても GUI を使ってユーザーからプリンターを設定できるようにすることができます。

ノート: ルールを適用するには cups-pk-helper のインストールが必要な場合があります。

以下は wheel グループのメンバーにプリンターの管理を許可する例です:

/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules
polkit.addRule(function(action, subject) { 
    if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" && 
        subject.isInGroup("wheel")){ 
        return polkit.Result.YES; 
    } 
});

ローカルの CUPS サーバーを使わない

CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。libcups パッケージのインストールが必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに cups パッケージのインストールを必要とします。

警告: ローカルの CUPS サーバーを使わずにリモートプリンターにアクセスすることは開発者によって非推奨とされています [6]

リモートの CUPS サーバーを使うには、CUPS_SERVER 環境変数printerserver.mydomain:port に設定してください。例えば、Firefox で別の印刷サーバーを使いたい場合 (printserver.mydomain:port は適当な印刷サーバーの名前とポートに置き換えてください):

$ CUPS_SERVER=printserver.mydomain:port firefox

トラブルシューティング

CUPS/トラブルシューティングを見てください。

参照