CUPS

提供: ArchWiki
移動先: 案内検索

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

インストール

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

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

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

接続インターフェイス

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

ノート: CUPS ヘルパープログラムは lp グループと daemon ユーザーを使って実行されます。これによってヘルパープログラムからプリンターデバイスにアクセスできるようになり lp グループに属する /etc/cups/ の設定ファイルを読み込めるようになります。ただし、パラレルポートを使用するプリンター以外のデバイスと衝突する可能性があります:
  • lp グループにユーザーを追加することで CUPS ファイルを読み込むことを許可できます。
  • CUPS ヘルパーがパラレルポートを使用するプリンター以外のデバイスを使用する権限を得てしまう可能性があります。
必要であれば、Udev ルールを使用してプリンター以外のパラレルポートデバイスには別のグループを割り当ててください (FS#50009)。CUPS が使用するグループとユーザーは変えられますが、手動でファイルのパーミッションを修正する必要があります。

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 ホストネームを使ってネットワークプリンターを接続するには、.local ホストネーム解決をセットアップして org.cups.cupsd.service再起動してください。

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

プリンタードライバー

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

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

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

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

CUPS

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

Foomatic

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

foomatic を使用するには、foomatic-db-enginefoomatic-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 のドキュメント [2] を見てください。プリンターによって URI には細かい違いがあるので、プリンターのマニュアルや CUPS/プリンター別の問題もチェックしてください。

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

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

警告: サーバーとクライアントの両方をプリンターフィルターで設定してはいけません。クライアントかサーバーのどちらかの印刷キューが 'raw' である必要があります。フィルターによってプリンターに同じ印刷ジョブを2回送信して問題が発生するのを避けるためです (例: [3])。印刷キューを '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 SHARED_PRINTER -m raw    # Raw queue; no PPD or filter
デフォルトプリンターを設定
$ 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 証明書の生成に時間がかかるためです。
印刷キューを追加

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

既存のキューを編集

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

キューをテスト

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

GUI アプリケーション

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

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

設定

CUPS サーバーの設定は /etc/cups/cupsd.conf/etc/cups/cups-files.conf にあります。どちらかのファイルを編集したら、変更を適用するために org.cups.cupsd.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 の両方を起動してください。ジョブは何も処理されずにプリンターに直接送信されるため、キューの作成が上手く行かない場合もあります。

プリンター共有

CUPS/プリンター共有を見てください。

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

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

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

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

$ CUPS_SERVER=printserver.mydomain:port firefox

client.conf

ノート: /etc/cups/client.conf非推奨 となって久しく、cups 2.2.0 で削除されました。

/etc/cups/client.conf を編集して ServerName ディレクティブを設定する古い方法:

/etc/cups/client.conf
# (Substitute printserver.mydomain with your print server name)
ServerName printserver.mydomain

リモート環境のプリンター設定はデフォルトで使用されます。

トラブルシューティング

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

参照