ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Solaris のシステム管理ガイド (印刷) Oracle Solaris 10 1/13 Information Library (日本語) |
1. Oracle Solaris オペレーティングシステムでの印刷の概要
4. Oracle Solaris 印刷マネージャーを使用したプリンタの設定および管理 (タスク)
5. LP 印刷コマンドを使用したプリンタの設定 (タスク)
6. LP 印刷コマンドを使用したプリンタの管理 (タスク)
7. LP 印刷サービスとプリンタのカスタマイズ (タスク)
8. LP 印刷スケジューラの管理および印刷要求の管理 (タスク)
10. 文字セット、フィルタ、フォーム、およびフォントの管理 (タスク)
11. PPD ファイル管理ユーティリティーを使用したプリンタの管理 (タスク)
12. Oracle Solaris オペレーティングシステムでの印刷 (参照情報)
表 7-1 LP 印刷サービスのカスタマイズ (タスクマップ)
|
LP 印刷サービスは、ほとんどのプリンタと印刷ニーズに対応できる十分な柔軟性を持つように設計されていますが、あらゆる状況に対処できるわけではありません。LP 印刷サービスの標準機能では対処できない印刷要求が発生する場合もあります。また、LP 印刷サービスによるプリンタの処理方法に当てはまらないプリンタもあります。
LP 印刷サービスは、次のような方法でカスタマイズできます。
プリンタポートの特性を調整する
terminfo データベースを調整する。
プリンタインタフェースプログラムをカスタマイズする。
印刷フィルタを作成する。
フォームを定義する。
LP 印刷サービスによって設定されるプリンタポート特性には、プリンタの通信設定と互換性がなければなりません。LP 印刷サービスから提供されたデフォルトのプリンタポート設定値がプリンタで機能しない場合は、プリンタのマニュアルを参照し、そのプリンタが LP 印刷サービスに対してどのような設定値が必要かを調べてください。プリンタ通信設定を設定および表示するには、stty コマンドを使用します。
次の表は、LP 印刷サービスが使用するデフォルトの stty 設定値を示しています。
表 7-2 LP 印刷サービスが使用する stty のデフォルト設定値
|
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# lpadmin -p printer-name -o "stty=options"
# lpstat -p printer-name -l
例 7-1 プリンタポート特性を調整する
次の例は、プリンタ luna のポート特性を設定する方法を示しています。parenb オプションはパリティーチェック/生成を使用可能にします。parodd オプションは奇数パリティーの生成を設定します。cs7 オプションは文字サイズを 7 ビットに設定します。
# lpadmin -p luna -o "stty='parenb parodd cs7'"
例 7-2 端末ボーレートを設定する
次の例は、プリンタ venus の端末ボーレートを 19200 に設定する方法を示しています。
# lpadmin -p venus -o "stty=19200"
LP 印刷サービスは、インタフェースプログラムと terminfo データベースを使用して、以下の設定を行います。
選択されたページサイズ
文字ピッチ
行ピッチ
文字セット
各プリンタは、terminfo データベース内で短縮名を使用して識別されます。terminfo データベースで使用される短縮名は、TERM シェル変数を設定するのに使用する名前と同じです。また、この名前はプリンタを設定するときに指定するプリンタタイプでもあります。たとえば、各種の PostScript プリンタのエントリは、/usr/share/lib/terminfo/P ディレクトリに入っています。SunOS ソフトウェアリソースが提供するデフォルトエントリは、PS (PostScript 用) と PSR (Reverse PostScript 用) です。
プリンタの terminfo エントリが見つからなくても、ページサイズ、ピッチ、および文字セットを自動選択しないで、LP 印刷サービスでプリンタを使用できます。ただし、印刷要求ごとに正しいモードでプリンタが設定されないという問題が起きることがあります。
使用するプリンタタイプの terminfo エントリがないが、プリンタを正しいモードに設定しておく場合は、次のいずれかを行います。
プリンタで使用するインタフェースプログラムをカスタマイズする
terminfo データベースにエントリを追加する
terminfo データベース内の端末エントリやプリンタエントリには、多数の項目が入っており、定義されています。しかし、LP 印刷サービスはそのうち 50 未満の項目しか使用しません。プリンタで必要となる terminfo 項目の詳細については、「プリンタに必要な terminfo 項目」を参照してください。
注 - プリンタの terminfo エントリを作成する前に、まず、そのプリンタをサポートする既存の terminfo エントリがないことを確認してください。そのためには、類似するプリンタ用のエントリがあれば、それを使用してプリンタを設定してみてください。
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
/usr/share/lib/terminfo ディレクトリ内のディレクトリには、有効な terminfo エントリがすべて入っています。それを参考にしてプリンタ名を選択してください。
LP 印刷サービスに新しいプリンタを追加するために 表 12-6 エントリ内で定義しなければならない項目については、Table 12–6 を参照してください。terminfo データベースの構造については、terminfo(4) のマニュアルページを参照してください。
新しい terminfo エントリを作成しやすいように、infocmp コマンドを使用して既存の terminfo エントリをファイルに保存します。このコマンドは、作成したいエントリに似た terminfo エントリがある場合に便利です。たとえば、次のコマンドで ps エントリを ps_cust ファイルに保存すると、新しい terminfo エントリになります。
infocmp ps > ps_cust
# tic terminfo_entry
ここで、terminfo-entry 変数は、作成した terminfo エントリファイルです。
標準プリンタインタフェースプログラムでサポートされないプリンタを使用する場合は、独自のプリンタインタフェースプログラムを提供できます。標準プログラムをコピーし、指定したプリンタを使用するように LP 印刷サービスに指示できます。ただし、まず標準プログラムについて理解する必要があります。次のセクションでは、標準プログラムについて説明します。
プリンタインタフェースプログラムは次のタスクを実行します。
必要に応じてプリンタポートを初期化する。標準プリンタインタフェースプログラムは、stty コマンドを使用してプリンタポートを初期化する。
プリンタハードウェアを初期化する。標準プリンタインタフェースプログラムは、terminfo データベースと TERM シェル変数から制御シーケンスを取得する。
必要に応じてバナーページを印刷する。
印刷要求で指定された部数を印刷する。
![]() | 注意 - リリース 3.2 より前の UNIX System V のプリンタインタフェースプログラムでも、多くの場合、SunOS 5.10 または互換 LP 印刷サービスで使用できます。ただし、一部の -o オプションが、SunOS 5.10 または互換 LP 印刷サービスでは標準化されています。これらのオプションは、すべてのプリンタインタフェースプログラムに渡されます。これらのオプションは、古いインタフェースで使用される同じ名前のオプションの妨げとなることがあります。 |
プリンタポートを開く処理は、プリンタインタフェースプログラムではなく LP 印刷サービスが受け持ちます。プリンタポートは標準出力としてプリンタインタフェースプログラムに渡されます。 また、プリンタはプリンタインタフェースプログラムの「制御端末」として識別されるので、ポートが「ハング」すると、プリンタインタフェースプログラムに SIGHUP 信号が送信されます。
標準 (モデル) プリンタインタフェースプログラム は /usr/lib/lp/model/standard です。LP 印刷サービスはこのプログラムを使用し、次の表に示す印刷デフォルトを設定します。
表 7-3 デフォルトのプリンタポート特性
|
ボーレートや出力オプションなどの端末特性を変更する必要がある場合は、標準プリンタインタフェースプログラム内で、次のコメントから始まるセクションを探します。
## Initialize the printer port
詳しくは、「プリンタポート特性の調整」を参照してください。
印刷し終わると、インタフェースプログラムは印刷ジョブのステータスを示すコードを返して終了します。終了コードは、プリンタインタフェースプログラムの最後のエントリです。
次の表は、終了コードとそのコードが LP 印刷サービスでどのように解釈されるかを示しています。
表 7-4 プリンタインタフェースプログラムの終了コード
|
プログラムがコード 129 を返して終了すると、root はプリンタ障害を警告されます。また、LP 印刷サービスは、障害がクリアされた後に要求を最初から印刷し直さなければなりません。要求全体を印刷し直したくない場合は、インタフェースプログラムに障害メッセージを LP 印刷サービスへ送信させることもできます。(まず、障害がクリアされるのを待ちます。) 障害がクリアされると、インタフェースプログラムはファイルの印刷を再開できます。印刷が終了すると、プリンタインタフェースプログラムは障害が発生しなかった場合と同様に終了コード 0 を返すことができます。このアプローチには、次のような利点があります。 障害が自動的にクリアされると、それをインタフェースプログラムが検出できます。このため、管理者がプリンタを再び使用可能にする必要がありません。
lp.tell プログラムを使用すると、LP 印刷サービスに障害メッセージを送信できます。このプログラムは、標準プリンタインタフェースコード内の LPTELL シェル変数によって参照されます。プログラムは標準入力を取り込んで LP 印刷サービスに送信します。LP 印刷サービスは、標準入力をメッセージに入れて、管理者にプリンタ障害を警告します。標準入力が空であれば、lp.tell プログラムは警告を開始しません。lp.tell プログラムの例として、次のコメントの直後の標準プリンタインタフェースコードを確認してください。
# Set up the $LPTELL program to capture fault messages here
特殊な終了コード 129 または lp.tell プログラムを使用すると、プリンタインタフェースプログラムはプリンタ自体を使用不可にする必要がありません。インタフェースプログラムは、プリンタを直接使用不可にすることもできます。しかし、その場合は障害警告メカニズムをオーバーライドします。LP 印刷サービスがプリンタ障害を検出した場合にのみ警告が送信され、特殊終了コードと lp.tell プログラムはその主要検出ツールです。
LP 印刷サービスがいずれかの時点でファイルの印刷を中断しなければならない場合は、TERM 信号 (トラップ番号 15) を使用してインタフェースプログラムを終了させます。詳細は、kill(1) および signal(3C) のマニュアルページを参照してください。プリンタインタフェースプログラムが他の信号を受信して終了した場合、LP 印刷サービスはその後の印刷要求は影響されないものとみなします。その結果、LP 印刷サービスはそのプリンタを使用し続けます。LP 印刷サービスは、要求を依頼したユーザーに、その要求が正常に終了しなかったことを通知します。
インタフェースが最初に呼び出されると、信号 HUP、INT、QUIT、PIPE (トラップ番号 1、2、3、13) は無視されます。標準インタフェースは、信号が適切な時期にトラップされるように、このデフォルト動作を変更します。標準インタフェースは、これらの信号の受信をプリンタの問題を示す警告として解釈します。標準インタフェースは、信号を受信すると障害警告を発します。
カスタマイズされたプリンタインタフェースプログラムを作成し、印刷サーバー上で標準プリンタインタフェースプログラムの代わりに使用できます。そのためには、lpadmin コマンドを使用して、プログラムを特定のプリンタの LP 印刷サービスに登録します。
# cp /var/spool/lp/model/standard custom-interface
詳しくは、「標準プリンタインタフェースプログラム」のプログラムの説明を参照して、何を変更する必要があるかを判断してください。
# lpadmin -p printer-name -i custom-interface
独自のプリンタインタフェースプログラムを使用するプリンタ名を指定する
独自のプリンタインタフェースプログラム名
独自のプリンタインタフェースプログラムが LP 印刷サービスに登録され、ユーザーが印刷要求を出すと、そのプリンタに使用されます。
例 7-3 独自のプリンタインタフェースプログラムを設定する
次の例は、プリンタ luna の独自のプリンタインタフェースプログラム custom を設定する方法を示しています。
# lpadmin -p luna -i custom
例 7-4 独自のプリンタインタフェースプログラムをコピーする
次の例は、プリンタ venus からプリンタ asteroid に独自のプリンタインタフェースプログラムをコピーする方法を示しています。
# lpadmin -p asteroid -e venus