目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / 管理ガイド / システム / プリンタの運用
適用項目 SUSE Linux Enterprise Server 15 SP5

24 プリンタの運用

SUSE® Linux Enterprise Serverは、リモートネットワークプリンタも含め、さまざまな種類のプリンタを使った印刷をサポートしています。プリンタは手動で設定することも、YaSTを使用して設定することもできます。設定の詳細については、第34章 「プリンタの設定を参照してください。プリントジョブの開始、管理には、グラフィカルインタフェースまたはコマンドラインユーティリティの両方を利用できます。プリンタが正常に動作しない場合は、24.8項 「トラブルシューティング」を参照してください。

CUPS (Common Unix Printing System)は、SUSE Linux Enterprise Serverの標準印刷システムです。

プリンタは、インタフェース(USB、ネットワークなど)と、プリンタ言語によって区別できます。プリンタを購入するときは、プリンタがサポートされているインタフェース(USB、Ethernet、またはWi-Fi)を備えていること、および適切なプリンタ言語が使用できることを確認してください。プリンタは、次の3つのプリンタ言語クラスに基づいて分類できます。

PostScriptプリンタ

PostScriptは、LinuxとUnix環境のほとんどの印刷ジョブを生成する際に使用されるプリンタ言語であり、内部の印刷システムもこの言語を使用して処理を行います。使用中のプリンタがPostScriptドキュメントを直接処理でき、印刷システム側で追加のステージを使用して変換を行う必要がない場合、潜在的なエラーの原因の数が減少します。

現在では、標準的な印刷ジョブフォーマットとしてPDFがPostScriptに取って代わりつつあります。PostScriptに加え、PDFも直接印刷できるPostScript+PDFプリンタは、すでに存在しています。従来のPostScriptプリンタでは、印刷ワークフローでPDFをPostScriptに変換する必要があります。

標準的なプリンタ(PCLおよびESC/Pなどの言語)

既知のプリンタ言語の場合、印刷システムはGhostscriptを使用して、PostScriptのジョブを該当のプリンタ言語へ変換できます。この処理ステージを「解釈」と呼びます。非常によく知られている言語としては、ほとんどのHPのプリンタおよび互換モデルが採用しているPCLと、Epsonのプリンタが採用しているESC/Pがあります。これらのプリンタ言語は、通常、Linuxによってサポートされており、十分な印刷結果が得られています。Linuxは、特定の特殊な印刷機能に対応できない場合があります。HPとEpson以外には、現時点で、Linuxドライバを開発してオープンソース条項に基づきそれらをLinuxのディストリビュータに提供しているプリンタメーカーは存在しません。

独自規格のプリンタ(GDIプリンタ)

これらのプリンタは、共通のプリンタ言語をサポートしていません。これらのプリンタは独自のプリンタ言語を使用しており、新しいエディション/モデルがリリースされると、プリンタ言語も変更される可能性があります。通常このようなプリンタでは、Windowsドライバしか利用できません。詳細については、24.8.1項 「標準的なプリンタ言語をサポートしないプリンタ」を参照してください。

新しいプリンタを購入する前に、次の各ソース(情報源)を参照し、購入を予定しているプリンタがどの程度までサポートされているかを確認してください。

http://www.openprinting.org/printers

プリンタデータベースのあるOpenPrintingホームページです。このデータベースは、最新のLinuxサポートステータスを示します。しかし、Linuxのディストリビューションが統合できるのは、製造の時点で使用可能だったドライバだけです。したがって、現時点で完全にサポート済みと評価されているプリンタであっても、最新バージョンのSUSE Linux Enterprise Serverがリリースされた時点では、そのステータスに達していなかった可能性があります。そのため、これらのデータベースは必ずしも正しいステータスを表しているとは限らず、おおよその状況を提示するだけにとどまっています。

http://pages.cs.wisc.edu/~ghost/

GhostscriptのWebページ。

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

組み込みのGhostscriptドライバのリスト。

24.1 CUPSのワークフロー

ユーザが印刷ジョブを作成します。印刷ジョブは、印刷するデータとスプーラの情報で構成されます。これには、プリンタの名前やプリントキューの名前のほか、オプションでフィルタに関する情報(プリンタ固有のオプションなど)が含まれます。

各プリンタには、1つ以上の専用印刷キューが存在しています。指定のプリンタがデータを受け取れるようになるまで、スプーラは印刷ジョブをキュー内に留めています。プリンタの準備が整うと、スプーラはフィルタおよびバックエンドを経由して、プリンタにデータを送信します。

