第14章 プリンタの操作

目次

14.1. 印刷システムの作業手順
14.2. プリンタ接続の方法とプロトコル
14.3. ソフトウエアのインストール
14.4. プリンタの設定
14.5. ネットワークプリンタ
14.6. コマンドラインからの印刷
14.7. openSUSE での特殊機能
14.8. トラブルシューティング

openSUSE® では、ネットワークプリンタを含む多種のプリンタに対応して います。プリンタは手動で設定することもできますし、 YaST から設定することも できます。設定方法については 14.4項 「プリンタの設定」 をお読みください。 また、印刷ジョブの管理にはグラフィカルなユーティリティと、コマンドラインから 実行可能なユーティリティの 2 種類があります。プリンタがうまく動作しない場合は、 14.8項 「トラブルシューティング」 をお読みください。

openSUSE では CUPS (Common Unix Printing System) を標準印刷システムと しています。

プリンタは USB やネットワークなどのインターフェイスのほか、プリンタの言語に よっても区別を行ないます。プリンタをご購入の際は、プリンタがどのような インターフェイス (USB やパラレルポートなど) を持っているのかと、その インターフェイスがお使いのハードウエアで利用可能なものであるかどうか、 およびプリンタが使用する言語についても、あらかじめご確認ください。 プリンタは下記のような 3 種類の言語に分類されます:

PostScript プリンタ

PostScript は多くの Linux および UNIX システムが生成するプリンタ言語で、 印刷システム内部の印刷システムで処理されるものです。プリンタ側で PostScript 文書を直接処理でき、かつ印刷システムで特別な処理が必要でない場合は、 潜在的なエラー要因を減らすこともできます。

標準プリンタ (PCL や ESC/P などの言語)

これらのプリンタ言語はかなり古いものですが、今でもなおプリンタに 対する新しい機能を追加しながら今に至っています。言語が既知のプリンタ言語で あった場合は、 Ghostscript の助けを借りて PostScript ジョブをそれぞれの 言語に変換することができます。処理作業は逐次翻訳 (インタプリタ) とも 呼ばれます。最もよく知られた言語は、 PCL (HP 社製のプリンタやそれらの 類似製品などで使用されています) と ESC/P (エプソン社製のプリンタで 使用されています) です。これらのプリンタ言語は一般に Linux に対応して いて、十分な品質の印刷を行なうことができます。ただし Linux では特別な プリンタ機能を利用することができない場合もあります。 HPLIP (HP Linux Imaging and Printing) を開発している HP 社を除き、現時点では Linux 向けのドライバを開発し、オープンソースのライセンスで Linux ディストリビュータに提供している製造元はありません。

プロプライエタリプリンタ (GDI プリンタとも呼ばれます)

これらのプリンタは、汎用的なプリンタ言語に一切対応していません。 これらは非公開の独自プリンタ言語を使用していて、新しいプリンタモデルが 販売される際に変更されることがあります。一般に Windows 用のドライバのみ が公開されています。詳しくは 14.8.1項 「標準プリンタ言語に対応していないプリンタ」 を お読みください。

新しいプリンタをお買い上げの前に、下記の情報をお読みのうえ、ご希望のプリンタが どの程度 Linux に対応しているかをご確認ください:

http://www.linuxfoundation.org/collaborate/workgroups/openprinting/database/databaseintro (英語)

プリンタデータベースを公開している OpenPrinting のホームページです。 データベースでは最新の Linux 対応状況が公開されています。ただし、 Linux ディストリビューションには製品を公開した時点のドライバしか 含まれていないため、 perfectly supported (完全対応) と明記されたプリンタであっても、それが openSUSE の対応状況とは 一致しない場合があります。そのため、このデータベースは参考情報として ご覧ください。

http://pages.cs.wisc.edu/~ghost/ (英語)

Ghostscript の Web ページです。

/usr/share/doc/packages/ghostscript/catalog.devices

同梱ドライバの一覧です。

14.1. 印刷システムの作業手順

ユーザは印刷ジョブを作成します。印刷ジョブには印刷するデータそのもののほか、 プリンタの名前や印刷キューの名前、さらにオプションでフィルタの情報やプリンタ 固有の設定など、スプーラに対する情報も付加されています。

少なくともそれぞれのプリンタには、専用の印刷キューが存在していなければ なりません。またスプーラは、目的のプリンタがデータを受信できるように なるまで、印刷ジョブを保持します。プリンタの準備ができると、スプーラは フィルタを通してデータを送信し、応答を受信します。

一方のフィルタは、それぞれのアプリケーションが生成したデータ (一般的には PostScript や PDF 、その他にも ASCII, JPEG などである場合もあります) を、 印刷用 (PostScript, PCL, ESC/P など) に変換する機能を備えています。 プリンタの機能は PPD ファイル内に定義します。 PPD ファイルには、それぞれ のプリンタで必要な機能を有効化するための、プリンタ固有のオプション設定と パラメータが書かれています。また、フィルタシステムではユーザ側で選択した オプションについても有効化を行ないます。

PostScript プリンタをお使いの場合、フィルタシステムはデータをプリンタ固有の PostScript に変換します。この場合にはプリンタドライバは必要になりません。 PostScript 以外のプリンタをお使いの場合は、フィルタはプリンタ固有のデータに 変換します。この場合はお使いのプリンタに合わせた適切なドライバを用意する 必要があります。バックエンド側ではプリンタ固有のデータを受け取り、プリンタ に対してデータを送信します。

14.2. プリンタ接続の方法とプロトコル

