「CUPS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(脱字の修正を行った)
 
(5人の利用者による、間の31版が非表示)
1行目: 1行目:
 
[[Category:プリンター]]
 
[[Category:プリンター]]
  +
[[Category:サーバー]]
[[cs:CUPS]]
 
 
[[de:CUPS]]
 
[[de:CUPS]]
 
[[en:CUPS]]
 
[[en:CUPS]]
[[es:CUPS]]
 
 
[[fr:CUPS]]
 
[[fr:CUPS]]
[[it:CUPS]]
 
[[pl:CUPS]]
 
 
[[ru:CUPS]]
 
[[ru:CUPS]]
[[th:CUPS]]
+
[[zh-hans:CUPS]]
[[tr:CUPS]]
 
[[zh-CN: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://openprinting.github.io/cups/ CUPS] は、Linux® や他の Unix® ライクなオペレーティングシステムのための標準ベースのオープンソースな印刷システムです。OpenPrinting によって開発されています。
[http://www.cups.org/index.php CUPS のサイト] より:
 
:"''[[Wikipedia:ja:Common Unix Printing System|CUPS]] は標準ベースの、Apple によって開発されている OS X® やその他の UNIX® ライクなオペレーティングシステム向けのオープンソースの印刷システムです。''"
 
   
  +
Arch Linux では、[https://www.cups.org/ Apple CUPS フォーク]ではなく、[https://openprinting.github.io/cups/ OpenPrinting CUPS フォーク]がパッケージングされています。
LPRNG など印刷パッケージは他にも存在しますが、使いやすい Common Unix Printing System が最も人気があります。
 
   
== 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 ここ] にあります。
 
   
  +
{{Pkg|cups}} パッケージを[[インストール]]してください。
プリンターの設定には2つの方法があります。
 
* ネットワーク上で CUPS サーバーが動作していてプリンターが共有されている場合、必要なのはクライアントパッケージをインストールすることだけです。
 
* プリンターがシステムに直接接続されていたり IPP ネットワークプリンターにアクセスできる場合、ローカルの CUPS サーバーをセットアップします。
 
   
  +
{{Note|CUPS では、ドライバは IPP Everywhere に取って代わられる形で非推奨となっているため、印刷を機能させるには {{Pkg|cups-pdf}} をインストールする必要がある場合があります。このパッケージがないと、''client-error-document-format-not-supported'' のようなエラーが発生する場合があります。IPP Everywhere は PDF を直接プリンタに送信するため、印刷したいものをまず PDF に変換するために cups-pdf が必要です。}}
== クライアントパッケージのインストール ==
 
   
  +
任意で、PDF ドキュメントに"印刷"したい場合は、{{Pkg|cups-pdf}} パッケージを[[インストール]]してください。デフォルトでは、PDF ファイルは {{ic|/var/spool/cups-pdf/''username''/}} に保存されます。保存場所は {{ic|/etc/cups/cups-pdf.conf}} で変更することができます。
{{Pkg|libcups}} が唯一必要なパッケージです。[[official Repositories|公式リポジトリ]]から[[pacman|インストール]]してください。
 
   
次に CUPS サーバーの IP アドレスかホストネームを {{ic|/etc/cups/client.conf}} の {{ic|ServerName}} の後に加えさい。これで終わりです。プリケーションが CUPS サーバーによって共有されていプリンターすぐに見つけはずです。
+
そして、{{ic|cups.service}} を[[有効化]]し、[[起動]]しください。または、[[#ソケットクティベーション|ソットアクティベーション]]を使用することで、このサービスがプログラムによって必要とされる場合にのみ CUPS 起動させこともきます。
   
=== 高度なネットクセットアップ ===
+
=== ソケットアクティベション ===
   
  +
{{Pkg|cups}} は {{ic|cups.socket}} ユニットを提供しています。{{ic|cups.socket}} が有効化されている (かつ、{{ic|cups.service}} が[[無効化]]されている) 場合、''systemd'' は CUPS をすぐには起動せず、適切なソケットをただリッスンします。プログラムがそれらの CUPS ソケットのうちどれかへの接続を試みた時に、''systemd'' は {{ic|cups.service}} を起動し、それらのポートの制御を CUPS プロセスへ透過的に渡します。
ネットワーク上の未知の共有ドライバを見つけるために Avahi ブラウジングを有効にして cupsd+cups-browsed のインスタンス全体をクライアントで動かすことも可能です。サーバーがこれはわからないような巨大なセットアップで便利になります。
 
{{Note|この挙動は cups 1.6.x でも変わっていません - 1.5.x までの cupsd との違いは自身の共有プリンターだけをブラウズできるようになったことです。
 
ローカルの cupsd がリモートの cupsd サーバーによって共有されている他のプリンターを認識できるようにするには、Avahi を使ってローカルの (cups-filters 1.0.26 からサポートされている) cups-browsed インスタンスを実行してください。April 2013 に [https://bbs.archlinux.org/viewtopic.php?id=161440 good news] があります (上と合わせる必要があります)。}}
 
   
  +
=== 印刷の流れ ===
=== CUPS を32ビットの chroot 環境にインストールする ===
 
   
  +
関連する問題を解決したい場合は、CUPS がどう機能するかを知っておくことが重要です:
[[Install_bundled_32-bit_system_in_Arch64|32ビットの chroot 環境]]を使って64ビットのベースインストールをした場合、32ビット環境で明示的に CUPS をインストールする必要はありません。chroot 環境からインストールした CUPS プリンターにアクセスするには、{{ic|/var/run/cups}} ディレクトリを chroot 環境の同じ場所にバインドしなくてはなりません。chroot にディレクトリ (おそらく存在しません) を作り ({{ic|-o bind}} をコマンドに指定して) マウントすれば、32ビット chroot アプリケーションからすぐにプリンターが使えるようになるはずです。
 
   
  +
# '印刷' が選択された際、アプリケーションは [[Wikipedia:ja:PDF|PDF]] ファイルを CUPS に送信します (アプリケーションが他の形式を送信した場合、それらはまず PDF に変換されます)。
{{bc|# mkdir /path/to/chroot/var/run/cups
 
  +
# CUPS はプリンタの PPD ファイル (プリンタ記述ファイル) を参照し、PDF ファイルをプリンタの理解できる言語 (PJL、PCL、ビットマップ、ネイティブな PDF など) へ変換するためにどのようなフィルタを使用する必要があるかを調べます。
# Example: # mkdir /opt/arch32/var/run/cups
 
  +
# フィルタが PDF ファイルをプリンタの理解できる形式へ変換します。
  +
# 最後に、そのデータがバックエンドへ送られます。例えば、プリンタが USB ポートに接続されている場合、USB バックエンドが使用されます。
   
  +
== 接続インターフェイス ==
# mount -o bind /var/run/cups /path/to/chroot/var/run/cups}}
 
   
  +
様々なインターフェイスにおける、プリンタを認識させるための追加の手順を以下に載せています。
== サーバーパッケージのインストール ==
 
   
  +
=== USB ===
以下のパッケージとプリンタードライバが必要になります。[[official Repositories|公式リポジトリ]]から[[pacman|インストール]]してください。
 
   
  +
USB プリンタが認識されているかどうか確認するには、まず {{Pkg|usbutils}} パッケージがインストールされていることを確認し、以下を実行してください:
* {{Pkg|cups}} - CUPS デーモン
 
* {{Pkg|ghostscript}} - (任意) PostScript インタプリタ
 
* {{Pkg|gsfonts}} - GhostScript 標準 Type1 フォント
 
   
  +
{{hc|$ lsusb|
ネットワークを介したプリンターブラウジングを有効にしたいのならば、{{Pkg|avahi}} もインストールして [[systemd#ユニットを使う|systemd]] を使って {{ic|avahi-daemon.service}} を有効にしてください。
 
  +
(...)
  +
Bus 001 Device 007: ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse
  +
}}
   
  +
=== パラレルポート ===
[[Samba|Samba]] プロトコルを使ってシステムをネットワークプリンターに接続する場合、もしくはシステムを Windows クライアント用の印刷サーバーにする場合、{{Pkg|samba}} もインストールしてください。
 
   
  +
パラレルポートプリンターを使うには、[[カーネルモジュール]] {{ic|lp}}、{{ic|parport}}、そして {{ic|parport_pc}} が必要です。
=== プリンタードライバ ===
 
   
  +
{{hc|# dmesg {{!}} grep -i parport|
以下はドライバパッケージの一部です。プリンターに合わせて適切なドライバを選んで下さい:
 
  +
parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series
  +
lp0: using parport0 (polling)
  +
}}
   
  +
=== ネットワーク ===
* {{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, [[List_of_Applications/Multimedia#ラスタ画像|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 ドライバーをインストールする必要があります。
 
   
  +
プリンタのアドレスがわかっている場合 (アドレスは、プリンタの画面に表示されたり、他の何らかの方法でネットワークをスキャンしたりなどして得られます)、プリンタを動的に発見する機能 (DNS-SD/mDNS) に頼る必要はありません。CUPS のキューを直接追加することで、プリンタを使用することができます。''lpadmin'' でキューを追加する歩法については、次の章かドキュメント [https://github.com/OpenPrinting/cups/tree/v2.4.7#setting-up-printers Setting up printers] で見られます。
==== プリンター PPD のダウンロード ====
 
   
  +
==== プリンタを発見する ====
プリンターによっては、この手順は必要ないかもしれません。標準の CUPS にすでに相当数の PPD (Postscript Printer Description) ファイルが含まれているからです。さらに、''foomatic-filters'', ''gimp-print'', ''hplip'' パッケージにも少数の PPD ファイルが入っており CUPS によって自動で検知されます。
 
   
  +
DNS-SD/mDNS を使ってプリンタを発見、使用、または共有するには、[[Avahi]] を使って [[Avahi#ホスト名の解決|.local ホストネーム解決]]をセットアップして、{{ic|cups.service}} を[[再起動]]してください。
以下は Linux Printing ウェブサイトから引用した PPD ファイルの説明です:
 
:"''全ての PostScript プリンターには、特定のプリンター機種に関するプリンター固有の情報が含まれた PPD ファイルがメーカーによって提供されています: プリンターのカラーやフォント、PostScript レベルなどプリンターの基本的な機能と、用紙サイズや解像度などユーザーが調整できるオプション。''"
 
   
  +
{{Note|DNS-SD は、[[Avahi]] を使用している時にのみ、サポートされています。CUPS は [[systemd-resolved]] を DNS-SD のために使用することをサポートしていません。[https://github.com/apple/cups/issues/5452 CUPS issue 5452] を参照してください。}}
プリンターの PPD が CUPS に''存在しない''時は:
 
*[[Arch User Repository|AUR]] をチェックしてプリンターやメーカーのパッケージが存在しないか確認してください
 
*[http://www.openprinting.org/printers OpenPrinting データベース] にアクセスしてメーカーとプリンターの機種を選択してください
 
*メーカーのサイトに行って GNU/Linux 用のドライバーを配布してないか検索してください
 
   
  +
[[Samba]] を使ってネットワークプリンターを共有する場合や、例えばシステムを Windows クライアント用のプリンターサーバーにする場合、{{Pkg|samba}} パッケージが必要です。
{{Note|PPD ファイルは {{ic|/usr/share/cups/model/}} に置きます。}}
 
   
==== プリンタードライバーの他のソース ====
+
== プリンタードライバー ==
   
  +
{{Note|訳注: CUPS は PPD とドライバのサポートを廃止し、完全に IPP Everywhere に依存させることを計画しています ([https://github.com/OpenPrinting/cups/issues/103 CUPS issue 103])。英語版の議論ページ [[:en:Talk:CUPS#CUPS printer drivers and backends are deprecated]] も参照してください。}}
[http://www.turboprint.de/english.html Turboprint] は GNU/Linux でサポートされていないプリンター (例えば Canon i*) 用のプロプライエタリのドライバーです。CUPS とは違って、高品質の印刷にはウォーターマークが加えられたり料金を支払う必要があります。
 
   
  +
最近 (2010年以降) のプリンタのほとんどは、AirPrint や IPP_Everywhere を実装しているのでドライバレスでの使用をサポートしています (以下を参照)。
== ハードウェアのサポートと設定 ==
 
   
  +
プリンターのドライバーは以下のソースのどこかから入手することができます。動作するのが確認されているドライバーの不完全なリストは [[CUPS/プリンター別の問題]] を見てください。
=== USB プリンター ===
 
   
  +
プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターではいくつかの[https://www.cups.org/doc/man-filter.html フィルター]も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [https://www.cups.org/doc/postscript-driver.html] に詳しく書かれています。
{{Tip|ほとんどの USB プリンターは何も設定しなくても動作します。このセクションをスキップして、あなたのプリンターが動かないとわかったときに読みなおして下さい。}}
 
   
  +
[https://www.openprinting.org/printers OpenPrinting Printer List] は多数のプリンターの推奨ドライバーを教えてくれます。個別のプリンターの PPD ファイルも提供されていますが、大抵の場合は [[#Foomatic|foomatic]] や推奨されているドライバーパッケージから手に入ります。
USB プリンターには2つの方法でアクセスが可能です: usblp カーネルモジュールと libusb。前者はクラシックな方法になります。やっていることはシンプルです: シリアルデータストリームとしてデータをデバイスファイルに書き出してプリンターに送信します。同じデバイスファイルを読むことで bi-di アクセスが可能になり、インク残量や状態、プリンタ性能情報 (PJL) を読み出せます。シンプルなプリンタでは問題なく動作しますが、複合機 (プリンタ・スキャナ) には適しておらず HP などのメーカーはバックエンドを提供しています。ソース: [http://lists.linuxfoundation.org/pipermail/printing-architecture/2012/002412.html here]。
 
   
  +
PPD ファイルが CUPS に供給されると、CUPS サーバーは PPD ファイルを再生成して {{ic|/etc/cups/ppd/}} に保存します。
==== usblp のブラックリスト化 ====
 
   
  +
[[PKGBUILD]] を作成する前に PPD ファイルが動作することを確認するために、PPD ファイルを {{ic|/usr/share/cups/''model''}} に手動で追加することができます。cups サービスを再起動したあとに、そのドライバが利用可能になるはずです。
{{Warning|{{Pkg|cups}} バージョン 1.6.0 では、{{ic|usblp}} カーネルモジュールを[[Kernel modules#ブラックリスト|ブラックリスト]]に入れる必要はなくなっています。
 
   
  +
=== AirPrint と IPP Everywhere ===
ブラックリストを使わないと解決できない問題を発見した時は上流である CUPS のバグトラッカーに報告してください。おそらく Till Kamppeter (Debian の CUPS メンテナ) とコンタクトが取れるはずです。詳しくは [http://cups.org/str.php?L4128 upstream bug] を見て下さい。}}
 
   
  +
CUPS には [[Wikipedia:ja:AirPrint|AirPrint]] と [https://www.pwg.org/ipp/everywhere.html IPP Everywhere] プリンタのサポートが含まれています。そのようなプリンタは自動的に発見されるはずです。
USB プリンタが動作しない問題がある場合、{{ic|usblp}} [[Kernel modules|カーネルモジュール]]のブラックリスト化を試すことができます:
 
   
  +
=== OpenPrinting CUPS フィルタ ===
{{hc|/etc/modprobe.d/blacklistusblp.conf|
 
blacklist usblp
 
}}
 
   
  +
Linux Foundation の OpenPrinting ワークグループは、[https://wiki.linuxfoundation.org/openprinting/cups-filters cups-filters] を提供しています。これらは、かつて CUPS の一部だったがプロジェクトから外されたバックエンド、フィルタ、そしてその他のバイナリです。これらは、{{Pkg|cups}} の依存関係である {{Pkg|cups-filters}} パッケージで利用できます。
カスタムカーネルのユーザーは先に進む前に {{ic|usbcore}} [[Kernel modules|カーネルモジュール]]を手動でロードする必要があるかもしれません。
 
   
モジュールをインストールしたら、プリンタを接続して次を実行することでカーネルがプリンタを検知したかどうか確認ます:
+
非 PDF プリンタは、{{Pkg|ghostscript}} をインストールする必要あります。PostScript プリンタは、{{Pkg|gsfonts}} も必要ある場合があります
# tail /var/log/messages.log
 
もしくは
 
# dmesg
 
   
  +
=== Foomatic ===
{{ic|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
 
   
  +
Linux Foundation の OpenPrinting ワークグループの [https://wiki.linuxfoundation.org/openprinting/database/foomatic foomatic] は、多くのプリンタドライバの PPD を (フリーとフリーでないもの両方) 提供しています。foomatic が何をするかに関する詳細は [https://www.openprinting.org/download/kpfeifle/LinuxKongress2002/Tutorial/IV.Foomatic-Developer/IV.tutorial-handout-foomatic-development.html Foomatic from the Developer's View] を参照してください。
{{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
 
   
  +
foomatic を使うには、{{Pkg|foomatic-db-engine}} と、以下から最低でも1つをインストールしてください:
=== パラレルポートプリンター ===
 
   
  +
* {{Pkg|foomatic-db}} - foomatic-db-engine によって PPD ファイルを生成するために使用される XML ファイルのコレクション。
パラレルポートプリンターを使うには {{ic|lp}}, {{ic|parport}}, {{ic|parport_pc}} [[Kernel modules|カーネルモジュール]]をロードする必要があります。
 
  +
* {{Pkg|foomatic-db-ppds}} — ビルド済み PPD ファイル群。
  +
* {{Pkg|foomatic-db-nonfree}} — プリンタのメーカーからフリーでないライセンスの XML ファイルのコレクション。foomatic-db-engine によって PPD ファイルを生成するために使用されます。
  +
* {{Pkg|foomatic-db-nonfree-ppds}} — フリーでないライセンスのビルド済み PPD ファイル群。
   
  +
foomatic PPD は追加のフィルタを必要とする場合があります (例: {{AUR|min12xxw}})。
次を実行してセットアップを確認してください:
 
# tail /var/log/messages.log
 
おそらく次のような表示があるはずです:
 
lp0: using parport0 (polling).
 
   
  +
=== Gutenprint ===
USB からパラレルポートへの変換器を使っている場合、CUPS はプリンターを検知することができません。対策としては、異なる接続タイプを使ってプリンターを追加し {{ic|/etc/cups/printers.conf}} の DeviceID を変更してください:
 
DeviceID = parallel:/dev/usb/lp0
 
   
  +
[https://gimp-print.sourceforge.net/ Gutenprint プロジェクト]は、CUPS と [[GIMP]] で使うための、Canon、Epson、Lexmark、Sony、Olympus、そして PCL のプリンタ用のドライバを提供しています。
=== HP プリンター ===
 
{{Warning|hplip ツールスタックは python2 を使っています。おそらく hp-setup の実行中、{{ic|/usr/bin/python}} が {{ic|/usr/bin/python3}} へのシンボリックリンクになっているために構文エラーが発生します。''一時的に'' {{ic|/usr/bin/python}} から {{ic|/usr/bin/python2}} にリンクを張って下さい。セットアップを終了した後は戻すようにしてください。}}
 
HP のプリンターでは HP の Linux セットアップツールを使ってインストールすることも可能です。[[official Repositories|公式リポジトリ]]から {{Pkg|hplip}} をインストールしてください。
 
   
  +
{{Pkg|gutenprint}} と {{Pkg|foomatic-db-gutenprint-ppds}} をインストールしてください。
qt フロントエンドで起動するには:
 
# hp-setup -u
 
   
  +
{{Note|Gutenprint のパッケージが更新された際、{{ic|cups-genppdupdate}} を root として実行し CUPS を再起動するまで、Gutenprint ドライバを使用するプリンタは動作を停止します。''cups-genppdupdate'' は、構成されたプリンタの PPD ファイルを更新します。詳細は {{man|8|cups-genppdupdate}} を参照してください。}}
コマンドラインで起動するには:
 
# hp-setup -i
 
   
  +
=== メーカー固有のドライバ ===
systray スプールマネージャを起動するには:
 
$ hp-systray
 
   
  +
多くのプリンタメーカーは独自の Linux ドライバを配布しています。中には Arch の公式リポジトリや [[AUR]] から入手できるものもあります。
PPD ファイルは {{ic|/usr/share/ppd/HP/}} にあります。
 
   
  +
これらのドライバのうちいくつかは [[CUPS/プリンター別の問題]] で詳しく説明されています。
{{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}} パッケージをインストールしてください。
 
   
  +
以下は、必要に応じて手動で URI を生成する追加の手順をリストアップしています。一部のプリンタとドライバは、[[CUPS/プリンター別の問題]] で説明されている通り、特殊な URI を必要とする場合があります。
{{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 サービスを再起動してください。}}
 
   
  +
=== USB ===
{{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 プリンタの URI を自動的に生成できるはずです (例: {{ic|1=usb://HP/DESKJET%20940C?serial=CN16E6C364BH}})。
== 設定 ==
 
   
  +
生成されない場合、[[CUPS/トラブルシューティング#USB プリンター]] でトラブルシューティングの手順を確認してください。
CUPS がインストールされた今、印刷ソリューションを設定する様々なオプションが存在します。いつもどおり、コマンドラインを使う方法は自由に使えます。CUPS にはフル機能のウェブインターフェイスも内蔵されています。同じく、GNOME や KDE などのデスクトップ環境にはプリンターの管理を助ける便利なプログラムが付いています。あなたの必要に応じて、どれか一つの方法を選ぶことが可能です。
 
   
  +
=== パラレルポート ===
コンピュータに直接プリンターを接続するのではなく、ネットワークプリンターに接続するつもりならば、先に [[CUPS printer sharing]] のページを読んでおくといいかもしれません。GNU/Linux システム間でのプリンターの共有はとても簡単でほとんど設定が必要ありません。他方、Windows と GNU/Linux で共有するにはちょっとした作業が必要になります。
 
   
  +
URI は {{ic|parallel:''device''}} という形式である必要があります。例えば、プリンターが {{ic|/dev/lp0}} で接続されている場合、{{ic|parallel:/dev/lp0}} を使ってください。USB からパラレルポートに変換するアダプタを使っている場合、プリンター URI は {{ic|parallel:/dev/usb/lp0}} を使ってください。
=== CUPS デーモン ===
 
   
  +
=== ネットワーク ===
{{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]] を設定することで、CUPS はプリンター URI を探知します。{{ic|avahi-discover}} を使ってプリンターの名前やアドレスを確認することもできます (例: {{ic|BRN30055C6B4C7A.local/10.10.0.155:631}})。
CUPS をインストールしたら、[[systemd#ユニットを使う|systemd]] を使って {{ic|org.cups.cupsd.service}} を起動できます。必要に応じて有効にしてください。
 
   
  +
[[Avahi]] を使わずに URI を手動で生成することも可能です。ネットワークプリンターで利用可能な URI スキーマのリストは [https://www.cups.org/doc/network.html#PROTOCOLS CUPS のドキュメント]を見てください。プリンターによって URI には細かい違いがあるので、プリンターのマニュアルや [[CUPS/プリンター別の問題]]もチェックしてください。
任意で、CUPS は Avahi のブラウジングを使ってネットワーク上にある共有プリンターを発見することができます。サーバーがどこにあるのかわからないような巨大なセットアップを使っているときに便利です。この機能を使用するには、{{ic|cups-browsed.service}} systemd ユニットを起動してください。
 
   
  +
[[SMB]] 共有におけるプリンタの URI は、{{man|8|smbspool}} man ページで説明されています。
=== ウェブインターフェイスとツールキット ===
 
   
  +
{{Note|プリンタ URI 内の特殊文字は適切に URL エンコードする必要があります。さもないと、Windows プリンタ名やユーザのパスワードに空白が存在する場合、CUPS は {{ic|lpadmin: Bad device-uri}} エラーを投げます。
デーモンが起動したら、ブラウザを開いて次のページに行って下さい: http://localhost:631 ('''''localhost''' は'' {{ic|/etc/hostname}} ''に書かれているホストネームに置き換える必要があるかもしれません'')。
 
  +
例えば、{{ic|smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6}} は {{ic|smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6}} となります。
   
  +
以下のコマンドを実行することで、URL エンコードされた文字列を得ることができます:
ここから、ウィザードに従ってプリンターを追加してください。通常は ''Adding Printers and Classes'' と ''Add Printer'' をクリックしてウィザードを開始します。ユーザー名とパスワードの入力を求められたら、root でログインしてください。プリンターに割り当てられる名前にあまり意味はありません、これは 'location' や 'description' にも同じことが言えます。次に、選択するデバイスのリストが表示されます。プリンターの実際の名前はラベルの横に表示されます (例: USB プリンターなら ''USB Printer #1'' の後)。最後に、適切なドライバを選択すれば設定は完了です。
 
   
  +
$ python -c 'from urllib.parse import quote; print("smb://" + quote("BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6"))'
''Maintenance'' ドロップダウンメニューから ''Print Test Page'' を押して設定をテストしてください。印刷がされなかったり設定が正しく適用されていない場合は、おそらく適切なプリンタードライバが欠けているのが問題です。
 
  +
  +
}}
  +
  +
リモートの CUPS 印刷サーバーは {{ic|ipp://''hostname'':631/printers/''queue_name''}} という形式の URI でアクセスできます。リモートの印刷サーバーをセットアップする方法は [[CUPS/プリンター共有#GNU/Linux システム間]] を見てください。
  +
  +
他の問題については [[CUPS/トラブルシューティング#ネットワークの問題]]を見てください。
  +
  +
{{Warning|1=サーバとクライアントの両方をプリンタフィルタで設定することは避けてください。クライアントかサーバのどちらかの印刷キューは 'raw' であるべきです。こうすることで、フィルタを通して印刷ジョブが2回送信されることを防ぐことができます (2回送信されてしまうと、共有されたプリンタがローカルでは動作するが、リモートマシンでは印刷に失敗してしまうなどの問題を引き起こす可能性があります [https://bbs.archlinux.org/viewtopic.php?pid=1589908#p1589908])。印刷キューを 'raw' に設定する例は [[#lp*]] を見てください。}}
  +
  +
== 使用方法 ==
  +
  +
CUPS は ''lp*'' ツールと ''cups*'' ツールを使って完全に制御できます。または、[[#ウェブインターフェイス]] や [[#GUI アプリケーション]] を使うこともできます。
  +
  +
* ''queue'' はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。
  +
* ''location'' はプリンターの物理的な場所の説明です (例えば "bedroom" や "kitchen" など)。複数のプリンターを管理しやすくするためにあります。
  +
* ''description'' はプリンターの完全な説明です。大抵はプリンターの正式名称が使われます ("HP LaserJet 5P" など)。
  +
  +
=== CLI ツール ===
  +
  +
コマンドラインツールに関するヒントは[http://localhost:631/help/options.html ローカルの CUPS ドキュメント]を参照してください。
  +
  +
{{Note|コマンドラインのスイッチはまとめて指定することができません。}}
  +
  +
SNMP を使って URI を見つけるには:
  +
  +
$ /usr/lib/cups/backend/snmp ''ip_address''
  +
  +
==== lp* ====
  +
  +
''lpinfo'' コマンドは、{{ic|-v}} オプションを付けるとシステムに接続されているプリンタの URI を一覧表示し、{{ic|-m}} オプションを付けるとシステム上にインストールされている利用可能な全てのドライバ (CUPS 用語では "モデル") を一覧表示します。
  +
  +
''lpadmin'' ユーティリティは、{{ic|-p ''queue_name''}} オプションを付けると新しいキューを作成します。{{ic|-p}} に {{ic|-E}} を加えると、プリンタを有効化し、ジョブを受け入れるようになります。{{ic|-v}} フラグはデバイスの URI を指定します。{{ic|-m}} フラグは、使用するドライバ (CUPS 用語では "モデル") か PPD ファイルを指定します。
  +
  +
{{ic|-x}} フラグを使うことでプリンタを取り除くこともできます (先に [[#cups*]] を読んでください)。
  +
  +
例:
  +
  +
# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz
  +
  +
ドライバレスのキュー (Apple AirPrint か IPP Everywhere) の場合は:
  +
  +
# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere
  +
  +
raw キューの場合 (PPD もフィルタも無し):
  +
  +
# lpadmin -p SHARED_PRINTER -m raw
  +
  +
モデルではなく PPD を指定する場合:
  +
  +
# lpadmin -p Test_Printer -E -v "ipp://10.0.1.3/ipp/print" -m pxlmono.ppd
   
{{Tip|他のフロントエンドは [[#他の CUPS インターフェイス]] を参照してください。}}
 
 
{{Note|
 
{{Note|
  +
* PPD を指定する場合、フルパスではなくファイル名だけを指定してください (例えば、{{ic|/usr/share/ppd/cupsfilters/pxlmono.ppd}} ではなく {{ic|pxlmono.ppd}})。あるいは、{{ic|-P}} コマンドラインスイッチを使うことでフルパスを使用することもできます。
* USB プリンターを設定するとき、''Add Printer'' ページにプリンターが表示されるはずです。"SCSI printer" オプションしか表示されない場合は、おそらく CUPS がプリンターを認識できていません。
 
  +
* 2021年現在、最近のプリンタの多くはドライバレスの印刷セットアップをサポートしており、{{ic|-m everywhere}} を指定すると (上記の例では2番目)、プリンタが定義され、ネットワーク上のプリンタにクエリすることで ''.ppd'' ファイルが {{ic|/etc/cups/ppd/}} 内に作成されます。
* HP の複合機で {{pkg|hplip}} パッケージを使ってワイヤレススキャンを有効にするには、HTTP プロトコルを使ってネットワークプリンターとしてプリンターを追加する必要があります。使用する URI を得るには、{{ic|hp-makeuri}} コマンドを実行してください。}}
 
  +
}}
   
  +
''lpq'' ユーティリティはキューのチェックを行います。全てのキューをチェックするには {{ic|-a}} フラグを追加してください。
==== CUPS の管理 ====
 
   
  +
''lprm'' ユーティリティはキューをクリアします。デフォルトの最後のキューではなく、全てのエントリを削除するには {{ic|-}} を追加してください。
ウェブインターフェイスでプリンターを管理する時 (例: プリンターを追加・削除する、印刷タスクを停止する) はユーザー名とパスワードが必要になります。デフォルトのユーザー名は ''sys'' グループに割り当てられたユーザー、もしくは root です。他の admin グループ (例: ''printadmin'') は {{ic|/etc/cups/cups-files.conf}} の {{ic|SystemGroup}} 行に追加することができます (この行を新しく加える必要があるかもしれません):
 
   
  +
''lpr'' ユーティリティは印刷を行います。ファイルを ''N'' 回印刷するには {{ic|-# ''N''}} を使用してください。ヘッダを追加するには {{ic|-p}} フラグを使用してください。
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules...
 
<strike>SystemGroup sys root</strike>
 
SystemGroup printadmin
 
   
  +
''lpr'' を使って印刷テストを行う例:
グループを作成してください ({{ic|man groupadd}}):
 
   
  +
$ lpr /usr/share/cups/data/testprint
# groupadd printadmin
 
  +
$ echo 'Hello, world!' | lpr -p
# groupadd lp
 
   
  +
''lpstat'' ユーティリティは、{{ic|-s}} フラグを付けて使用すると、ステータスをチェックします。{{ic|-p}} フラグを付けると、チェックするキューを指定できます。
グループにユーザーを追加してください ({{ic|man gpasswd}}):
 
   
  +
''lpoptions'' ユーティリティは、上記の ''lpadmin'' と同じ {{ic|-p ''queue_name''}} フラグを使用します。{{ic|-l}} フラグを付けると、オプションを一覧表示します。{{ic|-d}} フラグは、デフォルトのプリンタを引数 {{ic|''queue_name''}} に設定します。{{ic|-o}} フラグは、オプションに値を設定します:
# gpasswd -a username printadmin # for printer administration
 
# gpasswd -a username lp # for printing priviledges
 
   
  +
$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
変更を適用するには {{ic|org.cups.cupsd.service}} デーモンを再起動してログインし直す必要があります:
 
  +
$ lpoptions -p HP_DESKJET_940C -o cupsIPPSupplies=true -o Duplex=DuplexNoTumble
   
  +
==== cups* ====
# systemctl restart org.cups.cupsd.service
 
   
  +
ユーティリティ ''cupsaccept''、''cupsdisable''、''cupsenable''、そして ''cupsreject'' は、その名の通りの動作を行います。それぞれの動作は次のとおりです:ジョブを受け入れるようにプリンタを設定する、プリンタを無効化する、プリンタをアクティブ化する、全ての受信タスクを拒否するようにプリンタを設定する。
root アカウントがロックされている (つまり sudo を使っている) と、デフォルトのユーザー名 (root) とパスワードでは CUPS の管理インターフェイスにログインできません。[https://bbs.archlinux.org/viewtopic.php?id=35567 この投稿]を読んで他のユーザーを cups の管理者として追加してください。
 
   
  +
例として、プリンタをクリーンに取り除いてみましょう:
==== ウェブインターフェイスにリモートアクセスする ====
 
   
  +
# cupsreject ''queue_name''
デフォルトでは、CUPS のウェブインターフェイスは ''localhost'' (インストールしたコンピュータ) からしかアクセスできないようになっています。インターフェイスに外部からアクセスするには、以下の変更を {{ic|/etc/cups/cupsd.conf}} ファイルに加えて下さい。次の行を:
 
  +
# cupsdisable ''queue_name''
Listen localhost:631
 
  +
# lpadmin -x ''queue_name''
下のように置き換えてください。
 
Port 631
 
これで CUPS がリクエストを受け取るようになります。
 
   
  +
==== ink ====
3つのアクセスレベルを設定することができます:
 
<Location /> #サーバーへのアクセス
 
<Location /admin> #admin ページヘのアクセス
 
<Location /admin/conf> #設定ファイルへのアクセス
 
   
リモートホストに以上のレベルのどれか一つ与えるには、レベルのセクションに {{ic|Allow}} の記述追加してください。{{ic|Allow}} は以下のような形式で使うことができます:
+
インクレベルをるには {{AUR|ink}} を[[インストール]]してください。
Allow from all
 
Allow from host.domain.com
 
Allow from *.domain.com
 
Allow from ip-address
 
Allow from ip-address/netmask
 
Allow from @LOCAL
 
   
  +
{{Note|[http://libinklevel.sourceforge.net/index.html#supported サポートされているプリンタのリスト]を参照してください。}}
また、{{ic|Deny}} も使うことが可能です。例えば、ローカルネットワークインターフェイス上にあるホスト全てに完全なアクセス権を与えるには、ファイル {{ic|/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>
 
   
  +
ユーザを {{ic|lp}} [[ユーザグループ]]に追加し、一旦ログアウトし、再度ログインしてください。
次の設定も追加する必要があるかもしれません:
 
   
  +
詳細を見るには、オプションを付けずに {{ic|ink}} を実行してください。
DefaultEncryption Never
 
   
  +
=== ウェブインターフェイス ===
この設定によって次のエラーを止めることができます: 426 - Upgrade Required when using the CUPS web interface from a remote machine。
 
   
  +
CUPS サーバは、ウェブインターフェイス (http://localhost:631/ で利用可能) から完全に管理することができます。
=== コマンドライン設定 ===
 
   
  +
{{Note|CUPS への HTTPS 接続を使用する場合、初回アクセス時はインターフェイスが現れるまでに非常に長い時間がかかる''場合があります''。これは、初回リクエスト時に SSL 証明書の生成がトリガーされ、これに時間が掛かる可能性があるからです。}}
コマンドラインからツール (lp* と cups* コマンドファミリー) を使って CUPS を完全に操作することができます。
 
   
  +
ウェブインターフェイスから管理を行うには、認証が必要です。[[#パーミッション]] を参照してください。
Arch Linux では、ほとんどのコマンドはシェルの自動補完をサポートしています。
 
また、コマンドラインのスイッチはグループ化することはできないので注意してください。
 
   
;デバイス一覧する
+
;キュー追加する
  +
'''Administration''' ('''管理''') ページを開いてください。
# lpinfo -v
 
   
;ドライバ一覧する
+
;既存のキュー編集する
  +
'''Printers''' ('''プリンター''') ページを開き、編集したいキューを選択してください。
# lpinfo -m
 
   
;新しいプリンターを追加する
+
;キューをテストする
  +
'''Printers''' ('''プリンター''') ページを開き、キューを選択してください。
# lpadmin -p ''printer'' -E -v ''device'' -P ''ppd''
 
   
  +
=== GUI アプリケーション ===
''printer'' はあなたが自由に設定できます。デバイスは {{ic|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
 
   
  +
CUPS を管理するのに十分な権限がユーザに無い場合、アプリケーションは起動時に root のパスワードを要求します。ユーザに root アクセスを要さない管理権限を与える方法は、[[#設定]] を見てください。
以下のコマンドの、''printer'' はあなたが設定したプリンターの名前に置き換えてください。
 
   
  +
* {{App|Deepin Print Manager|Deepin デスクトップのためのプリンタ設定インターフェイス。|https://github.com/linuxdeepin/dde-printer|{{Pkg|deepin-printer}}}}
;デフォルトのプリンターを設定する
 
  +
* {{App|GtkLP|CUPS の GTK インターフェイス。|https://gtklp.sirtobi.com/index.shtml|{{AUR|gtklp}}}}
$ lpoptions -d ''printer''
 
  +
* {{App|print-manager|印刷ジョブとプリンターの管理ツール ([[KDE]])。|https://invent.kde.org/utilities/print-manager|{{Pkg|print-manager}}}}
  +
* {{App|system-config-printer|GTK プリンタ設定ツールと状態アプレット。|https://github.com/OpenPrinting/system-config-printer|{{Pkg|system-config-printer}}}}
   
  +
== 設定 ==
;状態をチェックする
 
$ lpstat -s
 
$ lpstat -p ''printer''
 
   
  +
CUPS サーバの設定は {{ic|/etc/cups/cupsd.conf}} と {{ic|/etc/cups/cups-files.conf}} にあります ({{man|5|cupsd.conf}} と {{man|5|cups-files.conf}} を参照)。どちらかのファイルを編集したら、変更を適用するために {{ic|cups.service}} を[[再起動]]してください。ほとんどのユーザにとって、デフォルトの設定で問題ありません。
;プリンターを無効にする
 
# cupsdisable ''printer''
 
   
  +
=== パーミッション ===
;プリンターを有効にする
 
# cupsenable ''printer''
 
   
  +
==== グループ ====
;プリンターを削除する
 
まず印刷要求のエントリを全て拒否するように設定してください:
 
# cupsreject ''printer''
 
次にプリンターを無効にしてください。
 
# cupsdisable ''printer''
 
最後にプリンターを削除してください。
 
# lpadmin -x ''printer''
 
   
  +
プリンタの管理権限を持つ[[ユーザグループ]]は {{ic|/etc/cups/cups-files.conf}} 内の {{ic|SystemGroup}} で定義されています。デフォルトでは、{{ic|sys}} グループ、{{ic|root}} グループ、そして {{ic|wheel}} グループが使用されています。
;ファイルを印刷する
 
$ lpr ''file''
 
$ lpr -# 17 ''file'' # ファイルを17部印刷する
 
$ echo "Hello, world!" | lpr -p # print the result of a command. The -p switch adds a header.
 
   
  +
CUPS のヘルパプログラムは、{{ic|cups}} ユーザとグループとして実行されます。これにより、ヘルパプログラムがプリンタデバイスにアクセスしたり、{{ic|/etc/cups/}} 内の設定ファイル ({{ic|cups}} グループによって所有されています) を読み込んだりすることができます。
;印刷キューを確認する
 
$ lpq
 
$ lpq -a # on all printers
 
   
  +
{{Note|{{Pkg|cups}} 2.2.6-2 より前では、{{ic|lp}} グループが[https://gitlab.archlinux.org/archlinux/packaging/packages/cups/-/commit/b6ebb9850aa9a27c27e668fe066d063a7711c15b 代わりに使用されていました]。アップグレード後、{{ic|/etc/cups}} 内のファイルは、{{ic|/etc/cups/cups-files.conf}} 内で設定されている {{ic|cups}} グループ、{{ic|User 209}}、そして {{ic|Group 209}} によって所有されるはずです。}}
;印刷キューを削除する
 
# lprm # 最後のエントリを削除
 
# lprm - # 全てのエントリを削除
 
   
  +
==== PolicyKit による管理者認証を許可する ====
=== 他の CUPS インターフェイス ===
 
   
  +
[[PolicyKit]] を設定することで、ユーザは管理者パスワードを入力せずに GUI を使ってプリンタを設定できるようになります。
==== GNOME ====
 
   
{{Pkg|system-config-printer}} を[[pacman|インストール]]することでプリンターを設定・管理できます。このプログラムは複数の gnome 依存パッケージを呼びこむことがあります。
+
{{Note|system-config-printer を使用する場合、system-config-printer に PolicyKit を使用させるために {{Pkg|cups-pk-helper}} をインストールする必要があります。}}
   
  +
以下は、wheel [[ユーザグループ]]のメンバーにパスワード無しでのプリンタ管理を許可する例です:
cups スケジューラを管理するのに必要な特権をユーザーが持っていない場合、system-config-printer は起動時に root パスワードの入力を求めます。以下の設定をすることでこれを回避することが可能です。
 
   
  +
{{hc|/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules|2=
1. cups スケジューラを管理するグループを作成してください:
 
  +
polkit.addRule(function(action, subject) {
  +
if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" &&
  +
subject.isInGroup("wheel")){
  +
return polkit.Result.YES;
  +
}
  +
});
  +
}}
   
  +
=== デフォルトの用紙サイズ ===
# groupadd lpadmin
 
   
  +
{{Pkg|cups}} は、{{Pkg|libpaper}} サポートありでビルドされており、libpaper はデフォルトで[[Wikipedia:ja:レターサイズ|レター]]用紙サイズ ({{ic|lpoptions}} では {{ic|PageSize}} と呼ばれています) を使用します。印刷キューを追加するたびに用紙サイズを変更する手間を省くために、{{ic|/etc/papersize}} を[[テキスト編集|編集]]してシステムのデフォルト用紙サイズを設定することができます。{{man|1|paper}} を参照してください。
2. ユーザーを新しく作成したグループに追加してください:
 
   
  +
=== アーカイブ PDF/A ===
# usermod -aG lpadmin ''username''
 
   
  +
以下は、互換性の高い形式で PDF ファイルを保存する方法です (通常、これらは Archival PDF や PDF/A、PDFA、ISO 19005 と呼ばれます)。
3. cups が新しく作成したグループを使うように設定してください:
 
   
  +
現在、オプションはありません。なので、cups によって使用される、''gs'' を呼び出すコマンドに追加する必要があります。
{{hc|/etc/cups/cups-files.conf|
 
...
 
SystemGroup sys root '''lpadmin'''
 
...}}
 
   
  +
{{Accuracy|{{ic|/etc/cups/cups.conf}} は {{pkg|cups}} パッケージに存在しません。なので、以下の設定例のコメントアウトされているデフォルト引数付きの {{ic|GSCall}} オプションは存在しません。}}
4. cups を再起動してください:
 
   
  +
{{hc|/etc/cups/cups.conf|2=
# systemctl restart org.cups.cupsd.service
 
  +
# GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s
   
  +
# 上記は GSCall を呼び出す際のデフォルト引数です。-dNOPAUSE の前に -dPDFA を追加し、上記をアンコメントすると (デフォルトの設定が変わっているかもしれないので、以下の行を丸々コピペしないでください。あなたのシステム上のデフォルトを使用してください):
5. 一度ログアウトしてからログインしなおすか、コンピュータを再起動してください。
 
   
  +
GSCall %s -q -dCompatibilityLevel=%s '''-dPDFA''' -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s
==== KDE ====
 
  +
}}
   
  +
=== ログファイル ===
[[KDE|KDE]] のユーザーはコントロールセンターからプリンターを変更することが可能です。ハードウェアグループにプリンターインターフェイスが現れない時は {{Pkg|kdeutils-print-manager}} パッケージをインストールする必要があるかもしれません。インターフェイスの使用方法など詳しい情報はデスクトップ環境のドキュメントを参照してください。
 
   
  +
デフォルトでは、全てのログは {{ic|/var/log/cups/}} 内のファイルへ送られます。
==== その他 ====
 
   
  +
ログレベルは {{ic|/etc/cups/cupsd.conf}} で変更できます。[https://www.cups.org/doc/man-cupsd.conf.html cupsd.conf ドキュメント]を参照してください。
[[Arch User Repository|AUR]] に {{AUR|gtklp}} があります。
 
   
  +
{{ic|/etc/cups/cups-files.conf}} 内の {{ic|AccessLog}} ディレクティブ、{{ic|ErrorLog}} ディレクティブ、そして {{ic|PageLog}} ディレクティブの値を {{ic|syslog}} に変更することで、CUPS にログを代わりに [[systemd journal]] へ記録させることができます。元の提案された変更に関する情報は [[Fedora:Changes/CupsJournalLogging]] を参照してください。
== PDF 仮想プリンター ==
 
{{Note|GNOME では、PDF や Postscript ファイルに直接プリントすることが可能なため、そのような場合 CUPS-PDF が必要ありません。}}
 
   
  +
=== cups-browsed ===
{{Pkg|cups-pdf}} パッケージを使うことで送信されたデータから PDF を作成する仮想プリンターをセットアップすることができます。このパッケージは必須ではありませんが、使うと非常に便利です。
 
   
  +
{{Out of date|DNS-SD で広告されたプリンタを発見するために {{ic|cups-browsed.service}} は必要ありません。これは {{ic|cups.service}} によって行われます。{{ic|cups-browsed.service}} は、LDAP サーバや、レガシーな CUPS プロトコル (CUPS サーバ ≤ 1.5) を使用するサーバでプリンタを発見する時にだけ必要になります。}}
パッケージをインストールした後、他のプリンターと同じようにウェブインターフェイスを使って設定してください。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
 
   
  +
CUPS は [[Avahi]] browsing を使ってネットワーク上の未知の共有プリンターを発見することができます。サーバーがどこにあるのかわからないくらい巨大な構成で有用です。この機能を使うには [[Avahi#ホスト名の解決|.local ホストネーム解決]]を設定して、{{ic|avahi-daemon.service}} と {{ic|cups-browsed.service}} の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、作成されたキューが動作しない場合があります。しかし、[https://www.pwg.org/ipp/everywhere.html IPP Everywhere] や [[Wikipedia:ja:AirPrint|AirPrint]] をサポートするプリンタなど、ドライバレスのプリンタは設定せずに動作するはずです。
生成された PDF ドキュメントは {{ic|/var/spool/cups-pdf}} のサブディレクトリに置かれます。通常、サブディレクトリにはジョブを実行したユーザーの名前が付けられます。ちょっとした設定で、印刷した PDF ドキュメントをもっと簡単に見つけられるようにできます。{{ic|/etc/cups/cups-pdf.conf}} を編集して、次の行を
 
#Out /var/spool/cups-pdf/${USER}
 
   
  +
{{Note|1=<nowiki/>
下のように変更してください
 
  +
* ネットワークプリンタの検索によって[https://bbs.archlinux.org/viewtopic.php?pid=1720219#p1720219 コンピュータの起動時間が大幅に長くなってしまうことがあります]。
  +
* {{ic|cups-browsed.service}} は、プリンタがネットワークに現れたり消えたりしたときに、そのプリンタを動的に追加したり削除したりするときにだけ必要になります。単に DNS-SD/mDNS 対応のネットワークプリンタを CUPS に追加したい場合は、必要ありません。
  +
}}
   
  +
=== 印刷サーバとリモート管理 ===
Out ${HOME}
 
   
  +
[[CUPS/プリンター共有]] と [[CUPS/プリンター共有#リモート管理]] を見てください。
=== PostScript に印刷する ===
 
   
  +
=== ローカルの CUPS サーバーを使わない ===
CUPS-PDF (仮想 PDF プリンター) は実際は PostScript ファイルを作成してから ps2pdf ユーティリティを使って PDF を作成しています。PostScript に印刷するには、印刷ダイアログでプリンターとして "CUPS-PDF" を選択し、"print to file" のチェックボックスを選択して、印刷を押し、filename.ps を入力して保存をクリックするだけです。これはファックスなどで便利です。
 
  +
  +
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。{{Pkg|libcups}} パッケージの[[インストール]]が必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに {{Pkg|cups}} パッケージのインストールを必要とします。
  +
  +
{{Note|ローカルの CUPS サーバーを使わずにリモートプリンターにアクセスすることは開発者によって非推奨とされています。[https://lists.cups.org/pipermail/cups/2015-October/027229.html]}}
  +
  +
リモートの CUPS サーバーを使うには、{{ic|CUPS_SERVER}} [[環境変数]]を {{ic|printerserver.mydomain:port}} に設定してください。例えば、単一の [[Firefox]] インスタンスにおいて別の印刷サーバを使用した場合は ({{ic|printserver.mydomain:port}} の部分は、あなたの印刷サーバの名前/ポートに置き換えてください):
  +
  +
$ CUPS_SERVER=printserver.mydomain:port firefox
  +
  +
この設定を永続化するには、設定ファイル {{ic|/etc/cups/client.conf}} を作成し、それにリモート CUPS サーバーのホスト名を追加します:
  +
  +
ServerName server
  +
  +
カスタムポートを指定することもできます:
  +
  +
ServerName server:port
  +
  +
詳細は、[https://www.cups.org/doc/sharing.html#AUTO_IPP] を参照してください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
[[CUPS/トラブルシューティング]]を見てさい。
+
[[CUPS/トラブルシューティング]] と [[CUPS/プリンター別の問題]] を見てください。
   
 
== 参照 ==
 
== 参照 ==
   
* [http://localhost:631/help 公式 CUPS ドキュメント], ''ローカルにインストールされたドキュメント''
+
* [http://localhost:631/help 公式 CUPS ドキュメント] (''ローカルにインストールされています'')
  +
* [[Wikipedia:ja:CUPS]]
* [http://www.cups.org/ 公式 CUPS ウェブサイト]
 
* [http://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting ホームページ]
+
* [https://wiki.linuxfoundation.org/openprinting/start 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 印刷処理の考え方 - 印刷ワークフローについての説明]
* [https://bbs.archlinux.org/ Arch Linux ユーザーフォーラム]
 
  +
* [https://en.opensuse.org/SDB:CUPS_in_a_Nutshell OpenSuSE CUPS in a Nutshell - a quick CUPS overview]
* [http://wiki.gotux.net/tutorials/software/hp-printer Install HP printers easy way]
 
  +
* [[Gentoo:Printing]]
  +
* [[debian:Printing|Debian の印刷ポータル - 詳細な技術的ガイド]]
  +
* [[debian:SystemPrinting|Debian の印刷の概要 - CUPS 印刷システムの基本的な概要]]
  +
* [https://lists.linuxfoundation.org/pipermail/printing-architecture/ CUPS メーリングリスト]
  +
* [https://lists.cups.org/mailman/listinfo/cups CUPS メーリングリスト (Apple フォーク)]
  +
* [https://github.com/OpenPrinting/cups/issues CUPS 問題トラッカー]
  +
* [https://github.com/apple/cups/issues CUPS 問題トラッカー (Apple フォーク)]
  +
  +
{{TranslationStatus|CUPS|2023-11-02|790537}}

2024年3月19日 (火) 13:59時点における最新版

関連記事

CUPS は、Linux® や他の Unix® ライクなオペレーティングシステムのための標準ベースのオープンソースな印刷システムです。OpenPrinting によって開発されています。

Arch Linux では、Apple CUPS フォークではなく、OpenPrinting CUPS フォークがパッケージングされています。

インストール

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

ノート: CUPS では、ドライバは IPP Everywhere に取って代わられる形で非推奨となっているため、印刷を機能させるには cups-pdf をインストールする必要がある場合があります。このパッケージがないと、client-error-document-format-not-supported のようなエラーが発生する場合があります。IPP Everywhere は PDF を直接プリンタに送信するため、印刷したいものをまず PDF に変換するために cups-pdf が必要です。

任意で、PDF ドキュメントに"印刷"したい場合は、cups-pdf パッケージをインストールしてください。デフォルトでは、PDF ファイルは /var/spool/cups-pdf/username/ に保存されます。保存場所は /etc/cups/cups-pdf.conf で変更することができます。

そして、cups.service有効化し、起動してください。または、ソケットアクティベーションを使用することで、このサービスがプログラムによって必要とされる場合にのみ CUPS を起動させることもできます。

ソケットアクティベーション

cupscups.socket ユニットを提供しています。cups.socket が有効化されている (かつ、cups.service無効化されている) 場合、systemd は CUPS をすぐには起動せず、適切なソケットをただリッスンします。プログラムがそれらの CUPS ソケットのうちどれかへの接続を試みた時に、systemdcups.service を起動し、それらのポートの制御を CUPS プロセスへ透過的に渡します。

印刷の流れ

関連する問題を解決したい場合は、CUPS がどう機能するかを知っておくことが重要です:

  1. '印刷' が選択された際、アプリケーションは PDF ファイルを CUPS に送信します (アプリケーションが他の形式を送信した場合、それらはまず PDF に変換されます)。
  2. CUPS はプリンタの PPD ファイル (プリンタ記述ファイル) を参照し、PDF ファイルをプリンタの理解できる言語 (PJL、PCL、ビットマップ、ネイティブな PDF など) へ変換するためにどのようなフィルタを使用する必要があるかを調べます。
  3. フィルタが PDF ファイルをプリンタの理解できる形式へ変換します。
  4. 最後に、そのデータがバックエンドへ送られます。例えば、プリンタが USB ポートに接続されている場合、USB バックエンドが使用されます。

接続インターフェイス

様々なインターフェイスにおける、プリンタを認識させるための追加の手順を以下に載せています。

USB

USB プリンタが認識されているかどうか確認するには、まず usbutils パッケージがインストールされていることを確認し、以下を実行してください:

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

パラレルポート

パラレルポートプリンターを使うには、カーネルモジュール lpparport、そして parport_pc が必要です。

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

ネットワーク

既知の場所のプリンタを追加する

プリンタのアドレスがわかっている場合 (アドレスは、プリンタの画面に表示されたり、他の何らかの方法でネットワークをスキャンしたりなどして得られます)、プリンタを動的に発見する機能 (DNS-SD/mDNS) に頼る必要はありません。CUPS のキューを直接追加することで、プリンタを使用することができます。lpadmin でキューを追加する歩法については、次の章かドキュメント Setting up printers で見られます。

プリンタを発見する

DNS-SD/mDNS を使ってプリンタを発見、使用、または共有するには、Avahi を使って .local ホストネーム解決をセットアップして、cups.service再起動してください。

ノート: DNS-SD は、Avahi を使用している時にのみ、サポートされています。CUPS は systemd-resolved を DNS-SD のために使用することをサポートしていません。CUPS issue 5452 を参照してください。

Samba を使ってネットワークプリンターを共有する場合や、例えばシステムを Windows クライアント用のプリンターサーバーにする場合、samba パッケージが必要です。

プリンタードライバー

ノート: 訳注: CUPS は PPD とドライバのサポートを廃止し、完全に IPP Everywhere に依存させることを計画しています (CUPS issue 103)。英語版の議論ページ en:Talk:CUPS#CUPS printer drivers and backends are deprecated も参照してください。

最近 (2010年以降) のプリンタのほとんどは、AirPrint や IPP_Everywhere を実装しているのでドライバレスでの使用をサポートしています (以下を参照)。

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

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

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

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

PKGBUILD を作成する前に PPD ファイルが動作することを確認するために、PPD ファイルを /usr/share/cups/model に手動で追加することができます。cups サービスを再起動したあとに、そのドライバが利用可能になるはずです。

AirPrint と IPP Everywhere

CUPS には AirPrintIPP Everywhere プリンタのサポートが含まれています。そのようなプリンタは自動的に発見されるはずです。

OpenPrinting CUPS フィルタ

Linux Foundation の OpenPrinting ワークグループは、cups-filters を提供しています。これらは、かつて CUPS の一部だったがプロジェクトから外されたバックエンド、フィルタ、そしてその他のバイナリです。これらは、cups の依存関係である cups-filters パッケージで利用できます。

非 PDF プリンタは、ghostscript をインストールする必要があります。PostScript プリンタは、gsfonts も必要である場合があります。

Foomatic

Linux Foundation の OpenPrinting ワークグループの foomatic は、多くのプリンタドライバの PPD を (フリーとフリーでないもの両方) 提供しています。foomatic が何をするかに関する詳細は Foomatic from the Developer's View を参照してください。

foomatic を使うには、foomatic-db-engine と、以下から最低でも1つをインストールしてください:

  • foomatic-db - foomatic-db-engine によって PPD ファイルを生成するために使用される XML ファイルのコレクション。
  • foomatic-db-ppds — ビルド済み PPD ファイル群。
  • foomatic-db-nonfree — プリンタのメーカーからフリーでないライセンスの XML ファイルのコレクション。foomatic-db-engine によって PPD ファイルを生成するために使用されます。
  • foomatic-db-nonfree-ppds — フリーでないライセンスのビルド済み PPD ファイル群。

foomatic PPD は追加のフィルタを必要とする場合があります (例: min12xxwAUR)。

Gutenprint

Gutenprint プロジェクトは、CUPS と GIMP で使うための、Canon、Epson、Lexmark、Sony、Olympus、そして PCL のプリンタ用のドライバを提供しています。

gutenprintfoomatic-db-gutenprint-ppds をインストールしてください。

ノート: Gutenprint のパッケージが更新された際、cups-genppdupdate を root として実行し CUPS を再起動するまで、Gutenprint ドライバを使用するプリンタは動作を停止します。cups-genppdupdate は、構成されたプリンタの PPD ファイルを更新します。詳細は cups-genppdupdate(8) を参照してください。

メーカー固有のドライバ

多くのプリンタメーカーは独自の Linux ドライバを配布しています。中には Arch の公式リポジトリや AUR から入手できるものもあります。

これらのドライバのうちいくつかは CUPS/プリンター別の問題 で詳しく説明されています。

プリンター URI

以下は、必要に応じて手動で URI を生成する追加の手順をリストアップしています。一部のプリンタとドライバは、CUPS/プリンター別の問題 で説明されている通り、特殊な 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 のドキュメントを見てください。プリンターによって URI には細かい違いがあるので、プリンターのマニュアルや CUPS/プリンター別の問題もチェックしてください。

SMB 共有におけるプリンタの URI は、smbspool(8) man ページで説明されています。

ノート: プリンタ URI 内の特殊文字は適切に URL エンコードする必要があります。さもないと、Windows プリンタ名やユーザのパスワードに空白が存在する場合、CUPS は lpadmin: Bad device-uri エラーを投げます。

例えば、smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6 となります。

以下のコマンドを実行することで、URL エンコードされた文字列を得ることができます:

$ python -c 'from urllib.parse import quote; print("smb://" + quote("BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6"))'

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

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

警告: サーバとクライアントの両方をプリンタフィルタで設定することは避けてください。クライアントかサーバのどちらかの印刷キューは 'raw' であるべきです。こうすることで、フィルタを通して印刷ジョブが2回送信されることを防ぐことができます (2回送信されてしまうと、共有されたプリンタがローカルでは動作するが、リモートマシンでは印刷に失敗してしまうなどの問題を引き起こす可能性があります [2])。印刷キューを 'raw' に設定する例は #lp* を見てください。

使用方法

CUPS は lp* ツールと cups* ツールを使って完全に制御できます。または、#ウェブインターフェイス#GUI アプリケーション を使うこともできます。

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

CLI ツール

コマンドラインツールに関するヒントはローカルの CUPS ドキュメントを参照してください。

ノート: コマンドラインのスイッチはまとめて指定することができません。

SNMP を使って URI を見つけるには:

$ /usr/lib/cups/backend/snmp ip_address

lp*

lpinfo コマンドは、-v オプションを付けるとシステムに接続されているプリンタの URI を一覧表示し、-m オプションを付けるとシステム上にインストールされている利用可能な全てのドライバ (CUPS 用語では "モデル") を一覧表示します。

lpadmin ユーティリティは、-p queue_name オプションを付けると新しいキューを作成します。-p-E を加えると、プリンタを有効化し、ジョブを受け入れるようになります。-v フラグはデバイスの URI を指定します。-m フラグは、使用するドライバ (CUPS 用語では "モデル") か PPD ファイルを指定します。

-x フラグを使うことでプリンタを取り除くこともできます (先に #cups* を読んでください)。

例:

# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz

ドライバレスのキュー (Apple AirPrint か IPP Everywhere) の場合は:

# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere

raw キューの場合 (PPD もフィルタも無し):

# lpadmin -p SHARED_PRINTER -m raw

モデルではなく PPD を指定する場合:

# lpadmin -p Test_Printer -E -v "ipp://10.0.1.3/ipp/print" -m pxlmono.ppd
ノート:
  • PPD を指定する場合、フルパスではなくファイル名だけを指定してください (例えば、/usr/share/ppd/cupsfilters/pxlmono.ppd ではなく pxlmono.ppd)。あるいは、-P コマンドラインスイッチを使うことでフルパスを使用することもできます。
  • 2021年現在、最近のプリンタの多くはドライバレスの印刷セットアップをサポートしており、-m everywhere を指定すると (上記の例では2番目)、プリンタが定義され、ネットワーク上のプリンタにクエリすることで .ppd ファイルが /etc/cups/ppd/ 内に作成されます。

lpq ユーティリティはキューのチェックを行います。全てのキューをチェックするには -a フラグを追加してください。

lprm ユーティリティはキューをクリアします。デフォルトの最後のキューではなく、全てのエントリを削除するには - を追加してください。

lpr ユーティリティは印刷を行います。ファイルを N 回印刷するには -# N を使用してください。ヘッダを追加するには -p フラグを使用してください。

lpr を使って印刷テストを行う例:

$ lpr /usr/share/cups/data/testprint
$ echo 'Hello, world!' | lpr -p 

lpstat ユーティリティは、-s フラグを付けて使用すると、ステータスをチェックします。-p フラグを付けると、チェックするキューを指定できます。

lpoptions ユーティリティは、上記の lpadmin と同じ -p queue_name フラグを使用します。-l フラグを付けると、オプションを一覧表示します。-d フラグは、デフォルトのプリンタを引数 queue_name に設定します。-o フラグは、オプションに値を設定します:

$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
$ lpoptions -p HP_DESKJET_940C -o cupsIPPSupplies=true -o Duplex=DuplexNoTumble

cups*

ユーティリティ cupsacceptcupsdisablecupsenable、そして cupsreject は、その名の通りの動作を行います。それぞれの動作は次のとおりです:ジョブを受け入れるようにプリンタを設定する、プリンタを無効化する、プリンタをアクティブ化する、全ての受信タスクを拒否するようにプリンタを設定する。

例として、プリンタをクリーンに取り除いてみましょう:

# cupsreject queue_name
# cupsdisable queue_name
# lpadmin -x queue_name

ink

インクレベルを見るには inkAURインストールしてください。

ノート: サポートされているプリンタのリストを参照してください。

ユーザを lp ユーザグループに追加し、一旦ログアウトし、再度ログインしてください。

詳細を見るには、オプションを付けずに ink を実行してください。

ウェブインターフェイス

CUPS サーバは、ウェブインターフェイス (http://localhost:631/ で利用可能) から完全に管理することができます。

ノート: CUPS への HTTPS 接続を使用する場合、初回アクセス時はインターフェイスが現れるまでに非常に長い時間がかかる場合があります。これは、初回リクエスト時に SSL 証明書の生成がトリガーされ、これに時間が掛かる可能性があるからです。

ウェブインターフェイスから管理を行うには、認証が必要です。#パーミッション を参照してください。

キューを追加する

Administration (管理) ページを開いてください。

既存のキューを編集する

Printers (プリンター) ページを開き、編集したいキューを選択してください。

キューをテストする

Printers (プリンター) ページを開き、キューを選択してください。

GUI アプリケーション

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

  • Deepin Print Manager — Deepin デスクトップのためのプリンタ設定インターフェイス。
https://github.com/linuxdeepin/dde-printer || deepin-printer
  • GtkLP — CUPS の GTK インターフェイス。
https://gtklp.sirtobi.com/index.shtml || gtklpAUR
  • print-manager — 印刷ジョブとプリンターの管理ツール (KDE)。
https://invent.kde.org/utilities/print-manager || print-manager
  • system-config-printer — GTK プリンタ設定ツールと状態アプレット。
https://github.com/OpenPrinting/system-config-printer || system-config-printer

設定

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

パーミッション

グループ

プリンタの管理権限を持つユーザグループ/etc/cups/cups-files.conf 内の SystemGroup で定義されています。デフォルトでは、sys グループ、root グループ、そして wheel グループが使用されています。

CUPS のヘルパプログラムは、cups ユーザとグループとして実行されます。これにより、ヘルパプログラムがプリンタデバイスにアクセスしたり、/etc/cups/ 内の設定ファイル (cups グループによって所有されています) を読み込んだりすることができます。

ノート: cups 2.2.6-2 より前では、lp グループが代わりに使用されていました。アップグレード後、/etc/cups 内のファイルは、/etc/cups/cups-files.conf 内で設定されている cups グループ、User 209、そして Group 209 によって所有されるはずです。

PolicyKit による管理者認証を許可する

PolicyKit を設定することで、ユーザは管理者パスワードを入力せずに GUI を使ってプリンタを設定できるようになります。

ノート: system-config-printer を使用する場合、system-config-printer に PolicyKit を使用させるために 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 は、libpaper サポートありでビルドされており、libpaper はデフォルトでレター用紙サイズ (lpoptions では PageSize と呼ばれています) を使用します。印刷キューを追加するたびに用紙サイズを変更する手間を省くために、/etc/papersize編集してシステムのデフォルト用紙サイズを設定することができます。paper(1) を参照してください。

アーカイブ PDF/A

以下は、互換性の高い形式で PDF ファイルを保存する方法です (通常、これらは Archival PDF や PDF/A、PDFA、ISO 19005 と呼ばれます)。

現在、オプションはありません。なので、cups によって使用される、gs を呼び出すコマンドに追加する必要があります。

この記事またはセクションの正確性には問題があります。
理由: /etc/cups/cups.confcups パッケージに存在しません。なので、以下の設定例のコメントアウトされているデフォルト引数付きの GSCall オプションは存在しません。 (議論: トーク:CUPS#)
/etc/cups/cups.conf
# GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER  -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s

# 上記は GSCall を呼び出す際のデフォルト引数です。-dNOPAUSE の前に -dPDFA を追加し、上記をアンコメントすると (デフォルトの設定が変わっているかもしれないので、以下の行を丸々コピペしないでください。あなたのシステム上のデフォルトを使用してください):

GSCall %s -q -dCompatibilityLevel=%s -dPDFA -dNOPAUSE -dBATCH -dSAFER  -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s

ログファイル

デフォルトでは、全てのログは /var/log/cups/ 内のファイルへ送られます。

ログレベルは /etc/cups/cupsd.conf で変更できます。cupsd.conf ドキュメントを参照してください。

/etc/cups/cups-files.conf 内の AccessLog ディレクティブ、ErrorLog ディレクティブ、そして PageLog ディレクティブの値を syslog に変更することで、CUPS にログを代わりに systemd journal へ記録させることができます。元の提案された変更に関する情報は Fedora:Changes/CupsJournalLogging を参照してください。

cups-browsed

この記事またはセクションは情報が古くなっています。
理由: DNS-SD で広告されたプリンタを発見するために cups-browsed.service は必要ありません。これは cups.service によって行われます。cups-browsed.service は、LDAP サーバや、レガシーな CUPS プロトコル (CUPS サーバ ≤ 1.5) を使用するサーバでプリンタを発見する時にだけ必要になります。 (Discuss)

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

ノート:
  • ネットワークプリンタの検索によってコンピュータの起動時間が大幅に長くなってしまうことがあります
  • cups-browsed.service は、プリンタがネットワークに現れたり消えたりしたときに、そのプリンタを動的に追加したり削除したりするときにだけ必要になります。単に DNS-SD/mDNS 対応のネットワークプリンタを CUPS に追加したい場合は、必要ありません。

印刷サーバとリモート管理

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

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

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

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

リモートの CUPS サーバーを使うには、CUPS_SERVER 環境変数printerserver.mydomain:port に設定してください。例えば、単一の Firefox インスタンスにおいて別の印刷サーバを使用した場合は (printserver.mydomain:port の部分は、あなたの印刷サーバの名前/ポートに置き換えてください):

$ CUPS_SERVER=printserver.mydomain:port firefox

この設定を永続化するには、設定ファイル /etc/cups/client.conf を作成し、それにリモート CUPS サーバーのホスト名を追加します:

ServerName server

カスタムポートを指定することもできます:

ServerName server:port

詳細は、[4] を参照してください。

トラブルシューティング

CUPS/トラブルシューティングCUPS/プリンター別の問題 を見てください。

参照

翻訳ステータス: このページは en:CUPS の翻訳バージョンです。最後の翻訳日は 2023-11-02 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。