このフィルタは、印刷中のアプリケーションが生成したデータ(通常はPostScriptやPDFですが、ASCII、JPEGなどの場合もあります)を、プリンタ固有のデータ(PostScript、PCL、ESC/Pなど)に変換します。プリンタの機能については、PPDファイルに記述されています。PPDファイルには、プリンタ固有のオプションが記述されています。各オプションに対しては、プリンタでそのオプションを有効にするために必要なパラメータが指定されています。フィルタシステムは、ユーザが有効として選択したオプションを確認します。

PostScriptプリンタを選択すると、フィルタシステムがデータをプリンタ固有のPostScriptに変換します。この変換にプリンタドライバは必要ありません。PostScript非対応プリンタを使用すると、フィルタシステムがデータをプリンタ固有データに変換します。この変換には、使用しているプリンタに適応したプリンタドライバが必要です。バックエンドは、プリンタ固有データをフィルタから受信し、そのデータをプリンタに送信します。

24.2 プリンタに接続するための方法とプロトコル

プリンタをシステムに接続するには、複数の方法があります。CUPSの設定は、ローカルプリンタと、ネットワーク経由でシステムに接続されているプリンタを区別しません。プリンタ接続の詳細については、https://en.opensuse.org/SDB:CUPS_in_a_Nutshellにアクセスして「CUPS in a Nutshell」という記事を参照してください。

IBM Z IBM Zのメインフレームにローカルで接続するz/VMによって提供されるプリンタおよび類似デバイスは、CUPSでサポートされていません。これらのプラットフォーム上では、ネットワーク経由の印刷だけを利用できます。ネットワークプリンタのケーブリング(ケーブル接続)は、プリンタメーカの指示にしたがって設置する必要があります。

警告
警告: 稼働中システムのケーブル接続の変更

プリンタをコンピュータに接続する場合、コンピュータの動作中に接続と取り外しを行って良いのはUSBデバイスだけであることに注意してください。システムやプリンタの損傷を回避するために、USB以外の接続を変更する場合は、あらかじめシステムをシャットダウンしてください。

24.3 ソフトウェアのインストール

PPD (PostScript printer description、PostScriptプリンタ記述)は、PostScriptプリンタの特性(解像度など)やオプション(両面印刷ユニットなど)を記述するコンピュータ言語です。これらの記述は、CUPS側でプリンタオプションを使用するために必須です。PPDファイルがない場合、印刷データはraw(ロー、未加工)状態でプリンタへ送信されますが、そのことは望ましくありません。

PostScriptプリンタを設定する場合、最善のアプローチは、適切なPPDファイルを入手することです。パッケージmanufacturer-PPDsおよびOpenPrintingPPDs-postscriptで、多くのPPDファイルが提供されています。24.7.3項 「各種パッケージ内のPPDファイル」および24.8.2項 「特定のPostScriptプリンタに適したPPDファイルが入手できない」を参照してください。

新しいPPDファイルは、/usr/share/cups/model/ディレクトリ内に保存するか、YaSTで印刷システムに追加できます(34.1.1項 「YaSTによるドライバの追加」を参照)。その後は、プリンタのセットアップ時にPPDファイルを選択できるようになります。

プリンタメーカーがソフトウェアパッケージ全体をインストールさせようとする場合には注意してください。第一に、このタイプのインストールを行うと、SUSE Linux Enterprise Serverによって提供されているサポートが失われる場合があります。第二に、印刷コマンドが異なる動作をする可能性があり、システムが他のメーカーのデバイスに対応できなくなる場合があります。この理由で、メーカのソフトウェアをインストールすることをお勧めしません。

24.4 ネットワークプリンタ

ネットワークプリンタは、複数のプロトコルをサポートでき、その複数を同時にサポートすることも可能です。サポートされているプロトコルのほとんどが標準化されているので、特定のメーカーは標準を変更します。そして、メーカーは、2、3のオペレーティングシステムにのみ対応するドライバを提供します。残念なことに、Linuxドライバはめったに提供されません。現在の状況では、あらゆるプロトコルがLinux環境で円滑に動作するという仮定に基づいて行動することはできません。したがって、機能する設定を実現するために、いくつかのオプションを実験する必要があります。

CUPSは、socketLPDIPP、およびsmbの各プロトコルをサポートしています。