お使いのシステムにプリンタを接続するには、いくつかの方法があります。 CUPS 印刷システムでは、ローカルプリンタとネットワーク接続のプリンタとの 区別は行ないません。 プリンタの接続方法について より詳しい情報は、サポートデータベース内の CUPS in a Nutshell 記事 (http://en.opensuse.org/SDB:CUPS_in_a_Nutshell (英語)) をお読みください。

[Warning]稼働中のシステムにおけるケーブル接続の変更

お使いのマシンにプリンタを接続する場合は、 USB 接続の場合にのみ、稼働中の 取り付け/取り外しに対応することにご注意ください。 USB 接続以外の環境で お使いの場合は、システムやプリンタに障害を起こさないようにするため、 接続を変更する際にはシステムをシャットダウンしてから行なってください。

14.3. ソフトウエアのインストール

PPD は解像度やその他のオプション、たとえば両面印刷機能などを定義する コンピュータ言語です。これらの定義ファイルは、 CUPS で様々な印刷オプションを 使用する際に必要となる者です。 PPD ファイル無しの状態では、印刷データは 未加工の 状態でそのままプリンタに送信されてしまいます。 openSUSE をインストールすると、それに合わせて多くの PPD ファイルもインストール されます。

PostScript プリンタを設定する最もよいアプローチは、適切な PPD ファイルを 取得することです。標準インストールを行なうことでインストールされるパッケージ manufacturer-PPDs には、多くの PPD ファイルが 含まれています。詳しくは 14.7.2項 「様々なパッケージ内にある PPD ファイル」14.8.2項 「PostScript プリンタで適切な PPD ファイルが見つからない場合」 をお読みください。

新しい PPD ファイルは /usr/share/cups/model/ ディレクトリに 保管することができるほか、 YaST から印刷システムに追加することもできます。 詳しくは 14.4.1.1項 「YaST を利用したドライバの追加」) をお読みください)。 PPD ファイルのインストールを行なうと、印刷システムから選択を行なうことが できるようになります。

なお、ソフトウエアパッケージ全体のインストールを求められた場合にはご注意ください。 第一にこの種類のインストール作業は openSUSE のサポート対象外に なってしまうほか、印刷コマンドが異なる動作をすることになるため、 他の製造元のデバイスに対してアクセスできなくなってしまう可能性があります。 そのため、製造元が提供するソフトウエアをインストールすることはお勧めできません。

14.4. プリンタの設定

YaST では、お使いのマシンに直接接続されたローカルプリンタ (通常は USB や パラレルポート経由) のほか、ネットワーク接続のプリンタを設定することが できます。また、ネットワークを介してプリンタを共有したりすることもできます。

プリンタモジュールを起動するには、 YaST から ハードウエア+プリンタ を選択します。既定では プリンタ設定 のビューが表示され、 利用可能なプリンタと設定済みの全てのプリンタが表示されます。これは、 ネットワークなどを介して多数のプリンタを利用するような環境で、特に便利な 作りになっています。ここでは テストページを印刷する ことができるほか、ローカルプリンタの設定を行なうこともできます。

14.4.1. ローカルプリンタの設定

通常、 USB 接続のプリンタは自動的に検出されます。自動的に検出されない 場合、 2 つの理由が考えられます:

  • USB プリンタの電源が切れている。

  • プリンタとコンピュータ本体の通信が正しくできていない。このような場合は ケーブルの接続を確認し、プリンタとの接続がきちんと行なわれていることを 確認してください。この場合は、プリンタ関連の問題ではなく、 USB や パラレルポート関連の問題です。

プリンタの設定は、大きく 3 つのステップで行ないます。最初に接続タイプを設定 し、次にドライバを選択します。最後にこの設定で作成した印刷キューの名前を 設定します。

多くのプリンタに対しては複数のドライバが提供されています。プリンタを設定する際、 YaST では一般的なルールとして recommended (推奨) ドライバを選択します。通常はここからドライバを変更する必要はありません。 それは、 recommended (推奨) ドライバがもっとも良い出力 結果をもたらすためです。ただし、カラープリンタに対して白黒のみの出力を行ないたい 場合など、カラー印刷に対応していないドライバを使用したほうが都合のよい場合も あります。また、 PostScript プリンタで画像を印刷する際に性能上の問題があるような 場合は、 PostScript ドライバから PCL ドライバに切り替えたほうがより高い性能を 発揮する場合もあります (お使いのプリンタが PCL に対応していれば) 。

お使いのプリンタに対するドライバが一覧に現われない場合は、一覧からお使いのプリンタ に対応する標準言語 (プリンタを制御するためのコマンドセット) の汎用ドライバを 使用することもできます。お使いのプリンタでどのような言語 が使用できるのか については、プリンタ付属の文書をお読みください。これら汎用ドライバでもうまく 動作しない場合は、 14.4.1.1項 「YaST を利用したドライバの追加」 をお読みの上 他の解決策を探ってみてください。

なお、プリンタは直接使用すべきではなく、印刷キューを介して使用すべきものです。 印刷キューを使用することで、複数のジョブを順番に処理することができるためです。 また、それぞれの印刷キューは特定のドライバに割り当てられているため、 1 台の プリンタに対して複数の印刷キューを設定することもできます。これはたとえば、 カラープリンタに対して白黒印刷のみのキューを作成したりすることができる、という ことを意味しています。印刷キューについて、詳しくは 14.1項 「印刷システムの作業手順」 をお読みください。

