「CUPS」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「[[zh-TW:」を「[[zh-hant:」に置換) |
(同期) |
||
(6人の利用者による、間の25版が非表示) | |||
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]] |
||
− | [[tr:CUPS]] |
||
[[zh-hans:CUPS]] |
[[zh-hans:CUPS]] |
||
− | [[zh-hant:CUPS]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|CUPS/プリンター共有}} |
{{Related|CUPS/プリンター共有}} |
||
20行目: | 14行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
− | [https:// |
+ | [https://openprinting.github.io/cups/ CUPS] は、Linux® や他の Unix® ライクなオペレーティングシステムのための標準ベースのオープンソースな印刷システムです。OpenPrinting によって開発されています。 |
+ | |||
+ | Arch Linux では、[https://www.cups.org/ Apple CUPS フォーク]ではなく、[https://openprinting.github.io/cups/ OpenPrinting CUPS フォーク]がパッケージングされています。 |
||
== インストール == |
== インストール == |
||
26行目: | 22行目: | ||
{{Pkg|cups}} パッケージを[[インストール]]してください。 |
{{Pkg|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/$USER}} に保存されます。作成場所は {{ic|/etc/cups/cups-pdf.conf}} で変更できます。 |
||
+ | 任意で、PDF ドキュメントに"印刷"したい場合は、{{Pkg|cups-pdf}} パッケージを[[インストール]]してください。デフォルトでは、PDF ファイルは {{ic|/var/spool/cups-pdf/''username''/}} に保存されます。保存場所は {{ic|/etc/cups/cups-pdf.conf}} で変更することができます。 |
||
− | インストールしたら {{ic|org.cups.cupsd.service}} を[[起動]]・[[有効化]]してください。 |
||
+ | |||
+ | そして、{{ic|cups.service}} を[[有効化]]し、[[起動]]してください。または、[[ソケットアクティベーション]]を使用することで、このサービスがプログラムによって必要とされる場合にのみ CUPS を起動させることもできます。 |
||
+ | |||
+ | === 印刷の流れ === |
||
+ | |||
+ | 関連する問題を解決したい場合は、CUPS がどう機能するかを知っておくことが重要です: |
||
+ | |||
+ | # '印刷' が選択された際、アプリケーションは [[Wikipedia:ja:PDF|PDF]] ファイルを CUPS に送信します (アプリケーションが他の形式を送信した場合、それらはまず PDF に変換されます)。 |
||
+ | # CUPS はプリンタの PPD ファイル (プリンタ記述ファイル) を参照し、PDF ファイルをプリンタの理解できる言語 (PJL、PCL、ビットマップ、ネイティブな PDF など) へ変換するためにどのようなフィルタを使用する必要があるかを調べます。 |
||
+ | # フィルタが PDF ファイルをプリンタの理解できる形式へ変換します。 |
||
+ | # 最後に、そのデータがバックエンドへ送られます。例えば、プリンタが USB ポートに接続されている場合、USB バックエンドが使用されます。 |
||
== 接続インターフェイス == |
== 接続インターフェイス == |
||
− | 以下には様々なインターフェイスごとにプリンターを認識させる手順を載せています。 |
||
+ | 様々なインターフェイスにおける、プリンタを認識させるための追加の手順を以下に載せています。 |
||
− | {{Note|CUPS ヘルパープログラムは {{ic|lp}} グループと {{ic|daemon}} ユーザーを使って実行されます。これによってヘルパープログラムからプリンターデバイスにアクセスできるようになり {{ic|lp}} グループに属する {{ic|/etc/cups/}} の設定ファイルを読み込めるようになります。ただし、パラレルポートを使用するプリンター以外のデバイスと衝突する可能性があります: |
||
− | * {{ic|lp}} グループにユーザーを追加することで CUPS ファイルを読み込むことを許可できます。 |
||
− | * CUPS ヘルパーがパラレルポートを使用するプリンター以外のデバイスを使用する権限を得てしまう可能性があります。 |
||
− | 必要であれば、[[Udev]] ルールを使用してプリンター以外のパラレルポートデバイスには別のグループを割り当ててください ({{Bug|50009}})。CUPS が使用するグループとユーザーは変えられますが、手動でファイルのパーミッションを修正する必要があります。}} |
||
=== USB === |
=== USB === |
||
+ | |||
− | USB プリンターが認識されているかどうか確認するには: |
||
+ | USB プリンタが認識されているかどうか確認するには、まず {{Pkg|usbutils}} パッケージがインストールされていることを確認し、以下を実行してください: |
||
+ | |||
{{hc|$ lsusb| |
{{hc|$ lsusb| |
||
(...) |
(...) |
||
46行目: | 51行目: | ||
=== パラレルポート === |
=== パラレルポート === |
||
− | パラレルポートプリンターを使うには {{ic|lp}}, {{ic|parport}}, {{ic|parport_pc}} [[カーネルモジュール]]が必要です。 |
||
+ | パラレルポートプリンターを使うには、[[カーネルモジュール]] {{ic|lp}}、{{ic|parport}}、そして {{ic|parport_pc}} が必要です。 |
||
− | {{hc|$ dmesg {{!}} grep -i parport| |
||
+ | |||
− | parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series |
||
+ | {{hc|# dmesg {{!}} grep -i parport| |
||
− | lp0: using parport0 (polling) |
||
+ | parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series |
||
+ | lp0: using parport0 (polling) |
||
}} |
}} |
||
=== ネットワーク === |
=== ネットワーク === |
||
− | [[Avahi]] ホストネームを使ってネットワークプリンターを接続するには、[[Avahi#ホスト名の解決|.local ホストネーム解決]]をセットアップして {{ic|org.cups.cupsd.service}} を[[systemd#ユニットを使う|再起動]]してください。 |
||
+ | ==== 既知の場所のプリンタを追加する ==== |
||
− | [[Samba]] プロトコルを使ってネットワークプリンターに接続する場合や、Windows クライアント用のプリンターサーバーを使う場合、{{Pkg|samba}} パッケージをインストールしてください。 |
||
+ | |||
+ | プリンタのアドレスがわかっている場合 (アドレスは、プリンタの画面に表示されたり、他の何らかの方法でネットワークをスキャンしたりなどして得られます)、プリンタを動的に発見する機能 (DNS-SD/mDNS) に頼る必要はありません。CUPS のキューを直接追加することで、プリンタを使用することができます。''lpadmin'' でキューを追加する歩法については、次の章かドキュメント [https://github.com/OpenPrinting/cups/?tab=readme-ov-file#setting-up-printers Setting up printers] で見られます。 |
||
+ | |||
+ | ==== プリンタを発見する ==== |
||
+ | |||
+ | DNS-SD/mDNS を使ってプリンタを発見、使用、または共有するには、[[Avahi]] を使って [[Avahi#ホスト名の解決|.local ホストネーム解決]]をセットアップして、{{ic|cups.service}} を[[再起動]]してください。 |
||
+ | |||
+ | {{Note|DNS-SD は、[[Avahi]] を使用している時にのみ、サポートされています。CUPS は [[systemd-resolved]] を DNS-SD のために使用することをサポートしていません。[https://github.com/apple/cups/issues/5452 CUPS issue 5452] を参照してください。しかし、ドメイン解決に [[systemd-resolved]] を使い ([[Avahi]] とは違ってブラウザに対しても動作します)、{{ic|avahi-daemon.service}} は SD (Service Discovery) に使うといったこともできます。}} |
||
+ | |||
+ | [[Samba]] を使ってネットワークプリンターを共有する場合や、例えばシステムを Windows クライアント用のプリンターサーバーにする場合、{{Pkg|samba}} パッケージが必要です。 |
||
== プリンタードライバー == |
== プリンタードライバー == |
||
− | プリンターのドライバーは以下のソースのどこかから入手することができます。動作するのが確認されているドライバーのリストは [[CUPS/プリンター別の問題]]を見てください。 |
||
+ | {{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]] も参照してください。}} |
||
− | プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターでは [https://www.cups.org/doc/man-filter.html フィルター] も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [https://www.cups.org/doc/postscript-driver.html] に詳しく書かれています。 |
||
+ | 最近 (2010年以降) のプリンタのほとんどは、AirPrint や IPP_Everywhere を実装しているのでドライバレスでの使用をサポートしています (以下を参照)。 |
||
− | [http://www.openprinting.org/printers OpenPrinting Printer List] は多数のプリンターの推奨ドライバーを教えてくれます。個別のプリンターの PPD ファイルも提供されていますが、大抵の場合は foomatic や推奨されているドライバーパッケージから手に入ります。 |
||
+ | |||
+ | プリンターのドライバーは以下のソースのどこかから入手することができます。動作するのが確認されているドライバーの不完全なリストは [[CUPS/プリンター別の問題]] を見てください。 |
||
+ | |||
+ | プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターではいくつかの[https://www.cups.org/doc/man-filter.html フィルター]も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [https://www.cups.org/doc/postscript-driver.html] に詳しく書かれています。 |
||
+ | |||
+ | [https://www.openprinting.org/printers OpenPrinting Printer List] は多数のプリンターの推奨ドライバーを教えてくれます。個別のプリンターの PPD ファイルも提供されていますが、大抵の場合は [[#Foomatic|foomatic]] や推奨されているドライバーパッケージから手に入ります。 |
||
PPD ファイルが CUPS に供給されると、CUPS サーバーは PPD ファイルを再生成して {{ic|/etc/cups/ppd/}} に保存します。 |
PPD ファイルが CUPS に供給されると、CUPS サーバーは PPD ファイルを再生成して {{ic|/etc/cups/ppd/}} に保存します。 |
||
+ | [[PKGBUILD]] を作成する前に PPD ファイルが動作することを確認するために、PPD ファイルを {{ic|/usr/share/cups/''model''}} に手動で追加することができます。cups サービスを再起動したあとに、そのドライバが利用可能になるはずです。 |
||
− | === CUPS === |
||
+ | |||
− | CUPS は何も設定をしなくても動作する PPD やフィルターのバイナリを少数ながらデフォルトで用意しています。 |
||
+ | === AirPrint と IPP Everywhere === |
||
+ | |||
+ | CUPS には [[Wikipedia:ja:AirPrint|AirPrint]] と [https://www.pwg.org/ipp/everywhere.html IPP Everywhere] プリンタのサポートが含まれています。そのようなプリンタは自動的に発見されるはずです。 |
||
+ | |||
+ | === OpenPrinting CUPS フィルタ === |
||
+ | |||
+ | Linux Foundation の OpenPrinting ワークグループは、[https://wiki.linuxfoundation.org/openprinting/cups-filters cups-filters] を提供しています。これらは、かつて CUPS の一部だったがプロジェクトから外されたバックエンド、フィルタ、そしてその他のバイナリです。これらは、{{Pkg|cups}} の依存関係である {{Pkg|cups-filters}} パッケージで利用できます。 |
||
+ | |||
+ | 非 PDF プリンタは、{{Pkg|ghostscript}} をインストールする必要があります。PostScript プリンタは、{{Pkg|gsfonts}} も必要である場合があります。 |
||
=== Foomatic === |
=== 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] を見てください。 |
||
+ | 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] を参照してください。 |
||
− | foomatic を使用するには、{{pkg|foomatic-db-engine}} と {{pkg|foomatic-db-ppds}}, {{pkg|foomatic-db-nonfree-ppds}}, {{pkg|foomatic-db-gutenprint-ppds}} の最低でもどれかひとつをインストールします。 |
||
+ | foomatic を使うには、{{Pkg|foomatic-db-engine}} と、以下から最低でも1つをインストールしてください: |
||
− | foomatic の PPD は別途でフィルターを必要とすることがあり、{{pkg|gutenprint}} や {{pkg|ghostscript}} などが挙げられます (例えば {{aur|min12xxw}})。{{pkg|ghostscript}} が必要な場合、{{pkg|gsfonts}} もおそらく必須です。 |
||
+ | * {{Pkg|foomatic-db}} - foomatic-db-engine によって PPD ファイルを生成するために使用される XML ファイルのコレクション。 |
||
− | === メーカー別のドライバー === |
||
+ | * {{Pkg|foomatic-db-ppds}} — ビルド済み PPD ファイル群。 |
||
− | 様々なプリンターメーカーが独自の Linux ドライバーを提供しています。中には Arch の公式リポジトリや [[AUR]] からインストールできるドライバーもあります。 |
||
+ | * {{Pkg|foomatic-db-nonfree}} — プリンタのメーカーからフリーでないライセンスの XML ファイルのコレクション。foomatic-db-engine によって PPD ファイルを生成するために使用されます。 |
||
+ | * {{Pkg|foomatic-db-nonfree-ppds}} — フリーでないライセンスのビルド済み PPD ファイル群。 |
||
+ | foomatic PPD は追加のフィルタを必要とする場合があります (例: {{AUR|min12xxw}})。 |
||
− | 一部のドライバーについては [[CUPS/プリンター別の問題]]に詳しい説明があります。 |
||
+ | |||
+ | === Gutenprint === |
||
+ | |||
+ | [https://gimp-print.sourceforge.net/ Gutenprint プロジェクト]は、CUPS と [[GIMP]] で使うための、Canon、Epson、Lexmark、Sony、Olympus、Brother、HP、Ricoh、PCL、そして一部の汎用プリンタ用のドライバを提供しています。 |
||
+ | |||
+ | {{Pkg|gutenprint}} と {{Pkg|foomatic-db-gutenprint-ppds}} をインストールしてください。 |
||
+ | |||
+ | {{Note|Gutenprint のパッケージが更新された際、{{ic|cups-genppdupdate}} を root として実行し CUPS を再起動するまで、Gutenprint ドライバを使用するプリンタは動作を停止します。''cups-genppdupdate'' は、構成されたプリンタの PPD ファイルを更新します。詳細は {{man|8|cups-genppdupdate}} を参照してください。}} |
||
+ | |||
+ | === メーカー固有のドライバ === |
||
+ | |||
+ | 多くのプリンタメーカーは独自の Linux ドライバを配布しています。中には Arch の公式リポジトリや [[AUR]] から入手できるものもあります。 |
||
+ | |||
+ | これらのドライバのうちいくつかは [[CUPS/プリンター別の問題]] で詳しく説明されています。 |
||
== プリンター URI == |
== プリンター URI == |
||
+ | 以下は、必要に応じて手動で URI を生成する追加の手順をリストアップしています。一部のプリンタとドライバは、[[CUPS/プリンター別の問題]] で説明されている通り、特殊な URI を必要とする場合があります。 |
||
− | 以下では手動での URI の生成について説明しています。 |
||
=== USB === |
=== USB === |
||
− | CUPS は USB プリンタ |
+ | CUPS は USB プリンタの URI を自動的に生成できるはずです (例: {{ic|1=usb://HP/DESKJET%20940C?serial=CN16E6C364BH}})。 |
− | 生成されない場合、[[CUPS/トラブルシューティング#USB プリンター]]を |
+ | 生成されない場合、[[CUPS/トラブルシューティング#USB プリンター]] でトラブルシューティングの手順を確認してください。 |
=== パラレルポート === |
=== パラレルポート === |
||
− | URI は {{ic|parallel:''device''}} という形式 |
+ | URI は {{ic|parallel:''device''}} という形式である必要があります。例えば、プリンターが {{ic|/dev/lp0}} で接続されている場合、{{ic|parallel:/dev/lp0}} を使ってください。USB からパラレルポートに変換するアダプタを使っている場合、プリンター URI は {{ic|parallel:/dev/usb/lp0}} を使ってください。 |
=== ネットワーク === |
=== ネットワーク === |
||
100行目: | 144行目: | ||
[[#ネットワーク]]に書かれているように [[Avahi]] を設定することで、CUPS はプリンター URI を探知します。{{ic|avahi-discover}} を使ってプリンターの名前やアドレスを確認することもできます (例: {{ic|BRN30055C6B4C7A.local/10.10.0.155:631}})。 |
[[#ネットワーク]]に書かれているように [[Avahi]] を設定することで、CUPS はプリンター URI を探知します。{{ic|avahi-discover}} を使ってプリンターの名前やアドレスを確認することもできます (例: {{ic|BRN30055C6B4C7A.local/10.10.0.155:631}})。 |
||
− | [[Avahi]] を使わずに URI を手動で生成することも可能です。ネットワークプリンターで利用可能な URI スキーマのリストは |
+ | [[Avahi]] を使わずに URI を手動で生成することも可能です。ネットワークプリンターで利用可能な URI スキーマのリストは [https://www.cups.org/doc/network.html#PROTOCOLS CUPS のドキュメント]を見てください。プリンターによって URI には細かい違いがあるので、プリンターのマニュアルや [[CUPS/プリンター別の問題]]もチェックしてください。 |
+ | [[SMB]] 共有におけるプリンタの URI は、{{man|8|smbspool}} man ページで説明されています。 |
||
− | リモートの CUPS 印刷サーバーは {{ic|ipp://''hostname'':631/printers/''queue_name''}} という形式の URI でアクセスできます。リモートの印刷サーバーをセットアップする方法は [[CUPS/プリンター共有#GNU/Linux システム間]]を見てください。 |
||
+ | |||
+ | {{Note|プリンタ URI 内の特殊文字は適切に URL エンコードする必要があります。さもないと、Windows プリンタ名やユーザのパスワードに空白が存在する場合、CUPS は {{ic|lpadmin: Bad device-uri}} エラーを投げます。 |
||
+ | 例えば、{{ic|smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6}} は {{ic|smb://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 印刷サーバーは {{ic|ipp://''hostname'':631/printers/''queue_name''}} という形式の URI でアクセスできます。リモートの印刷サーバーをセットアップする方法は [[CUPS/プリンター共有#GNU/Linux システム間]] を見てください。 |
||
他の問題については [[CUPS/トラブルシューティング#ネットワークの問題]]を見てください。 |
他の問題については [[CUPS/トラブルシューティング#ネットワークの問題]]を見てください。 |
||
− | {{Warning|1=サーバ |
+ | {{Warning|1=サーバとクライアントの両方をプリンタフィルタで設定することは避けてください。クライアントかサーバのどちらかの印刷キューは 'raw' であるべきです。こうすることで、フィルタを通して印刷ジョブが2回送信されることを防ぐことができます (2回送信されてしまうと、共有されたプリンタがローカルでは動作するが、リモートマシンでは印刷に失敗してしまうなどの問題を引き起こす可能性があります [https://bbs.archlinux.org/viewtopic.php?pid=1589908#p1589908])。印刷キューを 'raw' に設定する例は [[#lp*]] を見てください。}} |
== 使用方法 == |
== 使用方法 == |
||
− | CUPS は |
+ | CUPS は ''lp*'' ツールと ''cups*'' ツールを使って完全に制御できます。または、[[#ウェブインターフェイス]] や [[#GUI アプリケーション]] を使うこともできます。 |
* ''queue'' はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。 |
* ''queue'' はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。 |
||
118行目: | 173行目: | ||
=== CLI ツール === |
=== CLI ツール === |
||
− | [http://localhost:631/help/options.html |
+ | コマンドラインツールに関するヒントは[http://localhost:631/help/options.html ローカルの CUPS ドキュメント]を参照してください。 |
{{Note|コマンドラインのスイッチはまとめて指定することができません。}} |
{{Note|コマンドラインのスイッチはまとめて指定することができません。}} |
||
+ | SNMP を使って URI を見つけるには: |
||
− | ;デバイスを確認 |
||
− | # lpinfo -v # |
||
− | $ /usr/lib/cups/backend/snmp ''ip_address'' # Use SNMP to find a URI |
||
+ | $ /usr/lib/cups/backend/snmp ''ip_address'' |
||
− | ;ドライバーを確認 |
||
− | $ lpinfo -m |
||
+ | ==== lp* ==== |
||
− | ;新しい印刷キューを追加 |
||
− | # lpadmin -p ''queue_name'' -E -v ''uri'' -m ''model'' |
||
+ | ''lpinfo'' コマンドは、{{ic|-v}} オプションを付けるとシステムに接続されているプリンタの URI を一覧表示し、{{ic|-m}} オプションを付けるとシステム上にインストールされている利用可能な全てのドライバ (CUPS 用語では "モデル") を一覧表示します。 |
||
− | ''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 SHARED_PRINTER -m raw # Raw queue; no PPD or filter |
||
+ | ''lpadmin'' ユーティリティは、{{ic|-p ''queue_name''}} オプションを付けると新しいキューを作成します。{{ic|-p}} に {{ic|-E}} を加えると、プリンタを有効化し、ジョブを受け入れるようになります。{{ic|-v}} フラグはデバイスの URI を指定します。{{ic|-m}} フラグは、使用するドライバ (CUPS 用語では "モデル") か PPD ファイルを指定します。 |
||
− | ;デフォルトプリンターを設定 |
||
− | $ lpoptions -d ''queue_name'' |
||
+ | {{ic|-x}} フラグを使うことでプリンタを取り除くこともできます (先に [[#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 |
||
+ | # lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz |
||
− | ;状態を確認 |
||
− | $ lpstat -s |
||
− | $ lpstat -p ''queue_name'' |
||
+ | ドライバレスのキュー (Apple AirPrint か IPP Everywhere) の場合は: |
||
− | ;プリンターを無効化 |
||
+ | |||
− | # cupsdisable ''queue_name'' |
||
+ | # 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 |
||
+ | |||
+ | {{Note| |
||
+ | * PPD を指定する場合、フルパスではなくファイル名だけを指定してください (例えば、{{ic|/usr/share/ppd/cupsfilters/pxlmono.ppd}} ではなく {{ic|pxlmono.ppd}})。あるいは、{{ic|-P}} コマンドラインスイッチを使うことでフルパスを使用することもできます。 |
||
+ | * 2021年現在、最近のプリンタの多くはドライバレスの印刷セットアップをサポートしており、{{ic|-m everywhere}} を指定すると (上記の例では2番目)、プリンタが定義され、ネットワーク上のプリンタにクエリすることで ''.ppd'' ファイルが {{ic|/etc/cups/ppd/}} 内に作成されます。 |
||
+ | }} |
||
+ | |||
+ | ''lpq'' ユーティリティはキューのチェックを行います。全てのキューをチェックするには {{ic|-a}} フラグを追加してください。 |
||
+ | |||
+ | ''lprm'' ユーティリティはキューをクリアします。デフォルトの最後のキューではなく、全てのエントリを削除するには {{ic|-}} を追加してください。 |
||
+ | |||
+ | ''lpr'' ユーティリティは印刷を行います。ファイルを ''N'' 回印刷するには {{ic|-# ''N''}} を使用してください。ヘッダを追加するには {{ic|-p}} フラグを使用してください。 |
||
+ | |||
+ | ''lpr'' を使って印刷テストを行う例: |
||
+ | |||
+ | $ lpr /usr/share/cups/data/testprint |
||
+ | $ echo 'Hello, world!' | lpr -p |
||
+ | |||
+ | ''lpstat'' ユーティリティは、{{ic|-s}} フラグを付けて使用すると、ステータスをチェックします。{{ic|-p}} フラグを付けると、チェックするキューを指定できます。 |
||
+ | |||
+ | ''lpoptions'' ユーティリティは、上記の ''lpadmin'' と同じ {{ic|-p ''queue_name''}} フラグを使用します。{{ic|-l}} フラグを付けると、オプションを一覧表示します。{{ic|-d}} フラグは、デフォルトのプリンタを引数 {{ic|''queue_name''}} に設定します。{{ic|-o}} フラグは、オプションに値を設定します: |
||
+ | |||
+ | $ lpoptions -p HP_DESKJET_940C -o PageSize=A4 |
||
+ | $ lpoptions -p HP_DESKJET_940C -o cupsIPPSupplies=true -o Duplex=DuplexNoTumble |
||
+ | |||
+ | ==== cups* ==== |
||
+ | ユーティリティ ''cupsaccept''、''cupsdisable''、''cupsenable''、そして ''cupsreject'' は、その名の通りの動作を行います。それぞれの動作は次のとおりです:ジョブを受け入れるようにプリンタを設定する、プリンタを無効化する、プリンタをアクティブ化する、全ての受信タスクを拒否するようにプリンタを設定する。 |
||
− | ;プリンターを有効化 |
||
− | # cupsenable ''queue_name'' |
||
+ | 例として、プリンタをクリーンに取り除いてみましょう: |
||
− | ;ジョブを受け取るようにプリンターを設定 |
||
− | # cupsaccept ''queue_name'' |
||
− | ;プリンターの削除 |
||
− | まず印刷を要求するエントリを全て拒否するように設定してください: |
||
# cupsreject ''queue_name'' |
# cupsreject ''queue_name'' |
||
− | 次にプリンターを無効化してください: |
||
# cupsdisable ''queue_name'' |
# cupsdisable ''queue_name'' |
||
− | 最後に削除してください: |
||
# lpadmin -x ''queue_name'' |
# lpadmin -x ''queue_name'' |
||
+ | ==== ink ==== |
||
− | ;ファイルを印刷 |
||
− | $ 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. |
||
+ | インクレベルを見るには {{AUR|ink}} を[[インストール]]してください。 |
||
− | ;印刷キューを確認 |
||
− | $ lpq |
||
− | $ lpq -a # on all queues |
||
+ | {{Note|[http://libinklevel.sourceforge.net/index.html#supported サポートされているプリンタのリスト]を参照してください。}} |
||
− | ;印刷キューを消去 |
||
+ | |||
− | # lprm # remove last entry only |
||
+ | ユーザを {{ic|lp}} [[ユーザグループ]]に追加し、一旦ログアウトし、再度ログインしてください。 |
||
− | # lprm - # remove all entries |
||
+ | |||
+ | 詳細を見るには、オプションを付けずに {{ic|ink}} を実行してください。 |
||
=== ウェブインターフェイス === |
=== ウェブインターフェイス === |
||
− | CUPS サーバ |
+ | CUPS サーバは、ウェブインターフェイス (http://localhost:631/ で利用可能) から完全に管理することができます。 |
+ | |||
+ | {{Note|CUPS への HTTPS 接続を使用する場合、初回アクセス時はインターフェイスが現れるまでに非常に長い時間がかかる''場合があります''。これは、初回リクエスト時に SSL 証明書の生成がトリガーされ、これに時間が掛かる可能性があるからです。}} |
||
+ | ウェブインターフェイスから管理を行うには、認証が必要です。[[#パーミッション]] を参照してください。 |
||
− | {{Note|HTTPS 接続で CUPS を使用する場合、初めてアクセスしたときにインターフェイスが表示されるまで長い時間がかかります。初期設定で行われる SSL 証明書の生成に時間がかかるためです。}} |
||
− | ; |
+ | ;キューを追加する |
− | '''Administration''' ページを開いてください。 |
+ | '''Administration''' ('''管理''') ページを開いてください。 |
− | ;既存のキューを編集 |
+ | ;既存のキューを編集する |
− | '''Printers''' ページを開 |
+ | '''Printers''' ('''プリンター''') ページを開き、編集したいキューを選択してください。 |
− | ;キューをテスト |
+ | ;キューをテストする |
− | '''Printers''' ページを開 |
+ | '''Printers''' ('''プリンター''') ページを開き、キューを選択してください。 |
=== GUI アプリケーション === |
=== GUI アプリケーション === |
||
− | CUPS を管理するのに十分な権限 |
+ | CUPS を管理するのに十分な権限がユーザに無い場合、アプリケーションは起動時に root のパスワードを要求します。ユーザに root アクセスを要さない管理権限を与える方法は、[[#設定]] を見てください。 |
− | * {{App| |
+ | * {{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}}}} |
||
− | * {{App|system-config-printer|CUPS プリンター設定ツール・状態アプレット ([[GNOME]] など)。|http://cyberelk.net/tim/software/system-config-printer/|{{Pkg|system-config-printer}}}} |
||
− | * {{App| |
+ | * {{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}}}} |
||
== 設定 == |
== 設定 == |
||
− | CUPS サーバ |
+ | CUPS サーバの設定は {{ic|/etc/cups/cupsd.conf}} と {{ic|/etc/cups/cups-files.conf}} にあります ({{man|5|cupsd.conf}} と {{man|5|cups-files.conf}} を参照)。どちらかのファイルを編集したら、変更を適用するために {{ic|cups.service}} を[[再起動]]してください。ほとんどのユーザにとって、デフォルトの設定で問題ありません。 |
+ | === パーミッション === |
||
− | プリンターの管理者権限を持つ[[グループ]]は {{ic|/etc/cups/cups-files.conf}} の {{ic|SystemGroup}} で定義されます。デフォルトでは {{ic|sys}} グループが使われます。 |
||
+ | ==== グループ ==== |
||
− | {{pkg|cups}} は {{pkg|libpaper}} のサポートを有効にしてビルドされており、libpaper はデフォルトの用紙サイズとして '''Letter''' を使います。印刷キューを追加するたびに用紙サイズを変更しなくてもいいように、{{ic|/etc/papersize}} を編集してデフォルトの用紙サイズを設定してください。詳しくは {{man|5|papersize}} を参照。 |
||
+ | プリンタの管理権限を持つ[[ユーザグループ]]は {{ic|/etc/cups/cups-files.conf}} 内の {{ic|SystemGroup}} で定義されています。デフォルトでは、{{ic|sys}} グループ、{{ic|root}} グループ、そして {{ic|wheel}} グループが使用されています。 |
||
− | デフォルトでは、全てのログは {{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] を見てください。 |
||
+ | |||
+ | CUPS のヘルパプログラムは、{{ic|cups}} ユーザとグループとして実行されます。これにより、ヘルパプログラムがプリンタデバイスにアクセスしたり、{{ic|/etc/cups/}} 内の設定ファイル ({{ic|cups}} グループによって所有されています) を読み込んだりすることができます。 |
||
+ | |||
+ | {{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}} によって所有されるはずです。}} |
||
+ | |||
+ | ==== PolicyKit による管理者認証を許可する ==== |
||
+ | |||
+ | [[PolicyKit]] を設定することで、ユーザは管理者パスワードを入力せずに GUI を使ってプリンタを設定できるようになります。 |
||
+ | |||
+ | {{Note|system-config-printer を使用する場合、system-config-printer に PolicyKit を使用させるために {{Pkg|cups-pk-helper}} をインストールする必要があります。}} |
||
+ | |||
+ | 以下は、wheel [[ユーザグループ]]のメンバーにパスワード無しでのプリンタ管理を許可する例です: |
||
+ | |||
+ | {{hc|/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules|2= |
||
+ | polkit.addRule(function(action, subject) { |
||
+ | if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" && |
||
+ | subject.isInGroup("wheel")){ |
||
+ | return polkit.Result.YES; |
||
+ | } |
||
+ | }); |
||
+ | }} |
||
+ | |||
+ | === デフォルトの用紙サイズ === |
||
+ | |||
+ | {{Pkg|cups}} は、{{Pkg|libpaper}} サポートありでビルドされており、libpaper はデフォルトで[[Wikipedia:ja:レターサイズ|レター]]用紙サイズ ({{ic|lpoptions}} では {{ic|PageSize}} と呼ばれています) を使用します。印刷キューを追加するたびに用紙サイズを変更する手間を省くために、{{ic|/etc/papersize}} を[[テキスト編集|編集]]してシステムのデフォルト用紙サイズを設定することができます。{{man|1|paper}} を参照してください。 |
||
+ | |||
+ | === アーカイブ PDF/A === |
||
+ | |||
+ | 以下は、互換性の高い形式で PDF ファイルを保存する方法です (通常、これらは Archival PDF や PDF/A、PDFA、ISO 19005 と呼ばれます)。 |
||
+ | |||
+ | 現在、オプションはありません。なので、cups によって使用される、''gs'' を呼び出すコマンドに追加する必要があります。 |
||
+ | |||
+ | {{Accuracy|{{ic|/etc/cups/cups.conf}} は {{pkg|cups}} パッケージに存在しません。なので、以下の設定例のコメントアウトされているデフォルト引数付きの {{ic|GSCall}} オプションは存在しません。}} |
||
+ | |||
+ | {{hc|/etc/cups/cups.conf|2= |
||
+ | # 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 |
||
+ | }} |
||
+ | |||
+ | === ログファイル === |
||
+ | |||
+ | デフォルトでは、全てのログは {{ic|/var/log/cups/}} 内のファイルへ送られます。 |
||
+ | |||
+ | ログレベルは {{ic|/etc/cups/cupsd.conf}} で変更できます。[https://www.cups.org/doc/man-cupsd.conf.html cupsd.conf ドキュメント]を参照してください。 |
||
+ | |||
+ | {{ic|/etc/cups/cups-files.conf}} 内の {{ic|AccessLog}} ディレクティブ、{{ic|ErrorLog}} ディレクティブ、そして {{ic|PageLog}} ディレクティブの値を {{ic|syslog}} に変更することで、CUPS にログを代わりに [[systemd journal]] へ記録させることができます。元の提案された変更に関する情報は [[Fedora:Changes/CupsJournalLogging]] を参照してください。 |
||
=== cups-browsed === |
=== cups-browsed === |
||
+ | {{Out of date|DNS-SD で広告されたプリンタを発見するために {{ic|cups-browsed.service}} は必要ありません。これは {{ic|cups.service}} によって行われます。{{ic|cups-browsed.service}} は、LDAP サーバや、レガシーな CUPS プロトコル (CUPS サーバ ≤ 1.5) を使用するサーバでプリンタを発見する時にだけ必要になります。}} |
||
− | CUPS は [[Avahi]] を使ってネットワーク上の未知の共有プリンターを発見することができます。サーバーがどこにあるのかわからないくらい巨大な構成で有用です。この機能を使うには [[Avahi#ホスト名の解決|.local ホストネーム解決]]を設定して、{{ic|avahi-daemon.service}} と {{ic|cups-browsed.service}} の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、キューの作成が上手く行かない場合もあります。 |
||
+ | |||
+ | 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]] をサポートするプリンタなど、ドライバレスのプリンタは設定せずに動作するはずです。 |
||
+ | |||
+ | {{Note|1=<nowiki/> |
||
+ | * ネットワークプリンタの検索によって[https://bbs.archlinux.org/viewtopic.php?pid=1720219#p1720219 コンピュータの起動時間が大幅に長くなってしまうことがあります]。 |
||
+ | * {{ic|cups-browsed.service}} は、プリンタがネットワークに現れたり消えたりしたときに、そのプリンタを動的に追加したり削除したりするときにだけ必要になります。単に DNS-SD/mDNS 対応のネットワークプリンタを CUPS に追加したい場合は、必要ありません。 |
||
+ | }} |
||
− | === |
+ | === 印刷サーバとリモート管理 === |
− | [[CUPS/プリンター共有]]を見てください。 |
+ | [[CUPS/プリンター共有]] と [[CUPS/プリンター共有#リモート管理]] を見てください。 |
=== ローカルの CUPS サーバーを使わない === |
=== ローカルの CUPS サーバーを使わない === |
||
225行目: | 352行目: | ||
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。{{Pkg|libcups}} パッケージの[[インストール]]が必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに {{Pkg|cups}} パッケージのインストールを必要とします。 |
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]] |
+ | リモートの CUPS サーバーを使うには、{{ic|CUPS_SERVER}} [[環境変数]]を {{ic|printerserver.mydomain:port}} に設定してください。例えば、単一の [[Firefox]] インスタンスにおいて別の印刷サーバを使用した場合は ({{ic|printserver.mydomain:port}} の部分は、あなたの印刷サーバの名前/ポートに置き換えてください): |
$ CUPS_SERVER=printserver.mydomain:port firefox |
$ CUPS_SERVER=printserver.mydomain:port firefox |
||
+ | この設定を永続化するには、設定ファイル {{ic|/etc/cups/client.conf}} を作成し、それにリモート CUPS サーバーのホスト名を追加します: |
||
− | ==== client.conf ==== |
||
+ | ServerName server |
||
− | {{Note|1={{ic|/etc/cups/client.conf}} は [https://www.cups.org/doc/man-client.conf.html 非推奨] となって久しく、[https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/cups&id=41fefa22ac5189d726e0e35e2f87ad12fa2855f3 cups 2.2.0] で削除されました。}} |
||
+ | カスタムポートを指定することもできます: |
||
− | {{ic|/etc/cups/client.conf}} を編集して {{ic|ServerName}} ディレクティブを設定する古い方法: |
||
+ | ServerName server:port |
||
− | {{hc|/etc/cups/client.conf| |
||
− | # (Substitute printserver.mydomain with your print server name) |
||
− | ServerName printserver.mydomain |
||
− | }} |
||
+ | 詳細は、[https://www.cups.org/doc/sharing.html#AUTO_IPP] を参照してください。 |
||
− | リモート環境のプリンター設定はデフォルトで使用されます。 |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
− | [[CUPS/トラブルシューティング]]を見てください。 |
+ | [[CUPS/トラブルシューティング]] と [[CUPS/プリンター別の問題]] を見てください。 |
== 参照 == |
== 参照 == |
||
− | * [http://localhost:631/help CUPS |
+ | * [http://localhost:631/help 公式 CUPS ドキュメント] (''ローカルにインストールされています'') |
− | * [[Wikipedia:CUPS]] |
+ | * [[Wikipedia:ja:CUPS]] |
− | * [ |
+ | * [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://en.opensuse.org/Concepts_printing OpenSuSE Concepts printing guide - explains the full printing workflow] |
||
* [https://en.opensuse.org/SDB:CUPS_in_a_Nutshell OpenSuSE CUPS in a Nutshell - a quick CUPS overview] |
* [https://en.opensuse.org/SDB:CUPS_in_a_Nutshell OpenSuSE CUPS in a Nutshell - a quick CUPS overview] |
||
+ | * [[Gentoo:Printing]] |
||
− | * [https://wiki.gentoo.org/wiki/Printing Gentoo の印刷ガイド] |
||
+ | * [[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|2024-06-05|809831}} |
2024年6月5日 (水) 17:40時点における最新版
CUPS は、Linux® や他の Unix® ライクなオペレーティングシステムのための標準ベースのオープンソースな印刷システムです。OpenPrinting によって開発されています。
Arch Linux では、Apple CUPS フォークではなく、OpenPrinting CUPS フォークがパッケージングされています。
インストール
任意で、PDF ドキュメントに"印刷"したい場合は、cups-pdf パッケージをインストールしてください。デフォルトでは、PDF ファイルは /var/spool/cups-pdf/username/
に保存されます。保存場所は /etc/cups/cups-pdf.conf
で変更することができます。
そして、cups.service
を有効化し、起動してください。または、ソケットアクティベーションを使用することで、このサービスがプログラムによって必要とされる場合にのみ CUPS を起動させることもできます。
印刷の流れ
関連する問題を解決したい場合は、CUPS がどう機能するかを知っておくことが重要です:
- '印刷' が選択された際、アプリケーションは PDF ファイルを CUPS に送信します (アプリケーションが他の形式を送信した場合、それらはまず PDF に変換されます)。
- CUPS はプリンタの PPD ファイル (プリンタ記述ファイル) を参照し、PDF ファイルをプリンタの理解できる言語 (PJL、PCL、ビットマップ、ネイティブな PDF など) へ変換するためにどのようなフィルタを使用する必要があるかを調べます。
- フィルタが PDF ファイルをプリンタの理解できる形式へ変換します。
- 最後に、そのデータがバックエンドへ送られます。例えば、プリンタが USB ポートに接続されている場合、USB バックエンドが使用されます。
接続インターフェイス
様々なインターフェイスにおける、プリンタを認識させるための追加の手順を以下に載せています。
USB
USB プリンタが認識されているかどうか確認するには、まず usbutils パッケージがインストールされていることを確認し、以下を実行してください:
$ 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)
ネットワーク
既知の場所のプリンタを追加する
プリンタのアドレスがわかっている場合 (アドレスは、プリンタの画面に表示されたり、他の何らかの方法でネットワークをスキャンしたりなどして得られます)、プリンタを動的に発見する機能 (DNS-SD/mDNS) に頼る必要はありません。CUPS のキューを直接追加することで、プリンタを使用することができます。lpadmin でキューを追加する歩法については、次の章かドキュメント Setting up printers で見られます。
プリンタを発見する
DNS-SD/mDNS を使ってプリンタを発見、使用、または共有するには、Avahi を使って .local ホストネーム解決をセットアップして、cups.service
を再起動してください。
Samba を使ってネットワークプリンターを共有する場合や、例えばシステムを Windows クライアント用のプリンターサーバーにする場合、samba パッケージが必要です。
プリンタードライバー
最近 (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 には AirPrint と IPP 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、Brother、HP、Ricoh、PCL、そして一部の汎用プリンタ用のドライバを提供しています。
gutenprint と foomatic-db-gutenprint-ppds をインストールしてください。
メーカー固有のドライバ
多くのプリンタメーカーは独自の 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 ページで説明されています。
リモートの CUPS 印刷サーバーは ipp://hostname:631/printers/queue_name
という形式の URI でアクセスできます。リモートの印刷サーバーをセットアップする方法は CUPS/プリンター共有#GNU/Linux システム間 を見てください。
他の問題については CUPS/トラブルシューティング#ネットワークの問題を見てください。
使用方法
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
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*
ユーティリティ cupsaccept、cupsdisable、cupsenable、そして cupsreject は、その名の通りの動作を行います。それぞれの動作は次のとおりです:ジョブを受け入れるようにプリンタを設定する、プリンタを無効化する、プリンタをアクティブ化する、全ての受信タスクを拒否するようにプリンタを設定する。
例として、プリンタをクリーンに取り除いてみましょう:
# cupsreject queue_name # cupsdisable queue_name # lpadmin -x queue_name
ink
インクレベルを見るには inkAUR をインストールしてください。
ユーザを lp
ユーザグループに追加し、一旦ログアウトし、再度ログインしてください。
詳細を見るには、オプションを付けずに ink
を実行してください。
ウェブインターフェイス
CUPS サーバは、ウェブインターフェイス (http://localhost:631/ で利用可能) から完全に管理することができます。
ウェブインターフェイスから管理を行うには、認証が必要です。#パーミッション を参照してください。
- キューを追加する
Administration (管理) ページを開いてください。
- 既存のキューを編集する
Printers (プリンター) ページを開き、編集したいキューを選択してください。
- キューをテストする
Printers (プリンター) ページを開き、キューを選択してください。
GUI アプリケーション
CUPS を管理するのに十分な権限がユーザに無い場合、アプリケーションは起動時に root のパスワードを要求します。ユーザに root アクセスを要さない管理権限を与える方法は、#設定 を見てください。
- Deepin Print Manager — Deepin デスクトップのためのプリンタ設定インターフェイス。
- GtkLP — CUPS の GTK インターフェイス。
- print-manager — 印刷ジョブとプリンターの管理ツール (KDE)。
- system-config-printer — GTK プリンタ設定ツールと状態アプレット。
設定
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
グループによって所有されています) を読み込んだりすることができます。
PolicyKit による管理者認証を許可する
PolicyKit を設定することで、ユーザは管理者パスワードを入力せずに GUI を使ってプリンタを設定できるようになります。
以下は、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.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
CUPS は Avahi browsing を使ってネットワーク上の未知の共有プリンターを発見することができます。サーバーがどこにあるのかわからないくらい巨大な構成で有用です。この機能を使うには .local ホストネーム解決を設定して、avahi-daemon.service
と cups-browsed.service
の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、作成されたキューが動作しない場合があります。しかし、IPP Everywhere や AirPrint をサポートするプリンタなど、ドライバレスのプリンタは設定せずに動作するはずです。
印刷サーバとリモート管理
CUPS/プリンター共有 と CUPS/プリンター共有#リモート管理 を見てください。
ローカルの CUPS サーバーを使わない
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。libcups パッケージのインストールが必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに cups パッケージのインストールを必要とします。
リモートの 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/プリンター別の問題 を見てください。
参照
- 公式 CUPS ドキュメント (ローカルにインストールされています)
- Wikipedia:ja:CUPS
- OpenPrinting ホームページ
- 印刷処理の考え方 - 印刷ワークフローについての説明
- OpenSuSE CUPS in a Nutshell - a quick CUPS overview
- Gentoo:Printing
- Debian の印刷ポータル - 詳細な技術的ガイド
- Debian の印刷の概要 - CUPS 印刷システムの基本的な概要
- CUPS メーリングリスト
- CUPS メーリングリスト (Apple フォーク)
- CUPS 問題トラッカー
- CUPS 問題トラッカー (Apple フォーク)