「CUPS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「[[zh-TW:」を「[[zh-hant:」に置換)
(org.cups.cupsd.serviceをcups.serviceに置き換え)
 
(2人の利用者による、間の4版が非表示)
9行目: 9行目:
 
[[ru:CUPS]]
 
[[ru:CUPS]]
 
[[th:CUPS]]
 
[[th:CUPS]]
[[tr:CUPS]]
 
 
[[zh-hans:CUPS]]
 
[[zh-hans:CUPS]]
 
[[zh-hant:CUPS]]
 
[[zh-hant:CUPS]]
28行目: 27行目:
 
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/$USER}} に保存されます。作成場所は {{ic|/etc/cups/cups-pdf.conf}} で変更できます。
   
インストールしたら {{ic|org.cups.cupsd.service}} を[[起動]]・[[有効化]]してください。
+
インストールしたら {{ic|cups.service}} を[[起動]]・[[有効化]]してください。
   
 
== 接続インターフェイス ==
 
== 接続インターフェイス ==
 
以下には様々なインターフェイスごとにプリンターを認識させる手順を載せています。
 
以下には様々なインターフェイスごとにプリンターを認識させる手順を載せています。
   
  +
{{Note|1=<nowiki></nowiki>
{{Note|CUPS ヘルパープログラムは {{ic|lp}} グループと {{ic|daemon}} ユーザーを使って実行されます。これによってヘルパープログラムからプリンターデバイスにアクセスできるようになり {{ic|lp}} グループに属する {{ic|/etc/cups/}} の設定ファイルを読み込めるようになります。ただし、パラレルポートを使用するプリンター以外のデバイスと衝突する可能性があります:
 
* {{ic|lp}} グループにを追加することで 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}} を記述する必要があります。
* CUPS ヘルパーがパラレルポートを使用するプリンター以外のデバイスを使用する権限を得てしまう可能性があります。
 
  +
}}
必要であれば、[[Udev]] ルールを使用してプリンター以外のパラレルポートデバイスには別のグループを割り当ててください ({{Bug|50009}})。CUPS が使用するグループとユーザーは変えられますが、手動でファイルのパーミッションを修正する必要があります。}}
 
   
 
=== USB ===
 
=== USB ===
54行目: 53行目:
   
 
=== ネットワーク ===
 