手順14.1 新しいローカルプリンタの追加

  1. YaST を起動して ハードウエア+プリンタ を選択し、プリンタモジュールを 起動します。

  2. プリンタ設定 の画面から 追加 を押します。

  3. 接続の指定 の枠内にお使いのプリンタが既に表示されている 場合は、そのまま次に進みます。それ以外の場合は、 さらなる検出 または 接続ウイザード を押して、検出を行ないます。

  4. ドライバの発見と割り当て の枠内にある入力フィールドに、 プリンタの製造元名と型式名を入力し、 検索 を押します。

  5. recommended (推奨) とマークされているドライバのうち、お使いのプリンタに 該当しているものを選択します。適切なドライバが見つからない場合は、以下の いずれかをお試しください。

    1. 検索文字列を再確認する

    2. さらなる検出 を押して検索範囲を広げる

    3. 14.4.1.1項 「YaST を利用したドライバの追加」 に書かれている 手順でドライバを追加する

  6. 続いて 既定の用紙サイズ を選択します。

  7. 最後に 任意名称の設定 に、他と重複しない唯一の印刷キュー 名を設定します。

  8. これでプリンタを既定値で設定し、使用できるようになりました。 OK を押して プリンタ設定 のビュー に戻ってください。新しく設定したプリンタが一覧内に表示されるようになります。

14.4.1.1. YaST を利用したドライバの追加

プリンタを追加したときに ドライバの発見と割り当て 欄に 適切なドライバが表示されない場合は、お使いのプリンタに対する PPD ファイル (PostScript プリンタ定義) が存在していないという意味になります。 PPD ファイルについて、詳しくは 14.3項 「ソフトウエアのインストール」 を お読みください。

PPD ファイルはお使いのプリンタの製造元から取得することができるほか、 PostScript プリンタのドライバ CD に含まれている場合もあります。詳しくは 14.8.2項 「PostScript プリンタで適切な PPD ファイルが見つからない場合」 をお読みください。 また、 http://www.linuxfoundation.org/collaborate/workgroups/openprinting/database/databaseintro にある OpenPrinting.org プリンタデータベース (英語) から PPD ファイルをダウンロードできる場合もあります。 OpenPrinting から PPD ファイルをダウンロードする場合は、 Linux でのサポート状態 (support status) が openSUSE でのサポート状態と異なる場合があることをご了解 ください。

手順14.2 PPD ファイルの追加

  1. YaST プリンタモジュールを起動します。 YaST から ハードウエア+プリンタ を選択してください。

  2. プリンタ設定 の画面で、 追加 ボタンを 押します。

  3. ドライバの発見と割り当て から ドライバパッケージ を押します。

  4. 利用可能なプリンタ定義ファイル (PPD) の作成 欄に PPD ファイルのフルパスを入力するか、もしくは 参照 ボタンを押してファイルを選択します。

  5. OK を押して 新しいプリンタ設定の追加 画面に戻ります。

  6. ここで指定した PPD ファイルを直接使用するには、 手順14.1「新しいローカルプリンタの追加」 に書かれた手順で作業を 行ないます。それ以外の場合は キャンセル を押して ください。

14.4.1.2. ローカルプリンタの設定変更

ローカルプリンタに対する既存の設定変更では、接続種類やドライバのほか、 用紙のサイズや解像度、メディアソースなどを変更することができます。また、 プリンタの説明を変更することで、プリンタの識別子を変更することもできます。

手順14.3 ローカルプリンタの変更

  1. YaST プリンタモジュールを起動します。 YaST から ハードウエア+プリンタ を選択してください。

  2. プリンタ設定 画面から、編集を行ないたいプリンタを 選択して 編集 を押します。

  3. 接続種類やドライバを変更するには、 手順14.1「新しいローカルプリンタの追加」 に書かれた手順で 行ないます。現在の設定で何か問題がある場合にのみ変更してください。

  4. そのプリンタを既定のプリンタとして設定するには、 既定のプリンタ を選択します。

  5. 既定の設定を変更するには、 現在のドライバに対する全ての オプション を押して設定を行ないます。それぞれの設定変更 を行なう際は、関連する + 印を押してオプションの 一覧を開いてください。変更を適用するには、 OK を押します。

14.4.2. YaST を利用したネットワーク経由での印刷設定

ネットワークプリンタは自動では検出されません。これらは YaST プリンタ モジュールを利用して手動で設定する必要があります。お使いのネットワーク 環境によって、それぞれプリントサーバ経由 (CUPS, LPD, SMB, IPX) で印刷 したり、ネットワークプリンタ (おそらく TCP) で直接印刷したりすることが できます。ネットワーク印刷に関する設定は、 YaST プリンタモジュールを 起動した状態から、左側の枠内にある ネットワーク経由で印刷する を選択して行ないます。

14.4.2.1. CUPS の使用

CUPS は Linux 環境において、ネットワーク印刷に通常利用されている方式 です。最も簡単な設定方法は、全てのクライアントからアクセスを許可して いる単一の CUPS サーバに対して印刷を設定する方法です。複数の CUPS サーバから印刷する場合は、リモートの CUPS サーバに対してそれぞれ通信 を行なう必要があるため、ローカル側にも CUPS デーモンを設定する必要が あります。

手順14.4 単一の CUPS サーバ経由での印刷

  1. YaST プリンタモジュールを起動します。 YaST から ハードウエア+プリンタ を選択してください。

  2. 左側の枠内から ネットワーク経由で印刷する を 選択します。

  3. 単一の CUPS サーバを介して全ての印刷を直接処理する を選択して、サーバの名前か IP アドレスを入力します。

  4. サーバのテスト ボタンを押して、正しいホスト名または IP アドレスが設定されていることを確認します。

  5. OK を押して プリンタ設定 画面に戻ります。 CUPS サーバ内で利用できる全てのプリンタが一覧に表示されるようになります。

