目次
openSUSE® では、ネットワークプリンタを含む多種のプリンタに対応して います。プリンタは手動で設定することもできますし、 YaST から設定することも できます。設定方法については 項 「プリンタの設定」 (第2章 YaST を利用したハードウエアコンポーネントの設定, ↑スタートアップ) をお読みください。 また、印刷ジョブの管理にはグラフィカルなユーティリティと、コマンドラインから 実行可能なユーティリティの 2 種類があります。プリンタがうまく動作しない場合は、 11.7項 「トラブルシューティング」 をお読みください。
openSUSE では CUPS (Common Unix Printing System) を標準印刷システムと しています。
プリンタは USB やネットワークなどのインターフェイスのほか、プリンタの言語に よっても区別を行ないます。プリンタをご購入の際は、プリンタがどのような インターフェイス (USB やパラレルポートなど) を持っているのかと、その インターフェイスがお使いのハードウエアで利用可能なものであるかどうか、 およびプリンタが使用する言語についても、あらかじめご確認ください。 プリンタは下記のような 3 種類の言語に分類されます:
PostScript は多くの Linux および UNIX システムが生成するプリンタ言語で、 印刷システム内部の印刷システムで処理されるものです。プリンタ側で PostScript 文書を直接処理でき、かつ印刷システムで特別な処理が必要でない場合は、 潜在的なエラー要因を減らすこともできます。
これらのプリンタ言語はかなり古いものですが、今でもなおプリンタに 対する新しい機能を追加しながら今に至っています。言語が既知のプリンタ言語で あった場合は、 Ghostscript の助けを借りて PostScript ジョブをそれぞれの 言語に変換することができます。処理作業は逐次翻訳 (インタプリタ) とも 呼ばれます。最もよく知られた言語は、 PCL (HP 社製のプリンタやそれらの 類似製品などで使用されています) と ESC/P (エプソン社製のプリンタで 使用されています) です。これらのプリンタ言語は一般に Linux に対応して いて、十分な品質の印刷を行なうことができます。ただし Linux では特別な プリンタ機能を利用することができない場合もあります。 HPLIP (HP Linux Imaging and Printing) を開発している HP 社を除き、現時点では Linux 向けのドライバを開発し、オープンソースのライセンスで Linux ディストリビュータに提供している製造元はありません。
これらのプリンタは、汎用的なプリンタ言語に一切対応していません。 これらは非公開の独自プリンタ言語を使用していて、新しいプリンタモデルが 販売される際に変更されることがあります。一般に Windows 用のドライバのみ が公開されています。詳しくは 11.7.1項 「標準プリンタ言語に対応していないプリンタ」 を お読みください。
新しいプリンタをお買い上げの前に、下記の情報をお読みのうえ、ご希望のプリンタが どの程度 Linux に対応しているかをご確認ください:
プリンタデータベースを公開している OpenPrinting のホームページです。 データベースでは最新の Linux 対応状況が公開されています。ただし、 Linux ディストリビューションには製品を公開した時点のドライバしか 含まれていないため、 「perfectly supported」 (完全対応) と明記されたプリンタであっても、それが openSUSE の対応状況とは 一致しない場合があります。そのため、このデータベースは参考情報として ご覧ください。
Ghostscript の Web ページです。
/usr/share/doc/packages/ghostscript-library/catalog.devices
同梱ドライバの一覧です。
ユーザは印刷ジョブを作成します。印刷ジョブには印刷するデータそのもののほか、 プリンタの名前や印刷キューの名前、さらにオプションでフィルタの情報やプリンタ 固有の設定など、スプーラに対する情報も付加されています。
少なくともそれぞれのプリンタには、専用の印刷キューが存在していなければ なりません。またスプーラは、目的のプリンタがデータを受信できるように なるまで、印刷ジョブを保持します。プリンタの準備ができると、スプーラは フィルタを通してデータを送信し、応答を受信します。
一方のフィルタは、それぞれのアプリケーションが生成したデータ (一般的には PostScript や PDF 、その他にも ASCII, JPEG などである場合もあります) を、 印刷用 (PostScript, PCL, ESC/P など) に変換する機能を備えています。 プリンタの機能は PPD ファイル内に定義します。 PPD ファイルには、それぞれ のプリンタで必要な機能を有効化するための、プリンタ固有のオプション設定と パラメータが書かれています。また、フィルタシステムではユーザ側で選択した オプションについても有効化を行ないます。
PostScript プリンタをお使いの場合、フィルタシステムはデータをプリンタ固有の PostScript に変換します。この場合にはプリンタドライバは必要になりません。 PostScript 以外のプリンタをお使いの場合は、フィルタはプリンタ固有のデータに 変換します。この場合はお使いのプリンタに合わせた適切なドライバを用意する 必要があります。バックエンド側ではプリンタ固有のデータを受け取り、プリンタ に対してデータを送信します。
お使いのシステムにプリンタを接続するには、いくつかの方法があります。 CUPS 印刷システムでは、ローカルプリンタとネットワーク接続のプリンタとの 区別は行ないません。 プリンタの接続方法について より詳しい情報は、サポートデータベース内の CUPS in a Nutshell 記事 (http://old-en.opensuse.org/SDB:CUPS_in_a_Nutshell (英語)) をお読みください。
![]() | 稼働中のシステムにおけるケーブル接続の変更 |
|---|---|
お使いのマシンにプリンタを接続する場合は、 USB 接続の場合にのみ、稼働中の 取り付け/取り外しに対応することにご注意ください。 USB 接続以外の環境で お使いの場合は、システムやプリンタに障害を起こさないようにするため、 接続を変更する際にはシステムをシャットダウンしてから行なってください。 | |
PPD は解像度やその他のオプション、たとえば両面印刷機能などを定義する コンピュータ言語です。これらの定義ファイルは、 CUPS で様々な印刷オプションを 使用する際に必要となる者です。 PPD ファイル無しの状態では、印刷データは 「未加工の」 状態でそのままプリンタに送信されてしまいます。 openSUSE をインストールすると、それに合わせて多くの PPD ファイルもインストール されます。
PostScript プリンタを設定する最もよいアプローチは、適切な PPD ファイルを
取得することです。標準インストールを行なうことでインストールされるパッケージ
manufacturer-PPDs には、多くの PPD ファイルが
含まれています。詳しくは 11.6.2項 「様々なパッケージ内にある PPD ファイル」 と
11.7.2項 「PostScript プリンタで適切な PPD ファイルが見つからない場合」 をお読みください。
新しい PPD ファイルは /usr/share/cups/model/ ディレクトリに
保管することができるほか、 YaST から印刷システムに追加することもできます。
詳しくは 項 「YaST を利用したドライバの追加」 (第2章 YaST を利用したハードウエアコンポーネントの設定, ↑スタートアップ)) をお読みください)。
PPD ファイルのインストールを行なうと、印刷システムから選択を行なうことが
できるようになります。
なお、ソフトウエアパッケージ全体のインストールを求められた場合にはご注意ください。 第一にこの種類のインストール作業は openSUSE のサポート対象外に なってしまうほか、印刷コマンドが異なる動作をすることになるため、 他の製造元のデバイスに対してアクセスできなくなってしまう可能性があります。 そのため、製造元が提供するソフトウエアをインストールすることはお勧めできません。
ネットワークプリンタでは様々なプロトコルを利用することができます。これらは 場合によっては、複数を同時に使用することもできます。対応しているほとんどの プロトコルは標準化されていますが、製造元によっては標準から外れた実装をしている 場合もあり、この場合はごく少数のオペレーティングシステムに対してだけドライバを 提供していたりすることがあります。このような場合には、不幸にも Linux の ドライバはほとんど提供されていません。従って、 Linux で全てのプロトコルが うまく動作するとは言い切れないのが現状です。そのため、うまく動作する設定を見つける ため、様々なオプションを試してみる必要があるかもしれません。
CUPS は ソケット,
LPD, IPP,
smb の各プロトコルに対応しています。
ソケット とは、確立された TCP のソケットに対して
印刷データをありのまま送信することを言います。ソケットポートとして一般的に
使用されるポートとしては、 9100 や 35
などがあります。デバイス URI (Uniform Resource Identifier; 統一資源識別子)
の書式は、
socket://プリンタの IP アドレス:ポート
となります。たとえば、 socket://192.168.2.202:9100/ のようになります。
LPD プロトコルは、 RFC 1179 で規定されています。
このプロトコルでは、印刷キューの ID などのいくつかのジョブ関連データ
が、実際の印刷データの前に送信されます。そのため、データ転送用に
LPD プロトコルを設定する際には、あらかじめ印刷キューを指定しておかなければ
なりません。異なるプリンタ製造元の実装でも、印刷キューに任意の名前を
設定できるほど柔軟な仕組みになっています。また場合によっては、印刷キューの
名前が固定されている場合もあります。 LPT, LPT1, LP1 などの名前がよく
使用されます。 LPD サービスが使用するポート番号は
515 です。たとえばデバイス URI は、
lpd://192.168.2.202/LPT1 のようになります。
IPP は比較的新しい (1999 年) HTTP ベースのプロトコルです。
IPP を使用すると、他のプロトコルに比べてより多いジョブ関連のデータが
送信されます。 CUPS は内部のデータ転送に IPP を使用しています。
なお、 IPP を設定するためには印刷キューの名前を指定する必要があります。
IPP が使用するポート番号は 631 です。たとえばデバイス
URI は、 ipp://192.168.2.202/ps や
ipp://192.168.2.202/printers/ps のようになります。
もちろん 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 printerIPCUPS は 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-PPPD ファイル-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 から既定の オプションを変更することもできます。コマンドラインツールの場合は 下記のようにして既定のオプションを設定してください:
まずは全てのオプションを表示します:
lpoptions -p queue -l例:
Resolution/Output Resolution: 150dpi *300dpi 600dpi
設定されている既定のオプション選択は、アスタリスク (*)
で表示されます。
lpadmin を利用してオプションを変更します:
lpadmin -p queue -o Resolution=600dpi新しい設定を確認します:
lpoptions -p queue -l
Resolution/Output Resolution: 150dpi 300dpi *600dpi
通常のユーザから lpoptions を実行すると、設定は
~/.cups/lpoptions に書き込まれます。
root から実行した場合、
設定は /etc/cups/lpoptions に書き込まれます。
コマンドラインから印刷を行なうには、 lp -d
キュー名
ファイル名 のようにして実行してください。
キュー名 と ファイル名
は、それぞれの名前に置き換えてください。
また、アプリケーションによっては、印刷に際して lp コマンド
に依存している場合があります。この場合はアプリケーションの印刷ダイアログから、
ファイル名 を指定せずにコマンドを入力してください。
たとえば lp -d キュー名 の
ようになります。
CUPS での様々な機能が openSUSE に搭載されています。ここでは、 それらの機能のうち重要なものをいくつか紹介します。
openSUSE を特に何も指定せずにインストールすると、SuSEfirewall2 が
有効化され、ネットワークインターフェイスは外部から到達する要求を
ブロックする 外部ゾーン として設定されます。
SUSEfirewall2 の設定について、詳しくは
項 「SuSEfirewall2」 (第14章 Masquerading and Firewalls, ↑セキュリティガイド) と
http://ja.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings (日本語)
http://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings (英語)
をお読みください。
通常 CUPS クライアントは、ファイアウオールの内側にある信頼済みネットワーク
環境内のワークステーションで動作します。この場合、ネットワーク
インターフェイスを 内部ゾーン に設定し、ネットワーク内で
ワークステーションを利用できるようにすることをお勧めします。
CUPS サーバがファイアウオールで保護されている信頼済みネットワーク環境内で
動作している場合、ネットワークインターフェイスは 内部ゾーン
に設定しておく必要があります。ただし、特別なファイアウオールのルールを
設定して CUPS の設定内でも機密を守る設定をしていない限り、信頼の置けない
ネットワーク環境下で CUPS サーバを設定すべきではありません。
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
パッケージ内に存在していない場合) 。
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
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) が書かれているドライバを選択します。
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
と書かれている行が存在します。
manufacturer-PPDs パッケージ内にあるプリンタの製造元が提供する PPD ファイル¶
manufacturer-PPDs パッケージには、プリンタの
製造元から自由なライセンスの元で提供されている PPD ファイルが含まれています。
PostScript プリンタの場合、プリンタの製造元が提供する適切な PPD
ファイルを利用することで、プリンタに備わっている全ての機能を利用できる
ようになるため、製造元提供の PPD ファイルで設定するのがお勧めです。
YaST は manufacturer-PPDs が提供する PPD
ファイルを優先的に使用しますが、モデル名が一致していない場合には
利用することができません。これは manufacturer-PPDs
パッケージ内の PPD ファイルに、似通った型式のうち 1 つしか記述していない
(たとえば "Funprinter 12xx シリーズ" のように) 場合に発生します。
この場合は、 YaST を利用して手動で PPD ファイルを選択してください。
本章では、プリンタのハードウエアおよびソフトウエア上で最もよく発生する 問題について、その解決方法や回避策を掲載しています。本章で扱っている分野と しては、 GDI プリンタや PPD ファイル、ポートの設定などがあります。また、 一般的なネットワークプリンタの問題や印刷がおかしくなる問題、キューの処理に 関する問題についても対応しています。
これらのプリンタは汎用プリンタ言語には全く対応しておらず、特別な非公開 コントロール言語だけに対応しています。そのためこれらのプリンタは、製造元が 公開するドライバに対応したオペレーティングシステムでのみ動作します。 GDI は Microsoft がグラフィックデバイス向けに開発したプログラミング インターフェイスで、プリンタデバイス向けの Windows ドライバは、これを 利用して作成します。製造元が Windows に対応したドライバしか公開しない ことから、それらのプリンタを GDI プリンタ と呼びます。 実際の問題はプログラミングインターフェイスではなく、そのプリンタの型番に 対応した非公開のプリンタ言語でしかアクセスできない、という点です。
GDI プリンタによっては GDI モードと標準プリンタ言語モードを切り替えることが できるものがあります。まずはお使いのプリンタのマニュアルをお読みのうえ、 そのような切り替えに対応できるかどうかをご確認ください。また、型式に よっては特別な Windows ソフトウエアで切り替えることができるものもあります (ただし Windows 側のプリンタドライバを利用して印刷する際、常に GDI モードに切り替えてしまうような場合もあります) 。それ以外にも、 拡張モジュールで標準プリンタ言語が利用できるプリンタもあります。
また、製造元によってはそれらのプリンタに対応したプロプライエタリ (非公開) なドライバを公開している場合もあります。プロプライエタリなドライバの 欠点は、インストール済みのシステムで動作するのかどうかや、様々なハードウエア プラットフォーム上で動作するものかどうかが保証されていない点です。 逆に、標準プリンタ言語に対応したプリンタは、特定の印刷システムのバージョンや 特別なハードウエアプラットフォームに依存していたりはしません。
プロプライエタリな Linux ドライバを動かすために時間を費やすくらいであれば、 標準言語に対応したプリンタ (おそらくは PostScript) を購入してしまったほうが、 コスト面でより有利になるかもしれません。これはドライバの問題をいっぺんに解決し、 特別なドライバソフトウエアのインストールや設定の要件から解放されるだけでなく、 印刷システムが更新されたことによるドライバ側の更新作業も不要になります。
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 ファイルを提供するよう、プリンタの
製造元に問い合わせてください。
最も安全なアプローチは、プリンタを 1 基目のパラレルポートに接続し、 BIOS 側でパラレルポートの設定を下記のような設定にするのが適切です:
I/O アドレス: 378 (hexadecimal)
割り込み: (任意)
モード: 通常, SPP,
出力のみ のいずれか。
DMA: 無効
上記の設定を行なったにもかかわらずパラレルポート上のプリンタがうまく
動作しない場合は、 BIOS 側に設定した I/O アドレスを 0x378
のような形で /etc/modprobe.conf 内に設定してください。
なお、 2 基のパラレルポートが存在する場合、アドレスが 378 と
278 (それぞれ 16 進) であれば 0x378,0x278
のように指定してください。
また、割り込み 7 があいている場合は、
例11.1「/etc/modprobe.conf: 1 基目のパラレルポート用割り込みモード設定」 のように設定することで、
割り込みを有効にすることができます。割り込みモードを有効にする前に
/proc/interrupts ファイルを確認し、その割り込みが
使用されていないことを確認してください。左記のファイルでは、使用中の割り込み
だけが表示されます。また、左記のファイルは利用中のハードウエアコンポーネント
によって表示が異なります。パラレルポートの場合、他のデバイスから使用されて
いてはいけません。うまく動作しない場合は、 irq=none
のように指定し、ポーリングモードでご利用ください。
例11.1 /etc/modprobe.conf: 1 基目のパラレルポート用割り込みモード設定¶
alias parport_lowlevel parport_pc options parport_pc io=0x378 irq=7
まずはお使いのコンピュータに直接プリンタを接続します。テストのため、 ローカルプリンタとしてプリンタを設定してみます。これで問題なく動作する ようであれば、問題はプリンタ側にあることになります。
TCP/IP ネットワークと名前解決が正しく動作するかどうかを確認します。
下記のコマンドでは、 ホスト 上にある
lpd (ポート 515) に対して、 TCP の
接続テストを行ないます:
netcat -z ホスト 515 && echo ok || echo failedlpd との接続がうまくいかない場合は、 lpd が動作していないか、基本的なネットワーク部分に 問題があることになります。
さらに root ユーザから
下記のコマンドを実行し、 ホスト 上の
キュー に対して (多くの場合、とても長い)
ステータスレポートを要求します。これにより、
lpd が動作しているかどうかと、ホストが問い合わせを
受け付けるかどうかを確認することができます:
echo -e "\004キュー" \
| netcat -w 2 -p 722 ホスト 515
lpd が何も応答を返さなかった場合は、
lpd が動作していないか、基本的なネットワーク部分に
問題があることになります。 lpd が応答を返した場合は、
出力された情報の中に ホスト 上の
キュー が、なぜ利用できないのかを表示します。
たとえば 例11.2「lpd からのエラーメッセージ」 のような応答が返された場合は、
リモート側の lpd に問題があることになります。
例11.2 lpd からのエラーメッセージ¶
lpd: your host does not have line printer access lpd: queue does not exist printer: spooling disabled printer: printing disabled
既定の設定では CUPS のネットワークサーバはそのキュー情報を 30 秒
おきに UDP ポート 631 でブロードキャストします。
そのため下記のコマンドを利用すると、ネットワーク内に CUPS ネットワーク
サーバが存在するかどうかを確認することができます。ただし、ローカル側の
CUPS デーモンについては、コマンドを実行する前に停止しておいてください:
netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID
CUPS のブロードキャストパケットを送信するサーバが存在する場合、 例11.3「CUPS ネットワークサーバからのブロードキャスト」 ように出力されます。
さらに、下記のコマンドでは ホスト 上にある
cupsd (ポート 631) に対して、 TCP の
接続テストを行ないます:
netcat -z ホスト 631 && echo ok || echo failed
cupsd との接続がうまくいかない場合は、
cupsd が動作していないか、基本的なネットワーク部分に
問題があることになります。
さらに lpstat -h ホスト -l -t
を実行すると、 ホスト 上の全てのキューに対する
(多くの場合、とても長い) ステータスレポートを要求します。これにより、
cupsd が動作しているかどうかと、ホストが問い合わせを
受け付けるかどうかを確認することができます。
また、次のコマンドは ホスト 上の
キュー に対して、単一の改行コードだけから成る
印刷キューを受け付けるかどうかをテストすることができます。
何も印刷されず、単に空白のページだけが出力されるはずです。
echo -en "\r" \
| lp -d キュー -h ホストプリントサーバ内で動作しているスプール機能は、複数の印刷ジョブを 取り扱うような場合に問題が発生する場合があります。このような問題は プリントサーバ内のスプール機能によって引き起こされている問題で あるため、解決するための手段は存在しません。ただし、プリントサーバの スプール機能に接続されているプリンタに対し、直接 TCP 接続を行なう ことで回避することができます。詳しくは 11.4項 「ネットワークプリンタ」 をお読みください。
この方法では、プリントサーバは様々なデータ転送手段 (TCP/IP ネットワークと
ローカルプリンタ接続) 間でのコンバータとして動作するようになります。
この方法を利用するには、プリントサーバ内で使用する TCP ポートを知って
おく必要があります。プリンタがプリントサーバに接続されていて電源が入って
いる場合、プリントサーバの電源を入れてからしばらくしてから、
TCP ポートを nmap パッケージに
含まれる nmap ユーティリティで判別することが
できます。 nmap IP アドレス
のように入力すると、プリントサーバに対する下記のような出力が
表示されます:
Port State Service 23/tcp open telnet 80/tcp open http 515/tcp open printer 631/tcp open cups 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 アドレス) (ポート)
印刷システムでは、印刷ジョブは CUPS のバックエンドが送信先 (プリンタ) に送信し終わった時点で完了します。受け取り側での処理作業で何らかの問題が 発生した場合 (たとえばプリンタ固有のデータを印刷できない場合) は、 印刷システム側からそれを検知する手段がありません。お使いのプリンタが プリンタ固有のデータを印刷できない場合は、そのプリンタに対するより適切な PPD ファイルを選択してください。
何回かの試行を行なっても送信先へのデータ送信が完了しない場合、
USB や ソケット などの CUPS
バックエンドは印刷システム (cupsd) に対してエラーを
報告します。バックエンド側ではデータ転送を何回行なったら失敗と見なすかを
判断しています。さらなる再試行が無駄であると判断した場合、
cupsd はそのキューに対する印刷を停止します。
問題の原因を解決したら、システム管理者は cupsenable
コマンドを利用した印刷を再開しなければなりません。
CUPS ネットワークサーバが自身のキューをクライアントに対してブロード キャストで通知し、クライアント側での cupsd が動作 している場合は、クライアント側の cupsd は アプリケーションからの印刷ジョブを受け入れ、サーバ側の cupsd に転送を行ないます。サーバ側の cupsd で印刷ジョブが受け付けられると、新しいジョブ番号が割り当てられます。 そのためクライアント側でのジョブ番号は、サーバ側でのジョブ番号とは 異なる番号になります。また、印刷ジョブは通常すぐに転送されるように なっていて、クライアント側の cupsd は、印刷ジョブを サーバ側の cupsd に転送が完了すると印刷完了であると 見なす仕組みになっているため、クライアント側でジョブ番号を削除すること ができません。
サーバ側で印刷ジョブを削除する必要がある場合、まずはサーバ側での ジョブ番号を調べるため、 lpstat -h cups.example.com -o のようなコマンドをご利用ください。このコマンドは未完了の印刷ジョブ の一覧を表示します。ジョブ番号が判明したら、下記のコマンドで削除を 行なってください:
cancel -h cups.example.comキュー-ジョブ番号
印刷処理中にプリンタの電源を落としたり、コンピュータをシャットダウン したりした場合は、印刷ジョブがキュー内に残ったままになっています。 印刷処理はコンピュータ (またはプリンタ) の電源が復帰した後に再開されます。 不要な印刷ジョブや間違った印刷ジョブは、 cancel コマンドでキューから削除しなければなりません。
また、印刷ジョブが正しい形式ではなかったり、ホストとプリンタの間での 通信にエラーが発生したりした場合は、プリンタはデータを正しく処理できず、 何枚もの正しくない出力をしてしまう場合があります。このような現象が発生 した場合は、下記の手順で修復してください:
印刷を停止するため、インクジェットプリンタの場合は全ての紙を取り除き、 レーザープリンタの場合は用紙トレイを開けます。また、高品質なプリンタで あれば、現在の印刷処理をキャンセルするためのボタンが用意されている 場合もあります。
ジョブはプリンタへの送信が全て完了した場合にのみ削除される仕組みであるため、
印刷ジョブがキュー内に残っている場合があります。 lpstat
-o や lpstat -h cups.example.com -o などのコマンドを
利用して、現在のキューが印刷中であるかどうかを確認してください。
印刷中の場合は、 cancel
キュー-ジョブ番号
または cancel -h cups.example.com
キュー-ジョブ番号
を利用して、キューを削除してください。
また、キューから印刷ジョブを削除しても、プリンタに対するデータが少し 残っている場合があります。該当するキューに対する CUPS バックエンドプロセスが 起動中かどうかを確認し、起動中であれば終了させてください。 たとえばパラレルポートに接続されているプリンタの場合、 fuser -k /dev/lp0 コマンドを実行すると、未だプリンタ (より厳密に言えばパラレルポート) に対してデータを送信しているプロセスを 終了させることができます。
電源を落としてしばらく待ち、完全にリセットします。 再度用紙を配置し、プリンタの電源を入れてください。
CUPS 印刷システムの問題を切り分けるためには、下記の汎用手順をご利用ください:
/etc/cups/cupsd.conf ファイル内に
LogLevel debug を設定します。
cupsd を停止します。
巨大なログファイルを検索したりすることのないよう、
/var/log/cups/error_log* ファイルを削除します。
cupsd を起動します。
問題を再現させます。
/var/log/cups/error_log* ファイルを確認し、
問題の原因を調査します。
多くの固有の問題は、 SUSE のサポートデータベース
(http://en.opensuse.org/Portal:Support_database) (日本語)
または
(http://en.opensuse.org/Portal:Support_database) (英語)
内に書かれています。プリンタ関連の問題の場合は、テキスト検索で
SDB:CUPS と入力してください。