=== ネットワーク ===
[[Avahi]] ホストネームを使ってネットワークプリンターを接続するには、[[Avahi#ホスト名の解決|.local ホストネーム解決]]をセットアップして {{ic|org.cups.cupsd.service}} を[[systemd#ユニットを使う|再起動]]してください。
+
[[Avahi]] を使うことでローカルネットワーク内のプリンターをスキャンできます。[[Avahi]] ホストネームを使ってネットワークプリンターを接続するには、[[Avahi#ホスト名の解決|.local ホストネーム解決]]をセットアップして {{ic|cups.service}} を[[systemd#ユニットを使う|再起動]]してください。
   
 
[[Samba]] プロトコルを使ってネットワークプリンターに接続する場合や、Windows クライアント用のプリンターサーバーを使う場合、{{Pkg|samba}} パッケージをインストールしてください。
 
[[Samba]] プロトコルを使ってネットワークプリンターに接続する場合や、Windows クライアント用のプリンターサーバーを使う場合、{{Pkg|samba}} パッケージをインストールしてください。
63行目: 62行目:
 
プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターでは [https://www.cups.org/doc/man-filter.html フィルター] も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [https://www.cups.org/doc/postscript-driver.html] に詳しく書かれています。
 
プリンターを動かすのに、CUPS は PPD ファイルを必要とします。また、大抵のプリンターでは [https://www.cups.org/doc/man-filter.html フィルター] も必要です。CUPS がどうやって PPD やフィルターを使用するのかは [https://www.cups.org/doc/postscript-driver.html] に詳しく書かれています。
   
[http://www.openprinting.org/printers OpenPrinting Printer List] は多数のプリンターの推奨ドライバーを教えてくれます。個別のプリンターの PPD ファイルも提供されていますが、大抵の場合は foomatic や推奨されているドライバーパッケージから手に入ります。
+
[http://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/}} に保存します。
  +
  +
新しいドライバーをインストールした後は cups サービスの再起動が必要です。
   
 
=== CUPS ===
 
=== CUPS ===
CUPS は何も設定をしなくても動作する PPD やフィルターのバイナリを少数ながらデフォルトで用意しています。
+
CUPS は何も設定をしなくても動作する PPD やフィルターのバイナリを少数ながらデフォルトで用意しています。また、CUPS は [[wikipedia:ja:AirPrint|AirPrint]] と [http://www.pwg.org/ipp/everywhere.html IPP Everywhere] プリンターにも対応しています。
   
 
=== 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] を見てください。
 
[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] を見てください。
   
foomatic を使用するには、{{pkg|foomatic-db-engine}} と {{pkg|foomatic-db-ppds}}, {{pkg|foomatic-db-nonfree-ppds}}, {{pkg|foomatic-db-gutenprint-ppds}} の最低でもどれかひとつをインストールします。
+
foomatic を使用するには、{{pkg|foomatic-db-engine}} と {{pkg|foomatic-db}}, {{pkg|foomatic-db-ppds}}, {{pkg|foomatic-db-nonfree-ppds}}, {{pkg|foomatic-db-gutenprint-ppds}} の最低でもどれかひとつをインストールします。
   
 
foomatic の PPD は別途でフィルターを必要とすることがあり、{{pkg|gutenprint}} や {{pkg|ghostscript}} などが挙げられます (例えば {{aur|min12xxw}})。{{pkg|ghostscript}} が必要な場合、{{pkg|gsfonts}} もおそらく必須です。
 
foomatic の PPD は別途でフィルターを必要とすることがあり、{{pkg|gutenprint}} や {{pkg|ghostscript}} などが挙げられます (例えば {{aur|min12xxw}})。{{pkg|ghostscript}} が必要な場合、{{pkg|gsfonts}} もおそらく必須です。
110行目: 111行目:
 
== 使用方法 ==
 
== 使用方法 ==
   
CUPS はコマンドラインツールの the lp* と cups* を使うことで制御できます。また、ウェブインターフェイスや GUI アプリケーションを利用することも可能です。
+
CUPS はコマンドラインツールの the lp* と cups* を使うことで制御できます。また、[[#ウェブインターフェイス|ウェブインターフェイス]][[#GUI アプリケーション|GUI アプリケーション]]を利用することも可能です。
   
 
* ''queue'' はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。
 
* ''queue'' はキューを識別するために使われる短くてわかりやすい名前です。名前に空白・特殊文字を含めることはできません。例えば、HP LaserJet 5P を使用する印刷キューの名前は "hpljet5p" などとします。複数のキューを物理的なプリンターに関連付けることができます。
126行目: 127行目:
 
$ /usr/lib/cups/backend/snmp ''ip_address'' # Use SNMP to find a URI
 
$ /usr/lib/cups/backend/snmp ''ip_address'' # Use SNMP to find a URI
   
;ドライバーを確認
+
;モデルを確認
 
$ lpinfo -m
 
$ lpinfo -m
   
134行目: 135行目:
 
''queue_name'' は適当な名前に置き換えてください。例:
 
''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 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 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}} を指定します)。}}
   
 
;デフォルトプリンターを設定
 
;デフォルトプリンターを設定
170行目: 175行目:
 
$ lpr ''file''
 
$ lpr ''file''
 
$ lpr -# 17 ''file'' # print the file 17 times
 
$ 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.
   
 
;印刷キューを確認
 
;印刷キューを確認
185行目: 190行目:
   
 
{{Note|HTTPS 接続で CUPS を使用する場合、初めてアクセスしたときにインターフェイスが表示されるまで長い時間がかかります。初期設定で行われる SSL 証明書の生成に時間がかかるためです。}}
 
{{Note|HTTPS 接続で CUPS を使用する場合、初めてアクセスしたときにインターフェイスが表示されるまで長い時間がかかります。初期設定で行われる SSL 証明書の生成に時間がかかるためです。}}
  +
  +
ウェブインターフェイスから管理設定を行うには認証が必要です。{{ic|root}} で認証するか、ユーザーをプリンターの管理権限グループに追加してください。[[#設定]]を参照。
   
 
;印刷キューを追加
 
;印刷キューを追加
199行目: 206行目:
 
CUPS を管理するのに十分な権限を持っていない場合、アプリケーションが起動するときに root パスワードが要求されます。root 権限を与えずにユーザーに管理者権限を与える方法は[[#設定]]を見てください。
 
CUPS を管理するのに十分な権限を持っていない場合、アプリケーションが起動するときに root パスワードが要求されます。root 権限を与えずにユーザーに管理者権限を与える方法は[[#設定]]を見てください。
   
* {{App|print-manager|印刷ジョブとプリンターの管理ツール ([[KDE]])。|https://projects.kde.org/projects/kde/kdeutils/print-manager|{{Pkg|print-manager}}}}
+
* {{App|print-manager|印刷ジョブとプリンターの管理ツール ([[KDE]])。|https://cgit.kde.org/print-manager.git|{{Pkg|print-manager}}}}
* {{App|system-config-printer|CUPS プリンター設定ツール・状態アプレット ([[GNOME]] など)。|http://cyberelk.net/tim/software/system-config-printer/|{{Pkg|system-config-printer}}}}
+
* {{App|system-config-printer|[[GTK+]] の CUPS プリンター設定ツール・状態アプレット。|http://cyberelk.net/tim/software/system-config-printer/|{{Pkg|system-config-printer}}}}
* {{App|gtklp|CUPS の GTK+ インターフェイス。|http://gtklp.sirtobi.com/index.shtml|{{AUR|gtklp}}}}
+
* {{App|gtklp|CUPS の GTK+ インターフェイス。|https://gtklp.sirtobi.com/index.shtml|{{AUR|gtklp}}}}
   
 
== 設定 ==
 
== 設定 ==
   
CUPS サーバーの設定は {{ic|/etc/cups/cupsd.conf}} と {{ic|/etc/cups/cups-files.conf}} にあります。どちらかのファイルを編集したら、変更を適用するために {{ic|org.cups.cupsd.service}} を[[再起動]]してください。大抵の場合はデフォルト設定で問題ありません。
+
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}} グループが使われます。
 
プリンターの管理者権限を持つ[[グループ]]は {{ic|/etc/cups/cups-files.conf}} の {{ic|SystemGroup}} で定義されます。デフォルトでは {{ic|sys}} グループが使われます。
215行目: 222行目:
 
=== cups-browsed ===
 
=== cups-browsed ===
   
CUPS は [[Avahi]] を使ってネットワーク上の未知の共有プリンターを発見することができます。サーバーがどこにあるのかわからないくらい巨大な構成で有用です。この機能を使うには [[Avahi#ホスト名の解決|.local ホストネーム解決]]を設定して、{{ic|avahi-daemon.service}} と {{ic|cups-browsed.service}} の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、キューの作成が上手く行かない場合もあります。
+
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]] に対応しているドライバー不要のプリンターであれば特に設定をしなくても問題なく動作するはずです。
  +
  +
{{Note|1=ネットワークプリンターの検索によってコンピュータの起動時間が大幅に遅くなってしまうことがあります [https://bbs.archlinux.org/viewtopic.php?pid=1720219#p1720219]。}}
   
 
=== プリンター共有 ===
 
=== プリンター共有 ===
   
[[CUPS/プリンター共有]]を見てください。
+
[[CUPS/プリンター共有]]と[[CUPS/プリンター共有#リモート管理]]を見てください。
   
  +
=== PolicyKit による管理者認証 ===
=== ローカルの CUPS サーバーを使わない ===
 
   
  +
[[PolicyKit]] を設定することで管理者パスワードを入力しなくても GUI を使ってユーザーからプリンターを設定できるようにすることができます。
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。{{Pkg|libcups}} パッケージの[[インストール]]が必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに {{Pkg|cups}} パッケージのインストールを必要とします。
 
   
  +
{{Note|ルールを適用するには {{Pkg|cups-pk-helper}} のインストールが必要な場合があります。}}
{{Warning|ローカルの CUPS サーバーを使わずにリモートプリンターにアクセスすることは開発者によって非推奨とされています [http://www.cups.org/pipermail/cups/2015-October/027229.html]。}}
 
   
  +
以下は wheel [[グループ]]のメンバーにプリンターの管理を許可する例です:
リモートの CUPS サーバーを使うには、{{ic|CUPS_SERVER}} [[環境変数]]を {{ic|printerserver.mydomain:port}} に設定してください。例えば、[[Firefox]] で別の印刷サーバーを使いたい場合 ({{ic|printserver.mydomain:port}} は適当な印刷サーバーの名前とポートに置き換えてください):
 
   
  +
{{hc|/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules|<nowiki>
$ CUPS_SERVER=printserver.mydomain:port firefox
 
  +
polkit.addRule(function(action, subject) {
  +
if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" &&
  +
subject.isInGroup("wheel")){
  +
return polkit.Result.YES;
  +
}
  +
});</nowiki>}}
   
  +
=== ローカルの CUPS サーバーを使わない ===
==== client.conf ====
 
   
  +
CUPS ではローカルにプリンターサーバーを立ち上げるかわりにリモートのプリンターサーバーに直接接続するように設定することができます。{{Pkg|libcups}} パッケージの[[インストール]]が必要です。ただし、アプリケーションによってはリモートのサーバーを使用する場合も印刷するのに {{Pkg|cups}} パッケージのインストールを必要とします。
{{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] で削除されました。}}
 
   
  +
{{Warning|ローカルの CUPS サーバーを使わずにリモートプリンターにアクセスすることは開発者によって非推奨とされています [http://www.cups.org/pipermail/cups/2015-October/027229.html]。}}
{{ic|/etc/cups/client.conf}} を編集して {{ic|ServerName}} ディレクティブを設定する古い方法:
 
   
  +
リモートの CUPS サーバーを使うには、{{ic|CUPS_SERVER}} [[環境変数]]を {{ic|printerserver.mydomain:port}} に設定してください。例えば、[[Firefox]] で別の印刷サーバーを使いたい場合 ({{ic|printserver.mydomain:port}} は適当な印刷サーバーの名前とポートに置き換えてください):
{{hc|/etc/cups/client.conf|
 
# (Substitute printserver.mydomain with your print server name)
 
ServerName printserver.mydomain
 
}}
 
   
  +
$ CUPS_SERVER=printserver.mydomain:port firefox
リモート環境のプリンター設定はデフォルトで使用されます。
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
251行目: 263行目:
   
 
* [http://localhost:631/help CUPS 公式ドキュメント], ''ローカルにインストールされたドキュメント''
 
* [http://localhost:631/help CUPS 公式ドキュメント], ''ローカルにインストールされたドキュメント''
* [[Wikipedia:CUPS]]
+
* [[Wikipedia:ja:Common Unix Printing System]]
* [http://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting ホームページ]
+
* [https://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting ホームページ]
* [https://en.opensuse.org/Concepts_printing OpenSuSE Concepts printing guide - explains the full printing workflow]
+
* [https://ja.opensuse.org/%E5%8D%B0%E5%88%B7%E5%87%A6%E7%90%86%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9 OpenSuSE の印刷処理の考え方 - 印刷ワークフローについての説明]
 
* [https://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]
* [https://wiki.gentoo.org/wiki/Printing Gentoo の印刷ガイド]
+
* [https://wiki.gentoo.org/wiki/Printing/ja Gentoo の印刷ガイド]
  +
* [https://wiki.debian.org/Printing Debian の印刷ポータル]
  +
* [https://wiki.debian.org/SystemPrinting Debian の CUPS 印刷システムの概要]

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

関連記事

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

インストール

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

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

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

接続インターフェイス

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

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

USB

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

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

パラレルポート

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

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

ネットワーク

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

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

プリンタードライバー

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

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

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

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

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

CUPS

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

Foomatic

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

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

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

メーカー別のドライバー

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

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

プリンター URI

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

USB

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

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

パラレルポート

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

ネットワーク

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

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

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

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

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

使用方法

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

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

CLI ツール

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

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

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

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

例:

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

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

# cupsreject queue_name

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

# cupsdisable queue_name

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

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

ウェブインターフェイス

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

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

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

印刷キューを追加

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

既存のキューを編集

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

キューをテスト

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

GUI アプリケーション

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

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

設定

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

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

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

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

cups-browsed

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

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

プリンター共有

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

PolicyKit による管理者認証

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

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

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

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

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

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

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

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

$ CUPS_SERVER=printserver.mydomain:port firefox

トラブルシューティング

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

参照