手順14.5 複数の CUPS サーバを利用する印刷

  1. YaST プリンタモジュールを起動します。 YaST から ハードウエア+プリンタ を選択してください。

  2. 左側の枠内から ネットワーク経由で印刷する を 選択します。

  3. CUPS サーバからのプリンタ通知を受け取る を選択します。

  4. まずはどのサーバを使用するかについて、 一般設定 から選択を行ないます。ネットワーク上で利用可能な全てのアクセスを許可 することができるほか、ローカルネットワークや指定したホストからの アクセスだけを許可することもできます。ローカルネットワークや指定した ホストからのアクセスを許可するには、それぞれ下の欄にホスト名や IP アドレスを指定する必要があります。

  5. 設定を終えたら OK を押します。するとローカルの CUPS サーバを開始するための確認メッセージが表示されますので、 はい を押してください。サーバを起動したら プリンタ設定 画面に戻ってください。ここからすぐに プリンタを検出するには、 一覧を更新 を押します。 あとから追加したプリンタについて検出を行ないたい場合も、 このボタンを押します。

14.4.2.2. CUPS 以外のプリントサーバの使用

お使いのネットワークで CUPS 以外のプリントサーバを介して印刷サービスが 提供されている場合は、 YaST プリンタモジュールから ハードウエア+プリンタ を選択し、左側の枠内から ネットワーク経由で印刷する を選択してください。そこから 接続ウイザード を選択 し、適切な 接続種類 を選択します。お使いの環境で ネットワークプリンタをどのように設定したらよいのかについては、 ネットワーク管理者にお尋ねください。

14.4.3. ネットワーク上でのプリンタ共有

ローカルの CUPS デーモンで管理されているプリンタは、ネットワーク上で共有 することができます。これはつまり、お使いのマシンを CUPS サーバとして使用 することになります。一般に CUPS は 参照モード を有効にする ことで共有機能を提供します。参照モードが有効になっている場合は、ローカル の印刷キューはリモートの CUPS デーモンからのネットワーク接続を受け付ける よう設定されます。もちろんリモートのクライアントから直接アクセスすること ができるよう、全ての印刷キューを管理する専用の CUPS サーバを立ち上げる こともできます。この場合は、参照モードを有効化する必要はありません。

手順14.6 プリンタの共有

  1. YaST プリンタモジュールを起動します。 YaST から ハードウエア+プリンタ を選択してください。

  2. 左側の枠から、 プリンタの共有 を選択します。

  3. リモートアクセスを許可 を選択します。 さらに詳しく設定する場合は、追加のオプションを利用することができます:

    • ローカルネットワーク内のコンピュータ向け を選択 し、 既定でローカルネットワーク内にプリンタを公開 を選択して参照モードを有効に設定します。

    • 追加 ボタンを押して CUPS サーバで使用する ネットワーク内にある全てのホストにプリンタを利用させたい場合は、 既定ではこのインターフェイス経由でプリンタを公開する も合わせて選択します。

    • CUPS サーバへのアクセスを特定のネットワークや IP アドレスからだけに 制限したい場合は、それぞれ 2 つの入力項目に指定してください。

  4. OK を押すと CUPS サーバが再起動され、 プリンタ設定 画面に戻ります。

  5. CUPS とファイアウオールについては、 http://ja.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings (日本語) または http://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings (英語) をお読みください。

14.5. ネットワークプリンタ

ネットワークプリンタでは様々なプロトコルを利用することができます。これらは 場合によっては、複数を同時に使用することもできます。対応しているほとんどの プロトコルは標準化されていますが、製造元によっては標準から外れた実装をしている 場合もあり、この場合はごく少数のオペレーティングシステムに対してだけドライバを 提供していたりすることがあります。このような場合には、不幸にも Linux の ドライバはほとんど提供されていません。従って、 Linux で全てのプロトコルが うまく動作するとは言い切れないのが現状です。そのため、うまく動作する設定を見つける ため、様々なオプションを試してみる必要があるかもしれません。

CUPS は ソケット, LPD, IPP, smb の各プロトコルに対応しています。

ソケット

ソケット とは、確立された TCP のソケットに対して 印刷データをありのまま送信することを言います。ソケットポートとして一般的に 使用されるポートとしては、 910035 などがあります。デバイス URI (Uniform Resource Identifier; 統一資源識別子) の書式は、 socket://プリンタの IP アドレス:ポート となります。たとえば、 socket://192.168.2.202:9100/ のようになります。

LPD (ラインプリンタデーモン)

LPD プロトコルは、 RFC 1179 で規定されています。 このプロトコルでは、印刷キューの ID などのいくつかのジョブ関連データ が、実際の印刷データの前に送信されます。そのため、データ転送用に LPD プロトコルを設定する際には、あらかじめ印刷キューを指定しておかなければ なりません。異なるプリンタ製造元の実装でも、印刷キューに任意の名前を 設定できるほど柔軟な仕組みになっています。また場合によっては、印刷キューの 名前が固定されている場合もあります。 LPT, LPT1, LP1 などの名前がよく 使用されます。 LPD サービスが使用するポート番号は 515 です。たとえばデバイス URI は、 lpd://192.168.2.202/LPT1 のようになります。

IPP (インターネット印刷プロトコル)

IPP は比較的新しい (1999 年) HTTP ベースのプロトコルです。 IPP を使用すると、他のプロトコルに比べてより多いジョブ関連のデータが 送信されます。 CUPS は内部のデータ転送に IPP を使用しています。 なお、 IPP を設定するためには印刷キューの名前を指定する必要があります。 IPP が使用するポート番号は 631 です。たとえばデバイス URI は、 ipp://192.168.2.202/psipp://192.168.2.202/printers/ps のようになります。

SMB (Windows 共有)

もちろん CUPS でも Windows 共有に接続されたプリンタに対応しています。 この目的で使用するプロトコルは SMB で、ポート番号は 137, 138, 139 を それぞれ使用します。デバイス URI は、 smb://ユーザ:パスワード@ワークグループ/smb.example.com/printer, smb://ユーザ:パスワード@smb.example.com/printer, smb://smb.example.com/printer などのようになります。

