「CUPS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
(org.cups.cupsd.serviceをcups.serviceに置き換え)
 
(2人の利用者による、間の13版が非表示)
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}}
{{Related3|CUPS printer sharing|CUPS プリンター共有}}
+
{{Related|CUPS/プリンター共有}}
{{Related3|CUPS printer-specific problems|CUPS プリンター別の問題}}
+
{{Related|CUPS/プリンター別の問題}}
  +
{{Related|CUPS/トラブルシューティング}}
 
{{Related|Samba}}
 
{{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}} が唯一必要なパッケージです。[[official Repositories|公式リポジトリ]]から[[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 環境にインストールする ===
 
 
[[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 アプリケーションからすぐにプリンターが使えるようになるはずです。
 
 
{{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}}
 
 
== サーバーパッケージのインストール ==
 
 
以下のパッケージとプリンタードライバが必要になります。[[official Repositories|公式リポジトリ]]から[[pacman|インストール]]してください。
 
 
* {{Pkg|cups}} - CUPS デーモン
 
* {{Pkg|ghostscript}} - (任意) PostScript インタプリタ
 
* {{Pkg|gsfonts}} - GhostScript 標準 Type1 フォント
 
 
ネットワークを介したプリンターブラウジングを有効にしたいのならば、{{Pkg|avahi}} もインストールして [[systemd#ユニットを使う|systemd]] を使って {{ic|avahi-daemon.service}} を有効にしてください。
 
 
[[Samba|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, [[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 ドライバーをインストールする必要があります。
 
 
==== プリンター 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}} カーネルモジュールを[[Kernel modules#ブラックリスト|ブラックリスト]]に入れる必要はなくなっています。
 
 
ブラックリストを使わないと解決できない問題を発見した時は上流である CUPS のバグトラッカーに報告してください。おそらく Till Kamppeter (Debian の CUPS メンテナ) とコンタクトが取れるはずです。詳しくは [http://cups.org/str.php?L4128 upstream bug] を見て下さい。}}
 
   
  +
=== パラレルポート ===
USB プリンタが動作しない問題がある場合、{{ic|usblp}} [[Kernel modules|カーネルモジュール]]のブラックリスト化を試すことができます:
 
  +
パラレルポートプリンターを使うには {{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}} [[Kernel modules|カーネルモジュール]]を手動でロードする必要があるかもしれません。
 
  +
[[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}} [[Kernel modules|カーネルモジュール]]をロードする必要があります。
 
   
  +
新しいドライバーをインストールした後は 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 セットアップツールを使ってインストールすることも可能です。[[official Repositories|公式リポジトリ]]から {{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 printer sharing]] のページを読んでおくといいかもしれません。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
   
==== ウェブインターフェイスにリモートアクセスする ====
 
 
デフォルトでは、CUPS のウェブインターフェイスは ''localhost'' (インストールしたコンピュータ) からしかアクセスできないようになっています。インターフェイスに外部からアクセスするには、以下の変更を {{ic|/etc/cups/cupsd.conf}} ファイルに加えて下さい。次の行を:
 
Listen localhost:631
 
下のように置き換えてください。
 
Port 631
 
これで CUPS がリクエストを受け取るようになります。
 
 
3つのアクセスレベルを設定することができます:
 
<Location /> #サーバーへのアクセス
 
<Location /admin> #admin ページヘのアクセス
 
<Location /admin/conf> #設定ファイルへのアクセス
 
 
リモートホストに以上のレベルのどれか一つを与えるには、レベルのセクションに {{ic|Allow}} の記述を追加してください。{{ic|Allow}} は以下のような形式で使うことができます:
 
Allow from all
 
Allow from host.domain.com
 
Allow from *.domain.com
 
Allow from ip-address
 
Allow from ip-address/netmask
 
Allow from @LOCAL
 
 
また、{{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>
 
 
次の設定も追加する必要があるかもしれません:
 
 
DefaultEncryption Never
 
 
この設定によって次のエラーを止めることができます: 426 - Upgrade Required when using the CUPS web interface from a remote machine。
 
 
=== コマンドライン設定 ===
 
 
コマンドラインからツール (lp* と cups* コマンドファミリー) を使って CUPS を完全に操作することができます。
 
 
Arch Linux では、ほとんどのコマンドはシェルの自動補完をサポートしています。
 
また、コマンドラインのスイッチはグループ化することはできないので注意してください。
 
 
;デバイスを一覧する
 
# lpinfo -v
 
 
;ドライバを一覧する
 
# lpinfo -m
 
 
;新しいプリンターを追加する
 
# lpadmin -p ''printer'' -E -v ''device'' -P ''ppd''
 
 
''printer'' はあなたが自由に設定できます。デバイスは {{ic|lpinfo -v}} コマンドで取得できます。
 
 
例:
 
例:
  +
$ lpoptions -p HP_DESKJET_940C -o PageSize=A4
# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -P /usr/share/ppd/HP/hp-deskjet_940c.ppd.gz
 
   
  +
;状態を確認
以下のコマンドの、''printer'' はあなたが設定したプリンターの名前に置き換えてください。
 
  +
$ lpstat -s
  +
$ lpstat -p ''queue_name''
   
;デフォルトのプリンターを設定する
+
;プリンターを無効化
$ lpoptions -d ''printer''
+
# cupsdisable ''queue_name''
 
;状態をチェックする
 
$ lpstat -s
 
$ lpstat -p ''printer''
 
   
;プリンターをにする
+
;プリンターを
# cupsdisable ''printer''
+
# cupsenable ''queue_name''
   
;プリンターを有効にする
+
;ジョブを受け取るようにプリンターを設定
# cupsenable ''printer''
+
# cupsaccept ''queue_name''
   
;プリンター削除する
+
;プリンター削除
まず印刷要求エントリを全て拒否するように設定してください:
+
まず印刷要求するエントリを全て拒否するように設定してください:
# cupsreject ''printer''
+
# cupsreject ''queue_name''
次にプリンターを無効してください
+
次にプリンターを無効してください:
# cupsdisable ''printer''
+
# cupsdisable ''queue_name''
最後にプリンターを削除してください
+
最後に削除してください:
# lpadmin -x ''printer''
+
# lpadmin -x ''queue_name''
   
;ファイルを印刷する
+
;ファイルを印刷
 
$ lpr ''file''
 
$ lpr ''file''
$ lpr -# 17 ''file'' # ファイルを17部印刷する
+
$ 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.
+
$ echo 'Hello, world!' | lpr -p # print the result of a command. The -p switch adds a header.
   
;印刷キューを確認する
+
;印刷キューを確認
 
$ lpq
 
$ lpq
$ lpq -a # on all printers
+
$ lpq -a # on all queues
   
;印刷キューを削除する
+
;印刷キューを消去
# lprm # 最後のエントリを削除
+
# lprm # remove last entry only
# lprm - # 全てのエントリを削除
+
# lprm - # remove all entries
   
=== 他の CUPS インターフェイス ===
+
=== ウェブインターフェイス ===
   
  +
CUPS サーバーはウェブインターフェイスを使って管理することができます。http://localhost:631/ を開いてください。
==== GNOME ====
 
   
  +
{{Note|HTTPS 接続で CUPS を使用する場合、初めてアクセスしたときにインターフェイスが表示されるまで長い時間がかかります。初期設定で行われる SSL 証明書の生成に時間がかかるためです。}}
{{Pkg|system-config-printer}} を[[pacman|インストール]]することでプリンターを設定・管理できます。このプログラムは複数の gnome 依存パッケージを呼びこむことがあります。
 
   
  +
ウェブインターフェイスから管理設定を行うには認証が必要です。{{ic|root}} で認証するか、ユーザーをプリンターの管理権限グループに追加してください。[[#設定]]を参照。
cups スケジューラを管理するのに必要な特権をユーザーが持っていない場合、system-config-printer は起動時に root パスワードの入力を求めます。以下の設定をすることでこれを回避することが可能です。
 
   
  +
;印刷キューを追加
1. cups スケジューラを管理するグループを作成してください:
 
  +
'''Administration''' ページを開いてください。
   
  +
;既存のキューを編集
# groupadd lpadmin
 
  +
'''Printers''' ページを開いて、編集したいキューを選択してください。
   
  +
;キューをテスト
2. ユーザーを新しく作成したグループに追加してください:
 
  +
'''Printers''' ページを開いて、キューを選択してください。
   
  +
=== GUI アプリケーション ===
# usermod -aG lpadmin ''username''
 
   
  +
CUPS を管理するのに十分な権限を持っていない場合、アプリケーションが起動するときに root パスワードが要求されます。root 権限を与えずにユーザーに管理者権限を与える方法は[[#設定]]を見てください。
3. cups が新しく作成したグループを使うように設定してください:
 
   
  +
* {{App|print-manager|印刷ジョブとプリンターの管理ツール ([[KDE]])。|https://cgit.kde.org/print-manager.git|{{Pkg|print-manager}}}}
{{hc|/etc/cups/cups-files.conf|
 
  +
* {{App|system-config-printer|[[GTK+]] の CUPS プリンター設定ツール・状態アプレット。|http://cyberelk.net/tim/software/system-config-printer/|{{Pkg|system-config-printer}}}}
...
 
  +
* {{App|gtklp|CUPS の GTK+ インターフェイス。|https://gtklp.sirtobi.com/index.shtml|{{AUR|gtklp}}}}
SystemGroup sys root '''lpadmin'''
 
...}}
 
   
  +
== 設定 ==
4. 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}} を[[再起動]]してください。大抵の場合はデフォルト設定で問題ありません。
# systemctl restart org.cups.cupsd.service
 
   
  +
プリンターの管理者権限を持つ[[グループ]]は {{ic|/etc/cups/cups-files.conf}} の {{ic|SystemGroup}} で定義されます。デフォルトでは {{ic|sys}} グループが使われます。
5. 一度ログアウトしてからログインしなおすか、コンピュータを再起動してください。
 
   
  +
{{pkg|cups}} は {{pkg|libpaper}} のサポートを有効にしてビルドされており、libpaper はデフォルトの用紙サイズとして '''Letter''' を使います。印刷キューを追加するたびに用紙サイズを変更しなくてもいいように、{{ic|/etc/papersize}} を編集してデフォルトの用紙サイズを設定してください。詳しくは {{man|5|papersize}} を参照。
==== KDE ====
 
   
  +
デフォルトでは、全てのログは {{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] を見てください。
[[KDE|KDE]] のユーザーはコントロールセンターからプリンターを変更することが可能です。ハードウェアグループにプリンターインターフェイスが現れない時は {{Pkg|kdeutils-print-manager}} パッケージをインストールする必要があるかもしれません。インターフェイスの使用方法など詳しい情報はデスクトップ環境のドキュメントを参照してください。
 
   
==== その他 ====
+
=== cups-browsed ===
   
  +
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]] に対応しているドライバー不要のプリンターであれば特に設定をしなくても問題なく動作するはずです。
[[Arch User Repository|AUR]] に {{AUR|gtklp}} があります。
 
   
  +
{{Note|1=ネットワークプリンターの検索によってコンピュータの起動時間が大幅に遅くなってしまうことがあります [https://bbs.archlinux.org/viewtopic.php?pid=1720219#p1720219]。}}
== PDF 仮想プリンター ==
 
{{Note|GNOME では、PDF や Postscript ファイルに直接プリントすることが可能なため、そのような場合 CUPS-PDF が必要ありません。}}
 
   
  +
=== プリンター共有 ===
{{Pkg|cups-pdf}} パッケージを使うことで送信されたデータから PDF を作成する仮想プリンターをセットアップすることができます。このパッケージは必須ではありませんが、使うと非常に便利です。
 
   
  +
[[CUPS/プリンター共有]]と[[CUPS/プリンター共有#リモート管理]]を見てください。
パッケージをインストールした後、他のプリンターと同じようにウェブインターフェイスを使って設定してください。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
 
   
  +
=== PolicyKit による管理者認証 ===
生成された PDF ドキュメントは {{ic|/var/spool/cups-pdf}} のサブディレクトリに置かれます。通常、サブディレクトリにはジョブを実行したユーザーの名前が付けられます。ちょっとした設定で、印刷した PDF ドキュメントをもっと簡単に見つけられるようにできます。{{ic|/etc/cups/cups-pdf.conf}} を編集して、次の行を
 
#Out /var/spool/cups-pdf/${USER}
 
   
  +
[[PolicyKit]] を設定することで管理者パスワードを入力しなくても GUI を使ってユーザーからプリンターを設定できるようにすることができます。
下のように変更してください
 
   
  +
{{Note|ルールを適用するには {{Pkg|cups-pk-helper}} のインストールが必要な場合があります。}}
Out ${HOME}
 
   
  +
以下は wheel [[グループ]]のメンバーにプリンターの管理を許可する例です:
=== PostScript に印刷する ===
 
   
  +
{{hc|/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules|<nowiki>
CUPS-PDF (仮想 PDF プリンター) は実際は PostScript ファイルを作成してから ps2pdf ユーティリティを使って PDF を作成しています。PostScript に印刷するには、印刷ダイアログでプリンターとして "CUPS-PDF" を選択し、"print to file" のチェックボックスを選択して、印刷を押し、filename.ps を入力して保存をクリックするだけです。これはファックスなどで便利です。
 
  +
polkit.addRule(function(action, subject) {
  +
if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" &&
  +
subject.isInGroup("wheel")){
  +
return polkit.Result.YES;
  +
}
  +
});</nowiki>}}
   
== トラブシュティング ==
+
=== ローカの CUPS サーバを使わない ===
   
  +
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。{{Pkg|libcups}} パッケージの[[インストール]]が必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに {{Pkg|cups}} パッケージのインストールを必要とします。
印刷が機能しない時は {{ic|/etc/cups/cupsd.conf}} の 'LogLevel' を次のように設定して:
 
LogLevel debug
 
   
  +
{{Warning|ローカルの CUPS サーバーを使わずにリモートプリンターにアクセスすることは開発者によって非推奨とされています [http://www.cups.org/pipermail/cups/2015-October/027229.html]。}}
次のコマンドで {{ic|/var/log/cups/error_log}} からの出力を表示してください:
 
# tail -n 100 -f /var/log/cups/error_log
 
   
  +
リモートの CUPS サーバーを使うには、{{ic|CUPS_SERVER}} [[環境変数]]を {{ic|printerserver.mydomain:port}} に設定してください。例えば、[[Firefox]] で別の印刷サーバーを使いたい場合 ({{ic|printserver.mydomain:port}} は適当な印刷サーバーの名前とポートに置き換えてください):
出力の左端の文字の意味は:
 
*D=デバッグ (Debug)
 
*E=エラー (Error)
 
*I=情報 (Information)
 
*など
 
   
  +
$ CUPS_SERVER=printserver.mydomain:port firefox
以下のファイルも有用です:
 
*{{ic|/var/log/cups/page_log}} - 印刷が成功する度に新しいエントリを表示します
 
*{{ic|/var/log/cups/access_log}} - cupsd http1.1 サーバー活動全てを表示します
 
   
  +
== トラブルシューティング ==
勿論、問題を解決するには CUPS がどうやって動いているのか知るのが重要です:
 
# '印刷'が選択されると (ほとんどの) アプリケーションは .ps ファイル (PostScript、ページの見た目を記述するスクリプト言語) を CUPS に送信します。
 
# 次に CUPS はプリンターの PPD ファイル (プリンターの定義ファイル) を調べ、プリンターが理解する言語 (PJL, PCL など) に .ps ファイルを変換するにはどのフィルターが必要なのか目星をつけます (通常は GhostScript)。
 
# GhostScript が入力を受け取り、使用するフィルターを調べ、フィルターを適用して .ps ファイルをプリンターが理解するフォーマットに変換します。
 
# そして変換されたものはバックエンドに送信されます。例えば、プリンターが USB ポートに接続されている場合は、USB バックエンドが使われます。
 
 
文章を印刷して {{ic|error_log}} を見れば印刷プロセスのさらに詳しいイメージがわかります。
 
 
=== アップグレードによる問題 ===
 
 
''CUPS や関連プログラムのパッケージのバージョンが上がった後に起こる問題''
 
 
==== CUPS が動作しなくなった ====
 
 
おそらく新しいバージョンを正しく動作させるために新しい設定ファイルが必要になっています。例えば、localhost:631 から CUPS を管理しようとすると "404 - page not found" のようなメッセージが表示されます。
 
 
新しい設定を使うには、{{ic|/etc/cups/cupsd.conf.default}} を {{ic|/etc/cups/cupsd.conf}} にコピーして (必要なら古い設定をバックアップしてください) から CUPS を再起動して新しい設定を適用してください。
 
 
==== 全てのジョブが"停止"になる ====
 
 
プリンターに送ったジョブが全て"停止"になる場合は、プリンターを削除してからもう一度追加してください。
 
[http://localhost:631 CUPS のウェブインターフェイス] を使って、Printers > Delete Printer に行って下さい。
 
 
プリンターの設定を確認するには ''Printers'' から ''Modify Printer'' に行って下さい。表示された情報をコピーして、次のページに進むには 'Modify Printer' をクリックしてください。
 
 
==== 全てのジョブが"プリンターが応答していません"になる ====
 
 
ネットワークプリンターを使っている場合、CUPS が CUPS が接続 URI に使っている名前が DNS によってプリンターの IP を解決しているか確認してください。例えばプリンターの接続が次のようになっている場合:
 
lpd://BRN_020554/BINARY_P1
 
 
ホスト名 'BRN_020554' が CUPS を動かしているサーバーからプリンターの IP に解決されるようにする必要があります。
 
 
==== PPD のバージョンが gutenprint と互換性がない ====
 
 
次を実行してください:
 
# /usr/bin/cups-genppdupdate
 
 
そして CUPS を再起動してください (このことは gutenprint のインストール後のメッセージでも指示されます)。
 
 
=== その他 ===
 
 
==== プリンターが "Rendering completed" 状態で止まってしまう ====
 
 
インクの残量が少なくなると、"Rendering completed" 状態でプリンターが止まってしまうことがあります。また、ネットワークプリンターの場合、それによってネットワークに正しく接続されているのにもかかわらず、CUPS からプリンターが制御できなくなっているのかもしれません。この場合、インクカートリッジを交換することでプリンターは "Ready" 状態に戻り、ネットワークプリンターならば、プリンターが CUPS からまた使えるようになります。
 
 
{{Note|サードパーティ製のインクカートリッジを使っている場合、プリンターによって示されるインク残量が正確ではないことがあります。サードパーティ製のインクを使っていてプリンターが問題なく動作していたのに、"Rendering completed" 状態で動かなくなった場合は、インクが残っていると表示されていたとしてもまずインクカートリッジを交換してみてください。}}
 
 
インクがなくなっているのが原因ではないときは {{ic|/etc/cups}} と {{ic|/var/log/cups}} の "Group ID" を確認してください。"root" 権限がある場合は、{{ic|/var/spool/cups}} も確認します。ファイルには GID {{ic|lp}} がなくてはなりません。ファイルに GID {{ic|nobody}} が書かれている場合は、{{ic|/etc/cups/cups-files.conf}} ファイルの "Group" と "SystemGroup" ディレクティブのグループを確認してください。通常は {{ic|Group lp}} と {{ic|SystemGroup lpadmin sys root}} になっています。"Group" に書かれているグループが "SystemGroup" の方には入ってないことになってないかチェックしてください。特に、{{ic|lp}} が "Group" ディレクティブにはあるのに、"SystemGroup" ディレクティブの方では載っていないか確認してください。これは昔に CUPS と KDE の wiki ページで推奨されていたのと逆です。"SystemGroup" ディレクティブに {{ic|lp}} を追加していたときは、"SystemGroup" から {{ic|lp}} を削除するか、次のコマンドを実行して "SystemGroup" ディレクティブの {{ic|lp}} を {{ic|lpadmin}} に変更してください:
 
# groupadd -g107 lpadmin
 
 
===== GID 問題の説明 =====
 
For security reasons, {{ic|cupsd}} does not allow external CUPS helper programs, which are run with the GID selected with the "Group" directive, to run with any GID of the administrative groups, which are those GIDs listed in the "SystemGroup" directive. If the named group in the Group directive is also in the SystemGroup directive, then {{ic|cupsd}} will instead run the helper programs with GID {{ic|nobody}}, without warning. Note that the printer devices in {{ic|/dev/}}, for instance {{ic|/dev/parport0}}, are created with user {{ic|root}} and group {{ic|lp}}. When {{ic|cupsd}} then tries to print, it "pauses" or "stops" because it does not have permission to write the printer device file, and does not provide any useful error message. The printer device files can be made "world writable" to bypass the problem, but that is insecure and is not the proper solution.
 
 
As of CUPS version 2.0.0-2, if the group in the Group directive is also in the SystemGroup directive, {{ic|cupsd}} will exit immediately after starting, and, at a log level of "notice" or higher, will log an error message to the default error log, but not to the system log.
 
{{hc|/var/log/cups/error_log|Group and SystemGroup cannot use the same groups.}}
 
This solves the problem of {{ic|cupsd}} running in a non-functional state and failing to print without explanation.
 
 
At the default log level of "warn", no group collision error message is logged. To see this error message, increase the log level to "notice", "info", "debug", or "debug2".
 
{{hc|/etc/cups/cupsd.conf|LogLevel notice}}
 
Error messages can be sent to the systemd-journald log instead of to the default {{ic|/var/log/cups/error_log}}, but not to both, by explicitly setting the ErrorLog directive.
 
{{hc|/etc/cups/cups-files.conf|ErrorLog syslog}}
 
Currently, even then, the command {{ic|systemctl status org.cups.cupsd.service}} will not properly display the final group collision error message, but the error message can still be seen in the journal, with for instance, {{ic|sudo journalctl -f}}.
 
 
==== CUPS のパーミッションエラー ====
 
 
* Some users fixed 'NT_STATUS_ACCESS_DENIED' (Windows clients) errors by using a slightly different syntax:
 
smb://workgroup/username:password@hostname/printer_name
 
 
* Sometimes, the block device has wrong permissions:
 
# ls /dev/usb/
 
lp0
 
# chgrp lp /dev/usb/lp0
 
 
==== HPLIP プリンターが "/usr/lib/cups/backend/hp failed" エラーを送る ====
 
 
Make sure dbus is installed and running. If the error persists, try starting avahi-daemon.
 
 
Try adding the printer as a Network Printer using the http:// protocol. Generate the printer URI with {{ic|hp-makeuri}}.
 
 
{{Note|There might need to set permissions issues right. Follow indications here: [[CUPS#Device node permissions]].}}
 
 
==== HPLIP プリンターはジョブが完了したと言ってるのにプリンターが何もしない ====
 
 
This happens on HP printers when you select the (old) hpijs driver (e.g. the Deskjet D1600 series). Instead, use the hpcups driver when adding the printer.
 
 
Some HP printers (e.g HP LaserJet) require their firmware to be downloaded from the computer every time the printer is switched on. If there is an issue with udev (or equivalent) and the firmware download rule is never fired, you may experience this issue.
 
As a workaround, you can manually download the firmware to the printer. Ensure the printer is plugged in and switched on, then enter
 
hp-firmware -n
 
 
==== hp-setup が見つかったプリンターの PPD ファイルを指定するように要求する ====
 
 
hp-setup を実行する前に CUPS をインストールしてください。
 
 
==== Qt をインストールしたのに、hp-setup が "Qt/PyQt 4 initialization failed" と表示する ====
 
 
"hp-check -t" won't give you useful information to find the required package. You have to install all the "Dependent Packages" prefixed with "python2" in https://www.archlinux.org/packages/extra/x86_64/hplip/
 
 
==== hp-setup でプリンターが自動的に見つかったがテストページを印刷しようとするとすぐ "Unable to communicate with device" と表示する ====
 
 
This at least happens to hplip 3.13.5-2 for HP Officejet 6500A through local network connection. To solve the problem, specify the IP address of the HP printer for hp-setup to locate the printer.
 
 
==== hp-toolbox がエラーを送信する, "Unable to communicate with device" ====
 
 
hp-toolbox を通常のユーザーとして実行すると以下のようなメッセージが表示される場合:
 
# hp-toolbox
 
# error: Unable to communicate with device (code=12): hp:/usb/''printer id''
 
おそらく[[Users and Groups#グループ管理|ユーザーを lp と sys グループに追加する]]必要があります。
 
 
この問題は MS Windows のドライバーのために仮想 CD-ROM ドライブを持っている P1102 などのプリンターでも発生します。lp dev が現れたり消えたりします。そのようなときは、{{Pkg|usb_modeswitch}} パッケージを試して下さい。"Smart Drive" がオフになります (パッケージに udev ルールが含まれています)。
 
 
ネットワークプリンターで [[Avahi|avahi-daemon]] が動作していないときにもこのエラーが起こることがあります。また、プリンターの IP アドレスが DHCP によって変更されたために、''hp-setup'' で設定したプリンターの IP アドレスでプリンターが見つからないという可能性もあります。この場合、DHCP サーバーの設定で DHCP の予約をプリンターに追加してください。
 
 
==== HP プリンターで CUPS が '"foomatic-rip" not available/stopped with status 3' と返す ====
 
 
If receiving any of the following error messages in {{ic|/var/log/cups/error_log}} while using a HP printer, with jobs appearing to be processed while they all end up not being completed with their status set to 'stopped':
 
Filter "foomatic-rip" for printer ''printer_name'' not available: No such file or director
 
or:
 
PID 5771 (/usr/lib/cups/filter/foomatic-rip) stopped with status 3!
 
make sure {{pkg|hplip}} has been [[pacman|installed]], in addition to [[#プリンタードライバ|the packages mentioned above]]. See [https://bbs.archlinux.org/viewtopic.php?id=65615 this forum post] for more information.
 
 
==== unauthorised エラーで印刷が失敗する ====
 
 
If the user has been added to the lp group, and allowed to print (set in {{ic|cupsd.conf}}), then the problem lies in {{ic|/etc/cups/printers.conf}}. This line could be the culprit:
 
AuthInfoRequired negotiate
 
 
Comment it out and restart CUPS.
 
 
==== Unknown supported format: application/postscript ====
 
 
{{ic|/etc/cups/mime.convs}} にある次の行をコメントアウトしてください:
 
application/octet-stream application/vnd.cups-raw 0 -
 
そして {{ic|/etc/cups/mime.types}} に以下を追加してください:
 
application/octet-stream
 
 
==== Finding URIs for Windows print servers ====
 
 
Sometimes Windows is a little less than forthcoming about exact device URIs (device locations). If having trouble specifying the correct device location in CUPS, run the following command to list all shares available to a certain windows username:
 
$ smbtree -U ''windowsusername''
 
This will list every share available to a certain Windows username on the local area network subnet, as long as Samba is set up and running properly. It should return something like this:
 
{{bc| WORKGROUP
 
\\REGULATOR-PC
 
\\REGULATOR-PC\Z
 
\\REGULATOR-PC\Public
 
\\REGULATOR-PC\print$ Printer Drivers
 
\\REGULATOR-PC\G
 
\\REGULATOR-PC\EPSON Stylus CX8400 Series EPSON Stylus CX8400 Series}}
 
What is needed here is first part of the last line, the resource matching the printer description. So to print to the EPSON Stylus printer, one would enter:
 
smb://username.password@REGULATOR-PC/EPSON Stylus CX8400 Series
 
as the URI into CUPS. Notice that whitespaces are allowed in URIs, whereas backslashes get replaced with forward slashes.
 
If it won't work try '%20' instead of spaces.
 
 
==== Print-Job client-error-document-format-not-supported ====
 
 
foomatic パッケージをインストールして foomatic ドライバーを使ってみて下さい。
 
 
==== Unable to get list of printer drivers ====
 
 
* {{ic|/etc/cups/client.conf}} の {{ic|ServerName}} に http:// が付いていないか確認してください:
 
ServerName localhost:631
 
* Foomatic ドライバーを削除するか、[[#HP プリンター]] に書かれている解決方法を見て下さい。
 
 
==== lp: Error - Scheduler Not Responding ====
 
 
次のコマンドを使って文章を印刷する際にこのエラーが表示される場合:
 
 
$ lp document-to-print
 
 
{{ic|CUPS_SERVER}} 環境変数を設定してみてください:
 
 
$ export CUPS_SERVER=localhost
 
 
これで問題が解決するときは、{{ic|~/.bash_profile}} に上記の行を追加することで永続化できます。
 
 
==== CUPS prints only an empty and an error-message page on HP LaserJet ====
 
 
There is a bug that causes CUPS to fail when printing images on HP LaserJet (in my case 3380). The bug has been reported and fixed by [https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug/998087 Ubuntu].
 
The first page is empty, the second page contains the following error message:
 
ERROR:
 
invalidaccess
 
OFFENDING COMMAND:
 
filter
 
STACK:
 
/SubFileDecode
 
endstream
 
...
 
 
この問題を修正するには、root で以下のコマンドを実行します:
 
# lpadmin -p ''printer'' -o pdftops-renderer-default=pdftops
 
 
==== "Using invalid Host" エラーメッセージ ====
 
 
{{ic|/etc/cups/cupsd.conf}} に {{ic|ServerAlias *}} を追加してみてください。
 
 
==== プリンターが印刷をせず CUP ウェブインターフェイスには "Filter failed" メッセージが残る (HP プリンター) ====
 
 
プリンターの USB ポートのパーミッションを変更してください:
 
 
{{ic|lsusb}} コマンドでバスとデバイスの番号を取得:
 
 
{{hc|$ lsusb|Bus <BUSID> Device <DEVID>: ID <PRINTERID>:<VENDOR> Hewlett-Packard DeskJet D1360}}
 
 
得られた情報を利用してパーミッションを設定:
 
 
# chmod 0666 /dev/bus/usb/<BUSID>/<DEVID>
 
 
パーミッションの変更を永続化するため、コンピューターが起動する度に自動的に変更されるようにするには、以下の行を追加してください。
 
 
{{hc|/etc/udev/rules.d/10-local.rules|2=
 
SUBSYSTEM=="usb", ATTRS{idVendor}=="<VENDOR>", ATTRS{idProduct}=="<PRINTERID>", GROUP="lp", MODE:="666"
 
}}
 
 
システムによって変わるので、[[udev#デバイスの属性を一覧する]] のページを見て下さい。
 
 
==== CUPS ウェブインターフェイスに "Filter failed" というメッセージを残してプリンターが印刷を行わない (ネットワークで接続された HP プリンター) ====
 
 
{{ic|avahi-daemon}} サービスを起動・有効化・再起動してください。
 
 
==== HPLIP 3.13: Plugin is installed, but HP Device Manager complains it is not ====
 
 
The issue might have to do with the file permission change that had been made to {{ic|/var/lib/hp/hplip.state}}. To correct the issue, a simple {{ic|chmod 644 /var/lib/hp/hplip.state}} and {{ic|chmod 755 /var/lib/hp}} should be sufficient. For further information, please read this [https://bugs.launchpad.net/hplip/+bug/1131596 link].
 
 
==== プリンターが CUPS から認識されない ====
 
 
If your printer is not listed in the "Add Printers" page of the CUPS web interface, nor by {{ic|lpinfo -v}}, try the following (suggested in [https://bbs.archlinux.org/viewtopic.php?pid=1037279#p1037279 this thread]):
 
 
* Remove {{ic|usblp}} from blacklist
 
* Load {{ic|usblp}} module
 
# modprobe usblp
 
* Stop CUPS
 
* Add the following udev rule in a new rule file:
 
{{hc|/etc/udev/rules.d/10-cups_device_link.rules|2=
 
KERNEL=="lp[0-9]", SYMLINK+="%k", GROUP="lp"
 
}}
 
* Reload udev rules:
 
# udevadm control --reload-rules
 
* Unplug and re-plug the printer.
 
* Wait a few seconds and then start CUPS service.
 
 
==== Can't load /etc/samba/smb.conf ====
 
 
SMB 上のリモートプリンターに印刷しようとすると "Can't load /etc/samba/smb.conf - run testparm to debug it" というエラーメッセージが表示される場合、空の {{ic|/etc/samba/smb.conf}} ファイルを作成してください:
 
 
# mkdir /etc/samba
 
# touch /etc/samba/smb.conf
 
 
そして cupsd を再起動してください。
 
 
==== CUPS の systemd サービスが有効になっているのに起動しない ====
 
 
CUPS によって提供されている systemd の .service ファイルはソケットアクティベーションを使用しており、アプリケーションが CUPS のソケットに接続したときに初めてサービスが起動するようになっています。しかしながら、CUPS によって提供されている systemd の .socket ファイルはローカルの {{ic|/run/cups/cups.sock}} ソケットでしか動作しません。
 
 
ネットワーク上に印刷ジョブが開始されたときに CUPS が起動するようにするには、以下のファイルを作成します:
 
 
{{hc|1=/etc/systemd/system/org.cups.cupsd.socket|2=
 
.include /usr/lib/systemd/system/org.cups.cupsd.socket
 
 
[Socket]
 
ListenDatagram=0.0.0.0:631
 
}}
 
 
そして systemd をリロードします:
 
 
# systemctl --system daemon-reload
 
 
ちゃんと全てが動作するか確認してください:
 
 
{{bc|
 
# systemctl is-enabled org.cups.cupsd.service &#124;&#124; systemctl enable org.cups.cupsd.service
 
# systemctl status org.cups.cupsd.socket
 
org.cups.cupsd.socket - CUPS Printing Service Sockets
 
Loaded: loaded (/etc/systemd/system/org.cups.cupsd.socket; enabled)
 
Active: inactive (dead)
 
Listen: /run/cups/cups.sock (Stream)
 
0.0.0.0:631 (Stream)
 
0.0.0.0:631 (Datagram)
 
}}
 
 
これでローカルでもネットワークごしでも印刷がされると CUPS が自動的に起動するはずです。
 
 
==== プリンターを追加するときに "Forbidden" エラーが発生する ====
 
 
If adding a printer through the web interface returns an error: ''Forbidden'', the most likely reason is that the privileges are not set correctly. One way to fix it is to add the administering user to the group {{ic|sys}}. For example,
 
# usermod -a -G sys ''username''
 
 
==== CUPS によってプリンターが認識されるのに接続できない ====
 
 
デバッグログを有効にしてください。{{ic|Executing backend "/usr/lib/cups/backend/dnssd"...}} と何度も表示されるときはプリンター設定の dnssd を socket に変更してください。
 
   
  +
[[CUPS/トラブルシューティング]]を見てください。
例: {{ic|socket://192.168.11.6:9100}}。ポート番号は [[nmap]] や {{ic|telnet ''your-printer-ip'' 9100}} で確認できます。
 
   
 
== 参照 ==
 
== 参照 ==
   
* [http://localhost:631/help 公式 CUPS ドキュメント], ''ローカルにインストールされたドキュメント''
+
* [http://localhost:631/help CUPS 公式ドキュメント], ''ローカルにインストールされたドキュメント''
  +
* [[Wikipedia:ja:Common Unix Printing System]]
* [http://www.cups.org/ 公式 CUPS ウェブサイト]
 
  +
* [https://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting ホームページ]
* [http://www.linuxprinting.org/ Linux Printing], ''[http://www.linuxfoundation.org The Linux Foundation]''
 
  +
* [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 の印刷処理の考え方 - 印刷ワークフローについての説明]
* [http://www.gentoo.org/doc/en/printing-howto.xml Gentoo の印刷ガイド], ''[http://www.gentoo.org/doc/en Gentoo Documentation resources]''
 
  +
* [https://en.opensuse.org/SDB:CUPS_in_a_Nutshell OpenSuSE CUPS in a Nutshell - a quick CUPS overview]
* [https://bbs.archlinux.org/ Arch Linux ユーザーフォーラム]
 
  +
* [https://wiki.gentoo.org/wiki/Printing/ja Gentoo の印刷ガイド]
* [http://wiki.gotux.net/tutorials/software/hp-printer Install HP printers easy way]
 
  +
* [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/トラブルシューティングを見てください。

参照