socket

ソケットは、プレーンプリントデータのTCPソケットへの直接送信に使用される接続です。一般的に使用されるsocketのポート番号は、9100または35です。デバイスURI (Uniform Resource Identifier)の構文は、socket://IP.OF.THE.PRINTER:PORTです(たとえばsocket://192.168.2.202:9100/)。

LPD (line printer daemon、ラインプリンタデーモン)

LPDプロトコルについては、RFC 1179で説明されています。このプロトコルの下では、印刷キューのIDなど、一部のジョブ関連データが送信されてから、実際の印刷データが送信されます。したがって、LPDプロトコルの設定時には印刷キューを指定する必要があります。さまざまなプリンタメーカによる実装は、プリントキューとして任意の名前を受け入れる柔軟性を備えています。必要に応じて、使用可能な名前がプリンタのマニュアルに提示されています。多くの場合、LPT、LPT1、LP1、または他の類似した名前が使用されています。LPDサービスが使用するポート番号は515です。デバイスURIの例は、lpd://192.168.2.202/LPT1です。

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

IPPはHTTPプロトコルに基づいています。IPPを使用する場合、他のプロトコルより、ジョブとの関連性が高いデータが送信されます。CUPSは、IPPを使用して内部のデータ送信を行います。IPPを正しく設定するには、印刷キューの名前は必須です。IPPのポート番号は631です。デバイスURIの例は、ipp://192.168.2.202/psおよびipp://192.168.2.202/printers/psです。

SMB (Windows共有)

CUPSは、Windows共有に接続されたプリンタへの印刷もサポートしています。この目的で使用されるプロトコルは、SMBです。SMBは、ポート番号137138および139を使用します。デバイスURIの例は、smb://user:password@workgroup/smb.example.com/printersmb://user:password@smb.example.com/printer、およびsmb://smb.example.com/printerです。

設定を行う前に、プリンタがサポートしているプロトコルを決定する必要があります。メーカーから必要な情報が提供されていない場合は、コマンドnmap(nmapパッケージに付属)を使用して、プロトコルを推定します。nmapはホストのオープンポートを確認します。例:

> nmap -p 35,137-139,515,631,9100-10000 IP.OF.THE.PRINTER

24.5 コマンドラインツールによるCUPSの設定

CUPSは、lpinfolpadminlpoptionsなどのコマンドラインツールで設定できます。バックエンド(USBなど)とパラメータで構成されるデバイスURIが必要です。システム上の有効なデバイスURIを判断するには、lpinfo -v | grep ":/" ":/"コマンドを使用します。

> sudo lpinfo -v | grep ":/"
direct usb://ACME/FunPrinter%20XL
network socket://192.168.2.253

lpadminを使用すると、CUPSサーバ管理者は、印刷キューの追加、削除、または管理を実行できます。プリントキューを追加するには、次の構文を使用します。

> sudo lpadmin -p QUEUE -v DEVICE-URI -P PPD-FILE -E

このデバイス(-v)は、指定したPPDファイル(-P)を使用してQUEUE (-p)として使用できます。プリンタを手動で設定する場合は、このPPDファイルとデバイスのURIを把握しておく必要があります。

-Eは、最初のオプションとして使用しないでください。どのCUPSコマンドでも、-Eを最初の引数として使用した場合、暗号化接続を使用することを暗示的に意味します。プリンタを使用可能にするには、次の例に示す方法で-Eを使用する必要があります。

> sudo lpadmin -p ps -v usb://ACME/FunPrinter%20XL -P \
/usr/share/cups/model/Postscript.ppd.gz -E

ネットワークプリンタの設定例:

> sudo 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. 最初に、すべてのオプションを列挙します。

    > sudo lpoptions -p QUEUE -l

    例:

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

    アクティブになったデフォルトオプションは、先頭にアスタリスク(*)が付いています。

  2. 次のようにlpadminを使用してオプションを変更します。

    > sudo lpadmin -p QUEUE -o Resolution=600dpi
  3. 新しい設定値の確認:

    > sudo lpoptions -p QUEUE -l
    
    Resolution/Output Resolution: 150dpi 300dpi *600dpi

標準ユーザがlpoptionsを実行すると、設定が~/.cups/lpoptionsに書き込まれます。ただし、root設定は/etc/cups/lpoptionsに書き込まれます。

24.6 コマンドラインからの印刷