なお、プリンタ側で対応しているプロトコルについても、設定前に知っておかなければ なりません。製造元が必要な情報を提供していない場合は、 nmap コマンド (nmap パッケージで提供されます) を利用して プロトコルを調べることができます。 nmap コマンドは接続可能な ポートを調べるためのもので、下記のようにして使用します:

nmap -p 35,137-139,515,631,9100-10000 printerIP

14.5.1. コマンドラインツールでの CUPS の管理

CUPS は lpinfo, lpadmin, lpoptions などのコマンドラインツールで設定を行なう ことができます。これらのコマンドラインツールを利用するには、パラレルなどの デバイス URI を設定する必要があるほか、パラメータについても設定を行なう 必要があります。お使いのシステムで正しいデバイス URI を知るには、 lpinfo -v | grep ":/" コマンドをお使いください:

# lpinfo -v | grep ":/"
direct usb://ACME/FunPrinter%20XL
direct parallel:/dev/lp0

lpadmin コマンドを利用すると、 CUPS サーバの管理者は 印刷キューを追加したり削除したり、管理したりすることができます。 印刷キューを追加するには、下記の書式をご利用ください:

lpadmin -p キュー -v デバイス URI -P PPD ファイル -E

上記を実行すると、デバイス (-v で指定したもの) は、 指定した PPD ファイル (-P) 経由で キュー (-p) から利用できる ようになります。従って、手動で設定を行なう場合は、 PPD ファイルとデバイス URI を知っておかなければならないことになります。

なお、オプション -E は最初には指定しないでください。 全ての CUPS コマンドにおいて -E を最初に指定すると、 それは暗号化接続を行なう、という意味になるためです。プリンタを有効にするには、 下記のようにして -E を指定してください:

lpadmin -p ps -v parallel:/dev/lp0 -P \
/usr/share/cups/model/Postscript.ppd.gz -E

また、下記の例ではネットワークプリンタに対して同じことを行なっています:

lpadmin -p ps -v socket://192.168.2.202:9100/ -P \
/usr/share/cups/model/Postscript-level1.ppd.gz -E

lpadmin について、詳しくは lpadmin(8) のマニュアルページをお読みください。

プリンタの設定の際、いくつかのオプションを既定値として設定することができます。 これらのオプションは利用する印刷ツールに依存しますが、各印刷ジョブに対して 修正を行なうことで変更を行なうことができます。また、 YaST から既定の オプションを変更することもできます。コマンドラインツールの場合は 下記のようにして既定のオプションを設定してください:

  1. まずは全てのオプションを表示します:

    lpoptions -p queue -l

    例:

    Resolution/Output Resolution: 150dpi *300dpi 600dpi

    設定されている既定のオプション選択は、アスタリスク (*) で表示されます。

  2. lpadmin を利用してオプションを変更します:

    lpadmin -p queue -o Resolution=600dpi
  3. 新しい設定を確認します:

    lpoptions -p queue -l
    
    Resolution/Output Resolution: 150dpi 300dpi *600dpi

通常のユーザから lpoptions を実行すると、設定は ~/.cups/lpoptions に書き込まれます。 root から実行した場合、 設定は /etc/cups/lpoptions に書き込まれます。

14.6. コマンドラインからの印刷

コマンドラインから印刷を行なうには、 lp -d キュー名 ファイル名 のようにして実行してください。 キュー名ファイル名 は、それぞれの名前に置き換えてください。

また、アプリケーションによっては、印刷に際して lp コマンド に依存している場合があります。この場合はアプリケーションの印刷ダイアログから、 ファイル名 を指定せずにコマンドを入力してください。 たとえば lp -d キュー名 の ようになります。

14.7. openSUSE での特殊機能

CUPS での様々な機能が openSUSE に搭載されています。ここでは、 それらの機能のうち重要なものをいくつか紹介します。

14.7.1. CUPS とファイアウオール

openSUSE を特に何も指定せずにインストールすると、 SuSEFirewall2 が 有効化され、ネットワークインターフェイスは外部から到達する要求を ブロックする 外部ゾーン として設定されます。 SuSEFirewall2 の設定について、詳しくは 項 「SuSEfirewall2」 (第14章 マスカレードとファイアウオール, ↑セキュリティガイド) と http://ja.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings (日本語) http://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings (英語) をお読みください。

14.7.1.1. CUPS クライアント

通常 CUPS クライアントは、ファイアウオールの内側にある信頼済みネットワーク 環境内のワークステーションで動作します。この場合、ネットワーク インターフェイスを 内部ゾーン に設定し、ネットワーク内で ワークステーションを利用できるようにすることをお勧めします。

14.7.1.2. CUPS サーバ

CUPS サーバがファイアウオールで保護されている信頼済みネットワーク環境内で 動作している場合、ネットワークインターフェイスは 内部ゾーン に設定しておく必要があります。ただし、特別なファイアウオールのルールを 設定して CUPS の設定内でも機密を守る設定をしていない限り、信頼の置けない ネットワーク環境下で CUPS サーバを設定すべきではありません。

14.7.2. 様々なパッケージ内にある PPD ファイル

YaST の印刷設定では、 /usr/share/cups/model 以下に インストールされた PPD ファイルを利用して CUPS キューを設定することしか 行なうことができません。お使いのプリンタの型式に対応した PPD ファイルを 発見する際に YaST では、ハードウエア検出の際に読み取った製造元と型式を もとにして PPD ファイル内の同データ (製造元と型式) を検索します。 そのため YaST の印刷設定では、 PPD ファイルから製造元と型式の情報を 取り出してデータベース化しています。

PPD ファイルだけを利用して他の情報源を利用しない設定方法は、 /usr/share/cups/model を自由に変更できるという利点 があります。たとえばお使いのプリンタとして PostScript 対応のものだけを お持ちの場合、 cups-drivers パッケージに含まれる Foomatic PPD ファイルや gutenprint パッケージに含まれる Gutenprint PPD ファイルは使用する必要がありません。その代わり、お使いの PostScript プリンタを最適に利用するため、プリンタに対応した PPD ファイルを /usr/share/cups/model ディレクトリに直接コピーして 最適なプリンタ設定を行なうことができます (manufacturer-PPDs パッケージ内に存在していない場合) 。

14.7.2.1. cups パッケージ内の CUPS PPD ファイル

cups パッケージ内の汎用 PPDファイルは、下記に 示す PostScript レベル 1 および 2 のプリンタ向けの Foomatic PPD ファイルを 補完するためのものです:

  • /usr/share/cups/model/Postscript-level1.ppd.gz

  • /usr/share/cups/model/Postscript-level2.ppd.gz

14.7.2.2. cups-drivers パッケージ内の PPD ファイル

通常、 Foomatic プリンタフィルタ (foomatic-rip) は PostScript 以外のプリンタで Ghostscript とともに使用されるものです。 正しい PPD ファイルであれば、 *NickName: ... Foomatic/Ghostscript driver*cupsFilter: ... foomatic-rip と書かれた項目が存在しているはずです。 これらの PPD ファイルは、 cups-drivers パッケージ 内に含まれています。

YaST では一般的に manufacturer-PPD パッケージに 含まれるドライバを優先的に使用しますが、適切なドライバが見つからない場合は Foomatic PPD ファイルのうち、 *NickName: ... Foomatic ... (recommended) が書かれているドライバを選択します。

14.7.2.3. gutenprint パッケージ内の Gutenprint PPD ファイル

多くの非 PostScript プリンタでは、 foomatic-rip の代わりに Gutenprint (従来は GIMP-Print という名前でした) に含まれる rastertogutenprint という CUPS フィルタを 利用することができます。このフィルタと対応する Gutenprint PPD ファイルは、 gutenprint パッケージ内に含まれています。 Gurenprint PPD ファイルは /usr/share/cups/model/gutenprint/ ディレクトリ内に存在し、 *NickName: ... CUPS+Gutenprint および *cupsFilter: ... rastertogutenprint と書かれている行が存在します。

14.7.2.4. manufacturer-PPDs パッケージ内にあるプリンタの製造元が提供する PPD ファイル

manufacturer-PPDs パッケージには、プリンタの 製造元から自由なライセンスの元で提供されている PPD ファイルが含まれています。 PostScript プリンタの場合、プリンタの製造元が提供する適切な PPD ファイルを利用することで、プリンタに備わっている全ての機能を利用できる ようになるため、製造元提供の PPD ファイルで設定するのがお勧めです。 YaST は manufacturer-PPDs が提供する PPD ファイルを優先的に使用しますが、モデル名が一致していない場合には 利用することができません。これは manufacturer-PPDs パッケージ内の PPD ファイルに、似通った型式のうち 1 つしか記述していない (たとえば "Funprinter 12xx シリーズ" のように) 場合に発生します。 この場合は、 YaST を利用して手動で PPD ファイルを選択してください。

14.8. トラブルシューティング

本章では、プリンタのハードウエアおよびソフトウエア上で最もよく発生する 問題について、その解決方法や回避策を掲載しています。本章で扱っている分野と しては、 GDI プリンタや PPD ファイル、ポートの設定などがあります。また、 一般的なネットワークプリンタの問題や印刷がおかしくなる問題、キューの処理に 関する問題についても対応しています。

14.8.1. 標準プリンタ言語に対応していないプリンタ

これらのプリンタは汎用プリンタ言語には全く対応しておらず、特別な非公開 コントロール言語だけに対応しています。そのためこれらのプリンタは、製造元が 公開するドライバに対応したオペレーティングシステムでのみ動作します。 GDI は Microsoft がグラフィックデバイス向けに開発したプログラミング インターフェイスで、プリンタデバイス向けの Windows ドライバは、これを 利用して作成します。製造元が Windows に対応したドライバしか公開しない ことから、それらのプリンタを GDI プリンタ と呼びます。 実際の問題はプログラミングインターフェイスではなく、そのプリンタの型番に 対応した非公開のプリンタ言語でしかアクセスできない、という点です。

GDI プリンタによっては GDI モードと標準プリンタ言語モードを切り替えることが できるものがあります。まずはお使いのプリンタのマニュアルをお読みのうえ、 そのような切り替えに対応できるかどうかをご確認ください。また、型式に よっては特別な Windows ソフトウエアで切り替えることができるものもあります (ただし Windows 側のプリンタドライバを利用して印刷する際、常に GDI モードに切り替えてしまうような場合もあります) 。それ以外にも、 拡張モジュールで標準プリンタ言語が利用できるプリンタもあります。

また、製造元によってはそれらのプリンタに対応したプロプライエタリ (非公開) なドライバを公開している場合もあります。プロプライエタリなドライバの 欠点は、インストール済みのシステムで動作するのかどうかや、様々なハードウエア プラットフォーム上で動作するものかどうかが保証されていない点です。 逆に、標準プリンタ言語に対応したプリンタは、特定の印刷システムのバージョンや 特別なハードウエアプラットフォームに依存していたりはしません。

プロプライエタリな Linux ドライバを動かすために時間を費やすくらいであれば、 標準言語に対応したプリンタ (おそらくは PostScript) を購入してしまったほうが、 コスト面でより有利になるかもしれません。これはドライバの問題をいっぺんに解決し、 特別なドライバソフトウエアのインストールや設定の要件から解放されるだけでなく、 印刷システムが更新されたことによるドライバ側の更新作業も不要になります。