コマンドラインから印刷するには、「lp -d QUEUENAME FILENAME」を入力し、QUEUENAMEおよびFILENAMEを対応する名前で置き換えます。

一部のアプリケーションでは、印刷処理をlpコマンドに依存しています。この場合、アプリケーションの印刷ダイアログで正しいコマンドを入力します。通常はFILENAMEを指定しません。たとえば、「lp -d QUEUENAME」と入力します。

24.7 SUSE Linux Enterprise Serverの特別な機能

CUPSの複数の機能は、SUSE Linux Enterprise Serverで使用できるように調整されています。ここでは、最も重要な変更点について説明します。

24.7.1 CUPSとファイアウォール

デフォルトのSUSE Linux Enterprise Serverインストールを完了した後、firewalldはアクティブになり、ネットワークインタフェースは着信トラフィックをブロックするpublicゾーンに設定されます。

firewalldがアクティブな場合は、内部ネットワークゾーンを介してmdnsおよびippを許可することにより、クライアントがネットワークプリンタをブラウズできるように設定する必要がある場合があります。パブリックゾーンでは、プリンタキューを公開しないでください。

(firewalldの設定の詳細については、Section 23.4, “firewalldおよびhttps://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settingsを参照してください。)

24.7.1.1 CUPSクライアント

通常、CUPSクライアントはファイアウォール内部の信頼されるネットワーク環境の通常のワークステージョンで実行されます。この場合、ネットワークインタフェースをInternal Zoneに設定し、ワークステーションにネットワーク内部から到達できるようにすることを推奨します。

24.7.1.2 CUPSサーバ

CUPSサーバがファイアウォールで保護された信頼済みネットワーク環境の一部の場合、ネットワークインタフェースはファイアウォールのInternal Zoneに設定します。CUPS設定で特別なファイアウォールルールおよびセキュア設定により保護する場合を除いて、信頼できないネットワーク環境でCUPSサーバを設定することはお勧めできません。

24.7.2 ネットワークプリンタの参照

CUPSサーバは、共有プリンタが利用可能かどうか、およびそのステータスをネットワーク上で定期的にアナウンスします。クライアントは、この情報にアクセスすることで、印刷ダイアログなどに利用可能なプリンタのリストを表示できます。これを参照と呼びます。

CUPSサーバでは、ネットワークを介して印刷キューをアナウンスする際に、従来のCUPS参照プロトコルまたはBonjour/DNS-SDが使用されます。ネットワーク印刷キューの参照を有効にするには、cups-browsedサービスを、CUPSサーバを介して印刷するすべてのクライアントで実行する必要があります。cups-browsedは、デフォルトでは起動されません。アクティブなセッションでこのサービスを起動するには、sudo systemctl start cups-browsedコマンドを使用します。ブート後にこのサービスが自動的に起動されるようにするには、すべてのクライアントでsudo systemctl enable cups-browsedコマンドを実行してサービスを有効にします。

cups-browsedを起動してもブラウズできない場合は、CUPSサーバがBonjour/DNS-SDを介してネットワーク印刷キューをアナウンスしています。この場合、avahiパッケージを追加インストールし、すべてのクライアントに対してsudo systemctl start avahi-daemonを実行することで、関連するサービスを起動する必要があります。

firewalldを介してプリンタの参照を許可する方法の詳細については、24.7.1項 「CUPSとファイアウォール」を参照してください。

24.7.3 各種パッケージ内のPPDファイル

YaSTのプリンタ環境設定では、/usr/share/cups/modelにインストールされたPPDファイルを使用して、CUPSのキューがセットアップされます。プリンタモデルに適合するPPDファイルを見つけるため、YaSTはハードウェア検出時に判別されたベンダおよびモデルを、すべてのPPDファイル内のベンダおよびモデルと比較します。このために、YaSTのプリンタ環境設定機能は、PPDファイルから抽出したベンダおよびモデルの情報に基づいて、データベースを生成します。

PPDファイルのみを使用し、他の情報ソースを使用しない設定には、/usr/share/cups/model内のPPDファイルを自由に変更できるという利点があります。たとえば、PostScriptプリンタを使用している場合、そのPPDファイルを/usr/share/cups/modelへ直接コピーし(それらがまだmanufacturer-PPDsまたはOpenPrintingPPDs-postscriptパッケージ内に存在していない場合)、使用中のプリンタに合わせて最適な設定を行うこともできます。

追加のPPDファイルは次のパッケージで提供されています。

  • gutenprint: Gutenprintドライバとそれに一致するPPD

  • splix: SpliXドライバとそれに一致するPPD

  • OpenPrintingPPDs-ghostscript: Ghostscriptの組み込みドライバ用PPD

  • OpenPrintingPPDs-hpijs: HP以外のプリンタ向けのHPIJSドライバ用PPD

24.8 トラブルシューティング

ここでは、プリンタハードウェアおよびソフトウェアに最も一般的に発生する問題と、それを解決または回避する方法について説明します。GDIプリンタ、PPDファイル、およびポート設定などのトピックをカバーしています。一般的なネットワークプリンタに関する問題、印刷に問題がある場合、およびキュー処理についても対処しています。

24.8.1 標準的なプリンタ言語をサポートしないプリンタ

これらのプリンタは、共通のプリンタ言語をサポートしておらず、独自のコントロールシーケンスを使用しないと対処できません。そのため、これらのプリンタは、メーカがドライバを添付した特定のバージョンのオペレーティングシステムでのみ動作します。GDIは、Microsoft*がグラフィックデバイス用に開発したプログラミングインタフェースです。通常、メーカーはWindows用のドライバだけを提供しており、WindowsドライバはGDIインタフェースを使用しているため、これらのプリンタは「GDIプリンタ」と呼ばれることもあります。実質的な問題は、このプログラミングインタフェースではなく、これらのプリンタを制御できるのは、各プリンタモデルが採用している独自のプリンタ言語のみということです。

いくつかのGDIプリンタは、GDIモードと標準的なプリンタ言語のいずれかの間で操作を切り替えることができます。切り替えができるかどうかは、プリンタのマニュアルを参照してください。モデルによっては、切り替えを行うために特別なWindowsソフトウェアが必要なこともあります(Windowsから印刷する場合、Windowsプリンタドライバは常にプリンタをGDIモードに切り替える場合があることに注意してください)。他のGDIプリンタでは、標準のプリンタ言語を利用するための拡張モジュールが用意されています。

一部のメーカは、プリンタに独自規格のドライバを提供しています。独自規格のプリンタドライバの欠点は、インストール済みの印刷システムとそのドライバを組み合わせたときに動作するという保証も、複数のハードウェアプラットフォームに適しているという保証もないことです。一方、標準的なプリンタ言語をサポートするプリンタは、特殊なバージョンの印刷システムや特殊なハードウェアプラットフォームに依存しません。

専有のLinuxドライバを機能させようと時間を費やす代わりに、標準プリンタ言語(PostScript推奨)をサポートするプリンタを購入する方が費用効率が高い場合があります。この方法により、ドライバの問題を一度で完全に解決できます。特殊なドライバソフトウェアのインストールと設定を行う必要はなく、新しい印刷システムの開発に伴ってドライバのアップデートを入手する必要もありません。

24.8.2 特定のPostScriptプリンタに適したPPDファイルが入手できない

manufacturer-PPDsパッケージまたはOpenPrintingPPDs-postscriptパッケージに、PostScriptプリンタに適したPPDファイルが含まれていない場合は、プリンタメーカのドライバCDにあるPPDファイルを使用したり、プリンタメーカの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ファイルが入手できるかどうかをプリンタメーカに問い合わせることも考えられます。

24.8.3 ネットワークプリンタ接続

ネットワークの問題の識別

プリンタをコンピュータに直接接続します。テストの目的で、そのプリンタをローカルプリンタとして設定します。この方法で動作する場合、問題はネットワークに関連しています。

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

TCP/IPネットワークと名前解決が正しく機能していることが必要です。

リモートlpdの確認

次のコマンドを使用して、lpd上の515 (ポートHOST)に対するTCP接続を確立できるかどうかをテストします。

> netcat -z HOST 515 && echo ok || echo failed

lpdへの接続を確立できない場合、lpdがアクティブになっていないか、ネットワークの基本的な問題があります。

rootユーザで次のコマンドを実行し、リモートHOST上のQUEUEに関するステータスレポートを照会することもできます。これは、該当のlpdがアクティブで、そのホストが照会を受け付けることを前提にしています。

# echo -e "\004queue" \
| netcat -w 2 -p 722 HOST 515

lpdが応答しない場合、それがアクティブになっていないか、ネットワークの基本的な問題が発生している可能性があります。lpdが応答する場合、その応答は、host上にあるqueueを介して印刷ができない理由を示すはずです。例24.1「lpdからのエラーメッセージ」で示すような応答を受け取った場合、問題はリモートのlpdにあります。

例 24.1: lpdからのエラーメッセージ
lpd: your host does not have line printer access
lpd: queue does not exist
printer: spooling disabled
printer: printing disabled
リモートcupsdの確認

CUPSネットワークサーバは、デフォルトで、UDPポート631から30秒ごとにキューをブロードキャストできます。したがって、次のコマンドを使用すると、ブロードキャストするCUPSネットワークサーバがネットワーク内に存在しているかどうかテストすることができます。コマンドを実行する前に、ローカルCUPSデーモンが終了していることを確認します。

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

ブロードキャストを行っているCUPSネットワークサーバが存在している場合、出力は例24.2「CUPSネットワークサーバからのブロードキャスト」に示すようになります。

例 24.2: CUPSネットワークサーバからのブロードキャスト
ipp://192.168.2.202:631/printers/queue

IBM Z IBM ZのEthernetデバイスは、デフォルトではブロードキャストを受信しないことを考慮してください。

次のコマンドを使用して、HOST上のcupsd (ポート631)に対するTCP接続を確立できるかどうかをテストすることができます。

> netcat -z HOST 631 && echo ok || echo failed

cupsdへの接続を確立できない場合、cupsdがアクティブになっていないか、ネットワークの基本的な問題があります。lpstat -h HOST -l -tは、それぞれのcupsdがアクティブであり、ホストがクエリを受け入れる場合、HOST上のすべてのキューのステータスレポートを返します。

次のコマンドを使用して、HOST上のQUEUEが、1つのキャリッジリターン(CR、改行)文字からなる印刷ジョブを受け付けるかどうかをテストできます。何も印刷されないのが妥当です。空白のページが排出されるはずです。

> echo -en "\r" \
| lp -d queue -h HOST
ネットワークプリンタまたは印刷サーバマシンのトラブルシューティング

印刷サーバマシン上のスプーラは時々、複数の印刷ジョブを処理する必要が生じた場合、問題を引き起こすことがあります。これは印刷サーバマシンのスプーラで発生するため、この問題を解決する方法はありません。回避策として、TCPソケットを使用して、印刷サーバマシンに接続されているプリンタに直接送信することで、印刷サーバマシン内のスプーラを使用しないようにします。24.4項 「ネットワークプリンタ」を参照してください。

この方法により、印刷サーバマシンは異なる形式のデータ転送(TCP/IPネットワークとローカルプリンタ接続)間の単純なコンバータになります。この方法を使用するには、印刷サーバマシン内にある、該当するTCPポートについて把握する必要があります。プリンタが印刷サーバマシンに接続されていて、電源がオンになっている場合、印刷サーバマシンの電源をオンにした後、しばらく経過した時点で、nmapパッケージのnmapユーティリティを使用することにより、このTCPポートを特定できます。たとえば、nmap  IP-addressは、印刷サーバマシンに関して次のような出力をすることがあります。

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

この出力は、印刷サーバマシンに接続されているプリンタが、ポート9100上のTCPソケットを介して使用できることを示します。nmapはデフォルトでは、/usr/share/nmap/nmap-services内に記述されている複数の一般的な既知のポートだけを確認します。可能性のあるすべてのポートをチェックするには、nmap -p  FROM_PORT-TO_PORT IP_ADDRESSコマンドを使用します。これは、ある程度の時間を要することがあります。詳細な情報については、nmapのマニュアルページを参照してください。

次のようなコマンドを入力します。

> echo -en "\rHello\r\f" | netcat -w 1 IP-address port
cat file | netcat -w 1 IP-address port

これは、このポートを通してプリンタを使用できるかどうかをテストするために、該当のポートへ文字列またはファイルを直接送信します。

24.8.4 エラーメッセージを生成しない異常なプリントアウト

印刷システムの観点では、CUPSバックエンドが受信側(プリンタ)へのデータ転送を完了した段階で、印刷ジョブは完了します。受信側でそれ以降の処理が失敗した場合(たとえば、プリンタがそのプリンタ固有のデータを印刷できない)、印刷システムはこれを検出しません。プリンタがそのプリンタ固有のデータを印刷できない場合、そのプリンタにより適していると考えられるPPDファイルを選択します。

24.8.5 無効にされたキュー

受信側へのデータ転送が数回の試行後に完全に失敗した場合、USBsocketなどのCUPSバックエンドは印刷システム(より正確にはcupsd)にエラーを報告します。データ転送が不可能と報告される前に、バックエンドは何回の試行の失敗が妥当であるかを判断します。それ以上の試行は無駄に終わる可能性があるので、cupsdはそれぞれのキューの印刷を無効にします。問題の原因を取り除いた後、システム管理者はcupsenableコマンドを使用して、印刷を再度有効にする必要があります。

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

CUPSネットワークサーバが参照機能を使用して自らのキューをクライアントホストへブロードキャストし、クライアントホスト側で適切なローカルcupsdがアクティブになっている場合、クライアント側のcupsdはアプリケーションから印刷ジョブを受け付け、サーバ側のcupsdへそれらを転送します。サーバ上でcupsdが印刷ジョブを受け付けると、そのジョブには新しいジョブ番号が割り当てられます。したがって、クライアントホスト上のジョブ番号は、サーバ上のジョブ番号とは異なっています。印刷ジョブは通常、即座に転送されるので、クライアントホスト上でジョブ番号でそのジョブを削除することはできません。クライアント側のcupsdは、サーバ側のcupsdへの転送が完了した時点で、その印刷ジョブは完了したと考えるからです。

サーバ上の印刷ジョブを削除するには、lpstat -h cups.example.com -oなどのコマンドを使用して、サーバ上のジョブ番号を判別します。これは、サーバが印刷ジョブを完了(つまり、プリンタに完全に送信)していないことが前提となります。取得したジョブ番号を使用して、次のようにサーバ上の印刷ジョブを削除します。

> cancel -h cups.example.com QUEUE-JOBNUMBER

24.8.7 異常な印刷ジョブとデータ転送エラー

印刷プロセス中にプリンタの電源を切ったり、コンピュータをシャットダウンすると、印刷ジョブはキュー内に残ります。コンピュータ(またはプリンタ)の電源を再度投入すると、印刷が再開されます。異常な印刷ジョブは、cancelを使用してキューから削除する必要があります。

印刷ジョブが破損しているか、ホストとプリンタ間の通信にエラーが発生した場合、プリンタはデータを正しく処理できず、判読不能な文字を含む多数の用紙を印刷します。この問題を解決するには、次の手順を実行します。

  1. プリンタの動作を停止するために、インクジェットプリンタの場合、すべての用紙を取り除きます。レーザープリンタの場合、用紙トレイを開けます。上位機種のプリンタでは、現在のプリントアウトをキャンセルするボタンを用意していることもあります。

  2. この時点で、印刷ジョブはキューに残っている可能性があります。ジョブがキューから削除されるのは、ジョブ全体をプリンタへ送信した後に限られるからです。lpstat -oまたはlpstat -h cups.example.com -oを使用して、どのキューが現在印刷に使用されているかを確認します。cancel QUEUE-JOBNUMBERまたはcancel -h cups.example.com QUEUE-JOBNUMBERを使用して印刷ジョブを削除します。

  3. 印刷ジョブがすでにキューから削除されているにもかかわらず、一部のデータが依然としてプリンタへ送信され続けることもあります。CUPSバックエンドプロセスが、引き続き該当のキューを対象として動作しているかどうかをチェックし、その処理を終了します。

  4. ある程度の時間にわたって電源をオフにして、プリンタを完全にリセットします。その後、紙を元に戻し、プリンタの電源をオンにします。

24.8.8 CUPSのデバッグ

CUPSの問題を特定するために、次の一般的な手順を実行します。

  1. /etc/cups/cupsd.confLogLevel debugを設定します。

  2. cupsdを停止します。

  3. /var/log/cups/error_log*を削除して、大規模なログファイルから検索を行うことを避けます。

  4. cupsdを開始します。

  5. 問題の原因となったアクションをもう一度実行します。

  6. /var/log/cups/error_log*内のメッセージを確認し、問題の原因を識別します。

24.8.9 詳細情報

SUSE Linux Enterprise Serverでの印刷の詳細については、openSUSE Support Database (https://en.opensuse.org/Portal:Printing)にアクセスしてください。SUSE Knowledgebase (https://www.suse.com/support/)では、さまざまな個別の問題のソリューションが紹介されています。CUPSのテキスト検索機能により関連する記事を見つけてください。