14.8.2. PostScript プリンタで適切な PPD ファイルが見つからない場合

manufacturer-PPDs パッケージ内に PostScript プリンタ向けの適切な PPD ファイルが見つからない場合、プリンタの製造元が 提供するドライバ CD を利用することができるほか、プリンタの製造元の Web ページから対応する PPD ファイルをダウンロードして使用することができます。

PPD ファイルが zip アーカイブ (.zip) や自己解凍書庫の zip ファイル (.exe) で提供されている場合、まずは unzip で中身を展開してください。次に PPD ファイルのライセンス規約を確認した あと、 cupstestppd ユーティリティを利用し、 PPD ファイルが Adobe PostScript Printer Description File Format Specification, version 4.3. に準拠しているかどうかを確認して ください。このコマンドの実行結果が FAIL, であった場合は、 PPD ファイルに重大な問題が存在していることを示していて、これを使用する と大きな問題が生じることを示しています。なお、 cupstestppd で報告される問題点は、インストールを行なう前に解決されていなければ なりません。必要であれば正しい PPD ファイルを提供するよう、プリンタの 製造元に問い合わせてください。

14.8.3. ネットワークプリンタの接続

ネットワーク側の問題かどうかの確認

まずはお使いのコンピュータに直接プリンタを接続します。テストのため、 ローカルプリンタとしてプリンタを設定してみます。これで問題なく動作する ようであれば、問題はプリンタ側にあることになります。

TCP/IP ネットワークの動作確認

TCP/IP ネットワークと名前解決が正しく動作するかどうかを確認します。

遠隔の lpd の確認

下記のコマンドでは、 ホスト 上にある lpd (ポート 515) に対して、 TCP の 接続テストを行ないます:

netcat -z ホスト 515 && echo ok || echo 失敗

lpd との接続がうまくいかない場合は、 lpd が動作していないか、基本的なネットワーク部分に 問題があることになります。

さらに root ユーザから 下記のコマンドを実行し、 ホスト 上の キュー に対して (多くの場合、とても長い) ステータスレポートを要求します。これにより、 lpd が動作しているかどうかと、ホストが問い合わせを 受け付けるかどうかを確認することができます:

echo -e "\004キュー" | netcat -w 2 -p 722 ホスト 515

lpd が何も応答を返さなかった場合は、 lpd が動作していないか、基本的なネットワーク部分に 問題があることになります。 lpd が応答を返した場合は、 出力された情報の中に ホスト 上の キュー が、なぜ利用できないのかを表示します。 たとえば 例14.1「lpd からのエラーメッセージ」 のような応答が返された場合は、 リモート側の lpd に問題があることになります。

例14.1 lpd からのエラーメッセージ

lpd: your host does not have line printer access
lpd: queue does not exist
printer: spooling disabled
printer: printing disabled

遠隔の cupsd の確認

既定の設定では CUPS のネットワークサーバはそのキュー情報を 30 秒 おきに UDP ポート 631 でブロードキャストします。 そのため下記のコマンドを利用すると、ネットワーク内に CUPS ネットワーク サーバが存在するかどうかを確認することができます。ただし、ローカル側の CUPS デーモンについては、コマンドを実行する前に停止しておいてください:

netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID

CUPS のブロードキャストパケットを送信するサーバが存在する場合、 例14.2「CUPS ネットワークサーバからのブロードキャスト」 ように出力されます。

例14.2 CUPS ネットワークサーバからのブロードキャスト

ipp://192.168.2.202:631/printers/queue

さらに、下記のコマンドでは ホスト 上にある cupsd (ポート 631) に対して、 TCP の 接続テストを行ないます:

netcat -z ホスト 631 && echo ok || echo 失敗

cupsd との接続がうまくいかない場合は、 cupsd が動作していないか、基本的なネットワーク部分に 問題があることになります。 さらに lpstat -h ホスト -l -t を実行すると、 ホスト 上の全てのキューに対する (多くの場合、とても長い) ステータスレポートを要求します。これにより、 cupsd が動作しているかどうかと、ホストが問い合わせを 受け付けるかどうかを確認することができます。

また、次のコマンドは ホスト 上の キュー に対して、単一の改行コードだけから成る 印刷キューを受け付けるかどうかをテストすることができます。 何も印刷されず、単に空白のページだけが出力されるはずです。

echo -en "\r" | lp -d キュー -h ホスト
ネットワークプリンタやプリントサーバのトラブルシューティング

プリントサーバ内で動作しているスプール機能は、複数の印刷ジョブを 取り扱うような場合に問題が発生する場合があります。このような問題は プリントサーバ内のスプール機能によって引き起こされている問題で あるため、解決するための手段は存在しません。ただし、プリントサーバの スプール機能に接続されているプリンタに対し、直接 TCP 接続を行なう ことで回避することができます。詳しくは 14.5項 「ネットワークプリンタ」 をお読みください。

この方法では、プリントサーバは様々なデータ転送手段 (TCP/IP ネットワークと ローカルプリンタ接続) 間でのコンバータとして動作するようになります。 この方法を利用するには、プリントサーバ内で使用する TCP ポートを知って おく必要があります。プリンタがプリントサーバに接続されていて電源が入って いる場合、プリントサーバの電源を入れてからしばらくしてから、 TCP ポートを nmap パッケージに 含まれる nmap ユーティリティで判別することが できます。 nmap IP アドレス のように入力すると、プリントサーバに対する下記のような出力が 表示されます:

Port       State       Service
23/tcp     open        telnet
80/tcp     open        http
515/tcp    open        printer
9100/tcp   open        jetdirect

上記の出力は、 TCP ポート 9100 を利用することで プリントサーバ内のプリンタにアクセスできることを示しています。 なお、既定では nmap コマンドは /usr/share/nmap/nmap-services ファイルに書かれた 既知のポートだけを確認します。全てのポートに対して確認を行なうには、 nmap -p  開始ポート-終了ポート  IP アドレス のように入力してください。 上記のコマンドを実行するには、しばらくの時間がかかります。 また、詳しい情報は nmap のマニュアルページを お読みください。

また、下記のようなコマンドを入力すると、上記で発見したポートに対して 文字列やファイルを直接送信し、プリンタに対してアクセスできるかどうかを 確認することができます:

echo -en "\rHello\r\f" | netcat -w 1 IP-address port
cat file | netcat -w 1 (IP アドレス) (ポート)

 

14.8.4. エラーメッセージが表示されないにも関わらず出力がおかしい場合

印刷システムでは、印刷ジョブは CUPS のバックエンドが送信先 (プリンタ) に送信し終わった時点で完了します。受け取り側での処理作業で何らかの問題が 発生した場合 (たとえばプリンタ固有のデータを印刷できない場合) は、 印刷システム側からそれを検知する手段がありません。お使いのプリンタが プリンタ固有のデータを印刷できない場合は、そのプリンタに対するより適切な PPD ファイルを選択してください。

14.8.5. キューの無効化

何回かの試行を行なっても送信先へのデータ送信が完了しない場合、 USBソケット などの CUPS バックエンドは印刷システム (cupsd) に対してエラーを 報告します。バックエンド側ではデータ転送を何回行なったら失敗と見なすかを 判断しています。さらなる再試行が無駄であると判断した場合、 cupsd はそのキューに対する印刷を停止します。 問題の原因を解決したら、システム管理者は cupsenable コマンドを利用した印刷を再開しなければなりません。

14.8.6. CUPS 参照: 印刷ジョブの削除

CUPS ネットワークサーバが自身のキューをクライアントに対してブロード キャストで通知し、クライアント側での cupsd が動作 している場合は、クライアント側の cupsd は アプリケーションからの印刷ジョブを受け入れ、サーバ側の cupsd に転送を行ないます。サーバ側の cupsd で印刷ジョブが受け付けられると、新しいジョブ番号が割り当てられます。 そのためクライアント側でのジョブ番号は、サーバ側でのジョブ番号とは 異なる番号になります。また、印刷ジョブは通常すぐに転送されるように なっていて、クライアント側の cupsd は、印刷ジョブを サーバ側の cupsd に転送が完了すると印刷完了であると 見なす仕組みになっているため、クライアント側でジョブ番号を削除すること ができません。

サーバ側で印刷ジョブを削除する必要がある場合、まずはサーバ側での ジョブ番号を調べるため、 lpstat -h cups.example.com -o のようなコマンドをご利用ください。このコマンドは未完了の印刷ジョブ の一覧を表示します。ジョブ番号が判明したら、下記のコマンドで削除を 行なってください:

cancel -h cups.example.com キュー-ジョブ番号

14.8.7. 印刷ジョブの問題とデータ転送エラー

印刷処理中にプリンタの電源を落としたり、コンピュータをシャットダウン したりした場合は、印刷ジョブがキュー内に残ったままになっています。 印刷処理はコンピュータ (またはプリンタ) の電源が復帰した後に再開されます。 不要な印刷ジョブや間違った印刷ジョブは、 cancel コマンドでキューから削除しなければなりません。

また、印刷ジョブが正しい形式ではなかったり、ホストとプリンタの間での 通信にエラーが発生したりした場合は、プリンタはデータを正しく処理できず、 何枚もの正しくない出力をしてしまう場合があります。このような現象が発生 した場合は、下記の手順で修復してください:

  1. 印刷を停止するため、全ての紙を取り除くか、用紙トレイを開けます。 また、高品質なプリンタであれば、現在の印刷処理をキャンセルするための ボタンが用意されている場合もあります。

  2. ジョブはプリンタへの送信が全て完了した場合にのみ削除される仕組みであるため、 印刷ジョブがキュー内に残っている場合があります。 lpstat -olpstat -h cups.example.com -o などのコマンドを 利用して、現在のキューが印刷中であるかどうかを確認してください。 印刷中の場合は、 cancel キュー-ジョブ番号 または cancel -h cups.example.com キュー-ジョブ番号 を利用して、キューを削除してください。

  3. また、キューから印刷ジョブを削除しても、プリンタに対するデータが少し 残っている場合があります。該当するキューに対する CUPS バックエンドプロセスが 起動中かどうかを確認し、起動中であれば終了させてください。 たとえばパラレルポートに接続されているプリンタの場合、 fuser -k /dev/lp0 コマンドを実行すると、未だプリンタ (より厳密に言えばパラレルポート) に対してデータを送信しているプロセスを 終了させることができます。

  4. 電源を落としてしばらく待ち、完全にリセットします。 再度用紙を配置し、プリンタの電源を入れてください。

14.8.8. CUPS 印刷システムのデバッグ

CUPS 印刷システムの問題を切り分けるためには、下記の汎用手順をご利用ください:

  1. /etc/cups/cupsd.conf ファイル内に LogLevel debug を設定します。

  2. cupsd を停止します。

  3. 巨大なログファイルを検索したりすることのないよう、 /var/log/cups/error_log* ファイルを削除します。

  4. cupsd を起動します。

  5. 問題を再現させます。

  6. /var/log/cups/error_log* ファイルを確認し、 問題の原因を調査します。

14.8.9. さらなる情報

多くの固有の問題は、 SUSE のサポートデータベース (http://en.opensuse.org/Portal:Support_database) (日本語) または (http://en.opensuse.org/Portal:Support_database) (英語) 内に書かれています。プリンタ関連の問題の場合は、テキスト検索で SDB:CUPS と入力してください。


openSUSE スタートアップ 13.1