BigAdmin System Administration Portal
特集記事: 優先ネットワーク印刷プロトコルとしての IPP の使用
Print-friendly VersionPrint-friendly Version

優先ネットワーク印刷プロトコルとしての IPP の使用

執筆者: Juanita Heieck (2006 年 11 月)

要約

この記事では、最初に Internet Printing Protocol (IPP) について説明し、Solaris オペレーティングシステム (Solaris OS) で優先ネットワーク印刷プロトコルとして IPP を使用する方法について説明します。IPP のサポートは、CUPS クライアントおよび Microsoft Windows クライアントの両方との相互運用性を容易にするために、Solaris 印刷システムに最近加えられた変更の 1 つです。また、FSG OpenPrinting Open Standard Print API (PAPI) 版の IPP 実装についても取り上げます。この実装では、サーバー側とクライアント側の両方がサポートされ、既存の Solaris クライアント印刷コマンドを使用できるほか、このテクノロジを使用するためのヒントも用意されています。


目次
  • はじめに
  • Solaris 印刷システムのアーキテクチャー
  • IPP の概要
  • Solaris OS での IPP サポートの詳細
  • IPP ネットワークサービスの無効化と有効化
  • IPP のサーバーおよびクライアントデータの設定
  • IPP を使用した印刷
  • Solaris の印刷機能の今後

はじめに

Solaris OS での印刷は lp コマンドがすべてだと思われている方は、その考えをお改めください。Solaris の印刷機能は全速力で前進しており、「大海原」に乗り出しています。いまや、Solaris OS での印刷機能の重要な開発フェーズが完了しつつあります。Solaris 10 OS で開始されたいくつかの変更の締めくくりは、IPP のサーバー側サポートの改善、IPP のクライアント側サポートの実装、および Open Standard Print API 上でのアプリケーションの多層化です。Solaris OS での PAPI 実装では、印刷サービスとプロトコルには依存しないインタフェースの上で使用できる印刷コマンドが用意されています。

また、Solaris の印刷コマンドのクライアント実装は、PAPI 版では書き直されています。現在使用可能な PAPI サポートでは、これらのコマンド実装は RFC-1179 および IPP ベースのサーバーで使用できます。プリンタ、サーバー、およびジョブの属性が、ジョブ送信とプリンタへのクエリーでサポートされているので、アプリケーションと印刷コマンド自体の両方を備えた印刷クライアントが、プリンタの特性を印刷システムに照会したり、この情報を要求したりすることができます。これらすべての変更が行われたことが、IPP を、Solaris で優先されるネットワーク印刷プロトコルにしています。これら最近行われた変更の一部は、Solaris Express 8/06 リリースで導入されました。

新しい印刷機能および Solaris OS での印刷の詳細は、http://docs.sun.com/app/docs にあるシステム管理コレクションの『System Administration Guide: Advanced Administration』を参照してください。


Solaris 印刷システムのアーキテクチャー

次のブロック図は、Solaris 印刷システムのアーキテクチャーの概要を示したものです。

図 1 IPP の使用法

図 1
(クリックすると画像が拡大)


IPP の概要

IPP は、フル機能を備えたネットワーク印刷プロトコルであり、急速に業界標準となりつつあります。よく使用されるネットワーク印刷サービスがすべて用意されています。このプロトコルは、インターネットからドキュメントを印刷するための世界共通のソリューションを提供するために策定されました。IPP は、多種多様な標準的要求の実行と印刷クライアントシステムからの標準的な応答の受信に必要なツールをすべて備えているので、複数のシステムベンダーおよびプリンタベンダーによって採用されています。ジョブおよびプリンタの状態検索の大幅な改善を含む機能が強化されたことに加えて、バージョン管理、拡張性、およびセキュリティー機能も備わっています。

印刷クライアントは、IPP でサポートされる性能、機能、およびパラメータをプリンタに照会できるようになるので、各印刷ジョブに適したプリンタを選択できます。プリンタの性能の把握、印刷ジョブの送信、プリンタや印刷ジョブの状態の確認、以前送信された印刷ジョブの取り消しを行えます。また、印刷ジョブの保留、解放、再開または変更に加えて、待ち行列間での印刷ジョブの移動、ならびに印刷待ち行列の受付、却下、有効化、および無効化ができます。さらに、プリンタの変更や削除、およびほかにもたくさんの操作を実行できます。

フロントエンドでは、IPP は、HTTP/1.1 の上位層になります。サーバーは、HTTP POST 要求によって IPP 操作を受信します。サーバーは、受信後、要求された操作を実行し、応答を HTTP 経由でクライアントに返信します。要求される操作には、印刷ジョブの送信と取り消しをはじめ、プリンタ、1 つの印刷ジョブ、またはプリンタ待ち行列に入れられたすべての印刷ジョブの属性の照会などがあります。バックエンドでは、IPP リスナーが印刷スプーラと通信することによって操作を実行します。Solaris OS では、現在、lpsched デーモンがこのスプーラです。

IPP を使用する理由

IPP は、ローカルで使用して室内で印刷ジョブをプリンタに送信したり、インターネットで使用して国内外で印刷ジョブをプリンタに送信したりできるプロトコルです。IPP は、この事実に加えてアクセス制御、認証、および暗号化もサポートしているという点で比類がなく、このことにより、性能とセキュリティーの点で追随を許さない印刷ソリューションとなっています。

IPP を Solaris OS に実装する理由は、次の 3 つです。

  1. LPD ワイヤープロトコルで使用できる機能は、十分ではあるものの、基本レベルを超えた機能、拡張性、セキュリティー、および相互運用性を備えていません。IPP は、性能と機能がより高パフォーマンスで豊富なので、LPD ワイヤープロトコルよりも好まれるプロトコルです。
  2. プリンタと印刷サービスを提供する企業のほとんどが、主要印刷プロトコルとして IPP を使用し始めています。このため、Sun は、この印刷ソリューションを顧客に提供することによって、他社と競合しながらも協力することになります。
  3. IPP は急速に業界共通の標準となりつつあるプロトコルなので、顧客は Solaris サーバーに出力したり Solaris サーバーからほかの各種プラットフォームおよびオペレーティングシステムに出力したりできます。

IPP と BSD プロトコル (RFC-1179) との比較

BSD プロトコルは、何十年もの間デファクトスタンダードのネットワーク印刷プロトコルとして使用されてきました。BSD プロトコルは、もともと非常に限られた範囲の操作を実行するように設計されています。そのため状態情報の共通の表現方法がなく、また非常に基本的な印刷ジョブオプションしか用意されていません。これに対し、IPP のデザインには、BSD プロトコルにはない機能の多くがあります。すなわち、多種多様な操作を実行できます。これらの操作では、共通表現および符号化を使用することによって、中心的な共通属性のセットを利用します。また、このプロトコルを使用すると、クライアントとサーバー間で暗号化と認証を使用できます。さらに、IPP は、下位互換性と相互運用性を維持しながら、操作と属性を拡張する手段となります。

コンポーネントの内訳

Solaris OS で使用可能な IPP サポートの基本コンポーネントは、次のとおりです。各コンポーネントの詳細は後述します。

Solaris OS で使用可能な IPP サポート
コンポーネント
機能
httpd
Apache Web サーバー。 このコンポーネントは、IANA に登録されている IPP ポート である tcp/631 で HTTP 要求に対して待機する HTTP トランスポートリスナーを提供します。要求は、受信されると、IPP Apache モジュールに渡されます。
mod_ipp.so
Apache IPP モジュール。この Apache モジュールは、クライアントの HTTP 要求をチェックして、IPP 要求 (HTTP POST 操作で、MIME タイプが application/ipp) かどうかを判定します。IPP 要求であると判定されると、その要求は、IPP リスナーライブラリに渡されます。また、このモジュールは IPP 固有の Apache 設定指示も読み込んで処理します。
libipp-listener.so
IPP リスナーライブラリ。このライブラリは、コアの IPP 整列化ライブラリを利用して、IPP 要求を復号化し、IPP 操作実装関数の 1 つに振り分けます。これらの関数は、IPP 要求を PAPI 呼び出しに変換し、ローカルの印刷サービスと対話します。リスナーライブラリは処理後、結果を符号化して、要求元のクライアントに送り返します。
libipp-core.so
IPP 整列化ライブラリは、ワイヤ上での通信のために IPP バイトストリームを復号化および符号化します。
libpapi.so
PAPI ライブラリは、IPP Listening サービスのようなアプリケーションに、印刷サービスと対話する手段を提供します。
 
Solaris OS での IPP サポートの詳細

Solaris の IPP サポートは、クライアント側のサポートとサーバー側のサポートに分けられます。クライアント側のサポートとサーバー側のサポートでは、クライアント操作またはサーバー操作のそれぞれに固有の要素だけでなく、両者に共通の要素もいくつか使用されます。このため、IPP のクライアントとサーバーコンポーネントは、これらの共通要素を実装したコードベースを共用することになります。

IPP のクライアント側サポート

Solaris OS の IPP のクライアント側サポートは、PAPI で実装されます。このサポートにより、PAPI を使用しているすべてのアプリケーションは、ほかの印刷サービスやプロトコルに加えて、IPP を使用できます。

このようなアプリケーションには次のものがあります。

  • GNOME デスクトップ環境 - libgnomeprint を使用するアプリケーション
  • BSD コマンド - BSD UNIX LPD 印刷サービスコマンド
    • lpr
    • lpq
    • lprm
    • lpc
  • LP コマンド - System V UNIX LP 印刷サービスコマンド
    • lp
    • lpstat
    • cancel
    • lpmove
    • accept
    • reject
    • enable
    • disable

アプリケーションのクライアント側 IPP サポートは、ロード可能モジュール psm-ipp.so を通して提供されます。このモジュールは、処理されているプリンタまたはジョブの printer-uri に基づいて、実行時にロードされます。

IPP は、HTTP トランスポートの上位層になるので、クライアント側とサーバー側の両方のサポートには HTTP プロトコルを読み書きする機能が必要となります。サーバー側では、このサポートは Apache Web サーバーによって提供されます。クライアント側では、このサポートは HTTP ライブラリ libhttp-core.so によって提供されます。

IPP のサーバー側サポート

IPP 待機サービスが、印刷クライアントシステムを可能にする IPP ネットワークプロトコルサービスに、IPP リスナーを実行しているシステム上の印刷サービスと対話する手段を提供します。このリスナーは、IPP プロトコルのサーバー側サポートを実現し、多種多様の標準的な操作と属性を使用できます。リスナーは、Solaris で、Apache モジュールおよび、IPP 操作とワイヤ通信をサポートする一連の共用ライブラリとして実装されます。IPP ソフトウェアスタックは、Solaris OS のインストール時にインストールされます。この待機サービスは、実行される印刷サービスに依存する SMF サービスです。この結果、最初の印刷待ち行列が追加されると、印刷サーバー上で IPP が自動的に有効化されます。また、最後の印刷待ち行列が削除されると、IPP は無効化されます。

待機サービスの実装は、Apache Web サーバーに組み込まれています。Web サーバーは、HTTP POST 要求によって IPP 操作を受信します。HTTP POST 要求は、受信されると、Apache IPP モジュール mod_ipp.so に渡されます。設定に基づき、この Apache Web サービスは、認証サービスを提供したり、クライアントとサーバー間で暗号化を使用したりすることもできます。待機サービスは、待機専用の Apache インスタンスとして実行されます。

IPP のサーバー側サポートは、IPP モジュール mod_ipp で開始されます。待機サービスでは、Solaris OS にもともと付属している Apache Web サーバーが使用されます。Apache モジュールは、Dynamic Shared Object (DSO) インタフェースを使用して Web サーバーにプラグインされます。DSO インタフェースを使用するこのモジュールには、Web サーバーが待機サービスに HTTP 接続を渡すためのエントリポイントと待機サービスの設定サポートが含まれています。IPP サポートは、このモジュール化手法を使用して、Apache が提供する暗号化および認証メカニズムを再利用できます。

基本プロセスは、次のようになります。

  1. IPP 要求がクライアントからサーバーに送信されます。
  2. Apache Web サーバーが接続を受け付けます。
  3. Apache Web サーバーが接続を mod_ipp に渡します。
  4. mod_ipp が接続と設定データを libipp-listener に渡します。
  5. libipp-listenerlipipp-core を使用して要求を読み取ります。
  6. libipp-listener が、libipp-listener にある操作ハンドラに要求を振り分けます。
  7. 操作ハンドラが要求を PAPI 呼び出しに変換し、呼び出しを行います。
  8. PAPI 呼び出しが psm-lpsched を使用して印刷サービス固有の要求に変換されます。
  9. 印刷サービスが要求に応答します。
  10. psm-lpsched コマンドが応答を PAPI の結果に変換します。
  11. libpapi 操作が libipp-listener 操作ハンドラに戻されます。
  12. libipp-listener 操作ハンドラが結果をディスパッチャーに渡します。
  13. libipp-listener ディスパッチャーが libipp-core ライブラリを使用して結果をクライアントに書き込みます。
  14. ディスパッチャーが戻り値として mod_ipp のエントリポイントを戻します。

IPP ライブラリ

IPP 待機サービスライブラリ libipp-listener では、大量のプロトコル要求処理が行われます。このライブラリは、コア IPP ライブラリである libipp-core.so を使用して要求を読み取り、妥当性検査を行います。妥当性検査後、要求は一連のクライアント API 呼び出しに変換されます。これらの呼び出しの結果は、コア IPP ライブラリを使用して適切な IPP 応答に変換されます。応答は Web サーバーによってクライアントシステムに戻されます。

注:待機サービスライブラリのインタフェースは、IPP のサーバー側実装に固有のプロジェクト非公開インタフェースです。

IPP コアライブラリはクライアント操作とサーバー操作間で共用されます。IPP コアライブラリ libipp-core.so には、プロトコルの要求と応答を読み書きできるようにするルーチンが含まれています。このライブラリは、IPP の要求データと応答データを、標準バイナリ表現と共通のデータ構造のセットとの間で変換します。最終的に、この共通のデータ表現は印刷サービスに依存しない表現と要求との間の変換に使用され、汎用印刷インタフェース libpapi.so に渡されます。クライアント側とサーバー側の両方の IPP サポートでこの関数を実行するので、このコンポーネントはクライアントとサーバーの両方によって共用されます。

PAPI ライブラリは、印刷サービスに依存しないで印刷サービスまたはプロトコルと対話する手段をアプリケーションに提供します。このインスタンスでは、ライブラリが Apache IPP 待機サービスに、ローカル LP サービスと対話する手段を提供します。ライブラリは、printers.conf 設定データベースに格納されているクライアント側の待ち行列設定データに基づいて、対話する印刷サービスを判別します。

lpsched のサポート

psm-lpsched コマンドは、印刷サービスに依存しない PAPI の表現と LP 印刷スプーラ lpsched の間の変換を実行します。このコマンドは、各種 PAPI 関数に渡される PAPI 属性を lpsched の内部データ表現に変換します。次に、psm-lpsched コマンドが lpsched コマンドと通信して、要求された操作を実行します。実行後は、psm-lpsched は印刷サービスに依存しない PAPI 表現に結果を変換し直して、それを呼び出し元に戻します。

LP 印刷スプーラ lpsched は、スプール処理サービス、ジョブデータのプリンタ対応形式への変換、および物理プリンタへのジョブデータの転送を提供します。


IPP ネットワークサービスの有効化と無効化

Solaris OS には、IPP 要求の待機専用の httpd インスタンスを起動するために使用できる、デフォルトの Apache httpd 設定ファイルが付属しています。また、IPP リスナーには、application/print/ipp-listener サービスを記述する SMF マニフェストが含まれています。このマニフェストは、インストールすると SMF リポジトリにインポートされ、アプリケーション、印刷、サーバーなどの LP サービス が起動されると自動的に起動されます。IPP ネットワークサービスは、SMF のsvcadm コマンドを使用して有効化、無効化、および再起動できます。

設定を変更した場合は、そのあとにサービスを再起動して、新しい設定をロードしてください。

注:これらのコマンドを実行するには、スーパーユーザーであるか、または同等の特権を持っていることが必要です。

IPP ネットワークサービスの有効化

IPP ネットワークサービスを有効化するには、次のように入力します。

# svcadm enable application/print/ipp-listener

rfc1179 ネットワークサービスを有効化するには、次のように入力します。

# svcadm enable application/print/rfc1179

IPP ネットワークサービスの無効化

ネットワーク上でプリンタを共有しない場合は、IPP ネットワークサービスを無効化できます。

IPP ネットワークサービスを無効化するには、次のように入力します。

# svcadm disable application/print/ipp-listener

rfc1179 ネットワークサービスを無効化するには、次のように入力します。

# svcadm disable application/print/rfc1179

IPP ネットワークサービスの再起動

IPP ネットワークサービスを再起動するには、次のように入力します。

# svcadm restart application/print/ipp-listener

rfc1179 ネットワークサービスを再起動するには、次のように入力します。

# svcadm restart application/print/rfc1179

IPP のサーバーおよびクライアントデータの設定

IPP 待機サービスは、IPP プロトコルを使用して印刷サービスと対話する手段を印刷クライアントシステムに提供します。このプロトコルには、多種多様の標準的な操作と属性が含まれています。IPP 待機サービスは、Solaris では、Apache モジュールおよび IPP 操作とワイヤーサポートを含む一連の共用ライブラリとして実装されます。

待機サービスは、SMF によって管理される、Apache Web サーバーの特別インスタンスであるため、svcadm コマンドを使用して有効化および無効化できます。使用される具体的な SMF サービスは、svc:/application/print/ipp-listener です。この Web サーバーインスタンスの Apache 設定は、lp 印刷サービスユーザーのアカウントで実行されます。このアカウントは、既存のすべての IPP 操作をサポートするのに十分な特権を備えていますが、印刷サービス固有のリソースのみにアクセスできます。また、待機サービスが、IPP をサポートするために特別に設定された Apache Web サーバーインスタンスとして実行されることにも注目してください。これは、潜在的なセキュリティーリスクを最小限に抑えることを意図しています。

設定に何らかの変更を加えた場合は、サービスを再起動して、新しい設定をロードする必要があります。

Apache 設定ファイル

IPP 待機サービス設定ファイル /etc/apache/httpd-standalone-ipp.conf は、通常の Apache 1.3 設定ファイルと似ています。設定ファイルは、使用する任意の Apache 1.3 設定指示を取り込みます。Solaris 9 10/04 および Solaris 10 OS 以降、デフォルト設定には次に示す機能が含まれています。

  • ポート 631 での待機
  • Apache モジュールの最小セットのロード
  • 認証を必要としない /printers/ パス、ipp://server/printers/ でのサポートされているすべての IPP 操作の有効化

/printers/ で実行可能なデフォルト操作は、セキュリティーリスクが低い操作セットに限定されています。ただし、基本認証が必要な /admin/ パス、ipp://server/admin/ では、すべての操作が実行可能です。

次の表では、選択可能な mod_ipp Apache 設定オプションについて説明します。

表 2-1 mod_ipp Apache モジュールの設定オプション
説明
ipp-conformance
プロトコルチェックのレベルを選択します。デフォルトは自動で、クライアントとの対話が最大限可能になります。
ipp-operation
1 つ以上の IPP 操作に対して、IPP 操作サポートを選別的に有効化または無効化する機能を提供します。
ipp-default-user
ローカル印刷サービスとの通信時に使用するユーザー名を選択します。デフォルトは、より多くのプロキシ機能が使用可能な lp 印刷ユーザーです。
ipp-default-service
要求の指示先となるデフォルト印刷サービスを選択します。デフォルトは、lpsched で、現在は lpsched に対してだけテストされています。
 

次の表には、Apache Web サーバー設定の準拠チェックのタイプが示されています。

使用する構文は次のようになります。

ipp-conformance  value
表 2-2 Apache Web サーバー の準拠チェックのタイプ
意味
Automatic
要求された操作がプロトコルリスナーによってサポートされていることだけをチェックします。デフォルトです。
1.0
要求が IPP/1.0 に準拠していることをチェックします。
1.1
要求が IPP/1.1 に準拠していることをチェックします。
 

次の表には、Apache Web サーバー設定の IPP 操作キーワードが示されています。

表 2-3 IPP 操作キーワード
意味
All
このキーワードは、操作を代替するものとして使用されます。 mod_ipp によってサポートされているすべての操作が選択されていることを意味するためのキーワードです。
Required
このキーワードは、操作を代替するものとして使用されます。 RFC2911 で定義されているとおり、print-jobcancel-jobget-job-attributesget-jobs、および get-printer-attributes を含む、すべての必要な操作が選択されていることを意味するためのキーワードです。
print-job
クライアントは文書が 1 つだけ含まれる印刷ジョブを送信できます。文書データは要求とともに送信されます。
print-uri
未サポート
validate-job
クライアントが、印刷ジョブを送信する前に、印刷ジョブがスケジューラによって処理できることを検証できます。
create-job
クライアントが、複数の文書が含まれる印刷ジョブを送信できます。文書は、send-document および send-uri 操作を使用して送信されます。
send-document
クライアントが、print-job 操作で作成された印刷ジョブに文書を追加できます。文書データは要求とともに送信されます。
send-uri
未サポート
cancel-job
クライアントが印刷ジョブを取り消すことができます。
get-job-attributes
クライアントが印刷ジョブについての情報を収集できます。
get-jobs
クライアントが、特定の印刷待ち行列内にある印刷ジョブの一覧を収集できます。
get-printer-attributes
クライアントが、特定の印刷待ち行列についての情報を収集できます。
hold-job
クライアントが特定の印刷ジョブを保留できます。
release-job
クライアントが特定の印刷ジョブを解放できます。
restart-job
クライアントが特定の印刷ジョブを再開できます。
pause-printer
クライアントが、特定の印刷待ち行列を一時停止、すなわち無効化できます。この操作を実行すると、待ち行列内の印刷要求の処理が停止されます。この操作により、待ち行列がジョブの受付を停止することはありません。
resume-printer
クライアントが、特定の印刷待ち行列内にあるジョブの処理を再開、すなわち有効化できます。
purge-jobs
クライアントが、特定の印刷待ち行列からすべてのジョブを削除できます。
set-printer-attributes
プリンタの属性を作成または変更します。
set-job-attributes
既存の印刷ジョブの属性を変更します。
enable-printer
印刷ジョブを待ち行列に入れる処理を再開し、受け付けます。
disable-printer
印刷ジョブを待ち行列に入れる処理を無効化、すなわち却下します。
cups-get-default
印刷サービスのデフォルトの出力先を検出します。
cups-get-printers
印刷サービスで使用可能なすべてのプリンタを列挙します。
cups-get-classes
印刷サービスで使用可能なすべてのクラスを列挙します。
cups-accept-jobs
enable-printer に等しい CUPS 固有のキーワードです。
cups-reject-jobs
disable-printer に等しい CUPS 固有のキーワードです。
cups-move-jobs
同じ印刷サービス内の待ち行列間でジョブを移動します。
 

注釈付きの Apache 設定ファイルの例を次に示します。

if mod_ipp is loaded User lp run as "lp"
URI: ipp://{host]/printers/{queue}
SetHandler application/ipp use mod_ipp for this location
ipp-conformance strict enable strict protocol checking (default)
ipp-operation all enable enable all supported operations

/etc/printers.conf ファイルの設定

PAPI がサポートされている場合、printer-uri がサポートしている値がプリンタデータベースにないときには、bsdaddr の値 (server,q) が、printer-uri がサポートしている同等の値 (lpd://server/printers/q) に変換されます。ただし、クライアントシステムが混在し、待ち行列が IPP 対応サーバー上にあるような場合は、この設定データを手動で追加する必要があります。

設定データを追加するには、テキストエディタを使用して、次の情報をクライアントシステムの /etc/printers.conf ファイルに追加します。

/etc/printers.conf:queue: \
    :bsdaddr=server,queue,Solaris: \
    :printer-uri-supported=ipp\://server/printers/queue:

IPP リスナーを再起動して、変更を有効にします。


IPP を使用した印刷

Solaris 9 10/04 OS 以降または CUPS サーバーでサーバーを実行している場合に、IPP を使用してこれらのサーバーと通信するときには、lpstat により、各サーバーの機能に加えてリモート印刷待ち行列およびジョブに関する追加情報を取得できます。

次に例を示します。

# lpset -a printer-uri-supported=lpd://server/printers/test test
# lpstat -p test -l
printer test disabled since Fri Nov 03 11:43:30 2006. available.
        Warning: test is down: new printer

        Form mounted:
        Content types:
        Description:
        Connection:
        Interface:
        After fault: continue
        Users allowed:
                (all)
        Forms allowed:
                (none)
        Media supported:
                (none)
        Banner required
        Character sets:
                (none)
        Default pitch:
        Default page size:
        Default port setting:
        Options:



# lpset -a printer-uri-supported=ipp://server/printers/test test
# lpstat -p test -l
printer test disabled since Fri Nov 03 11:48:53 2006. available.
        new printer
        Form mounted:
        Content types: application/postscript
        Description:
        Connection:
        Interface: /usr/lib/lp/model/uri
        PPD: /usr/lib/lp/model/ppd/system/foomatic/HP/HP-Color_LaserJet_4600-Postscript.ppd.gz
        On fault: write root
        After fault: continue
        Users allowed:
                (all)
        Forms allowed:
                (none)
        Media supported:
                Letter
                A4
                11x17
                A3
                A5
                B5
                Env10
                EnvC5
                EnvDL
                EnvISOB5
                EnvMonarch
                Executive
                Legal
        Banner required
        Character sets:
                (none)
        Default pitch:
        Default page size:
        Default port setting:
        Options:

IPP が使用されている場合は、適切として承認されれば、リモート印刷待ち行列を受け付け、却下、有効化、および無効化できます。「IPP が使用されている場合に印刷待ち行列の受付を可能にする承認の設定」を参照してください。

IPP が使用されている場合は、リモートから、印刷サーバー上にある印刷待ち行列間でジョブを移動できます。

次に例を示します。

$ lpmove {request-id} {new-destination}

$ lpmove {old-destination} {new-destination}

IPP が使用されている場合は、印刷ジョブをリモートで変更できます。

ほかにもいくつか例を示します。

保留中のジョブを送信するには、次のように入力します。

$ lp -d {destination} -H hold /etc/motd

部数を変更するには、次のように入力します。

$ lp -i {request-id} -n 5

両面印刷をオンに設定して印刷するには、次のように入力します。

$ lp -i {request-id} -o Duplex=DuplexNoTumble -H resume

IPP を使用してプリンタを共有する方法
Solaris OS がインストールされている場合、最初の印刷待ち行列を追加すると、印刷サーバー上で IPP 待機サービスが自動的に有効化されます。また、最後の印刷待ち行列を削除すると、IPP 待機サービスの無効化も行われます。Solaris 9 10/04 リリースおよび Solaris 10 OS 以降、デフォルト設定はかなり寛容になっています。いたずら防止を重視する場合は、デフォルト設定をより制限的なものに変更できます。認証されていない IPP 操作をサービスでサポートする範囲は、万一の破壊性がもっとも少ない操作に限定することをお勧めします。

このような操作には次のものがあります。

  • print-job
  • validate-job
  • create-job
  • get-jobs
  • get-printer-attributes
  • send-document
  • cancel-job
  • get-job-attributes
  • cups-get-default
  • cups-get-printers
  • cups-get-classes
  • cups-move-job

Solaris 印刷マネージャーから IPP を選択できるか

現在のところ、Solaris 印刷マネージャーを使用してリモート印刷待ち行列にアクセスを追加する場合に、IPP を選択する手段はありません。 この機能は、Solaris Express で間もなく提供され、いずれかの時点で Solaris 10 にバックポートされる予定です。この機能が Solaris 印刷マネージャーで使用可能になれば、印刷サービスが IPP をサポートしていることが判定されると、IPP が自動的に選択されます。この問題とそのソリューションは、バグ 6488443 に記載されています。


認証メカニズム

IPP は HTTP の上位層です。このため、IPP は、HTTP および Apache に組み込まれている認証メカニズムを使用します。Solaris の出荷時デフォルト設定では、これらの認証メカニズムは使用しないようになっています。Solaris 9 10/04 リリース、Solaris 10 リリース、および Solaris Express リリース以降、クライアント認証では、いくつかの uri-path と操作の組み合わせを使用する必要があります。

たとえば、クライアントシステムによって使用される printer-uri のより一般的な書式は、次のようになります。

ipp://server/printers/queue

Microsoft Windows システム上で印刷するには、次の書式を使用して URI を指定する必要があります。

http://server:631/printers/queue

IPP が使用されている場合に印刷待ち行列の受付を可能にする承認の設定

IPP が使用されている場合に印刷待ち行列を受け付けるための承認を設定するには、/etc/apache/httpd-standalone-ipp.conf ファイルを編集します。

認証を設定するには、次に示すエントリを追加します。

  • AuthType
  • AuthName
  • AuthUserFile

例については、/etc/apache/httpd-standalone-ipp.conf ファイルを参照してください。

Solaris Express 10/06 リリース以降を実行している場合は、/printers パスにより、次に示す操作がオンに設定されます。

  • print-job
  • validate-job
  • create-job
  • get-jobs
  • get-printer-attributes
  • send-document
  • cancel-job
  • get-job-attributes
  • cups-get-default
  • cups-get-printers
  • cups-get-classes
  • cups-move-job

認証メカニズムのオンへの設定

デフォルト設定では、次のコマンドは、その uri パスでは無効なので失敗します。

$ accept ipp://server/printers/queue

認証するには、次のように入力します。

$ accept ipp://server/admin/queue

認証情報の入力を要求されます。

適切な認証情報を入力して、uri パスに対する操作の処理を有効化します。

次に例を示します。

system% accept ipp://printing/printers/wspe
accept: ipp://printing/printers/wspe: operation-not-supported
system% accept ipp://printing/admin/wspe
passphrase for user-name to access ipp://printing/admin/wspe:
accept: ipp://printing/admin/wspe: not-authorized
system%

AuthUser ファイルへのユーザーの追加

AuthUser ファイルにユーザーを追加するには、次のように入力します。

 # /usr/sfw/bin/htpasswd /etc/ipp-users user-name

ユーザーが追加されたことを確認するには、/etc/ipp-users ファイルをチェックします。

 # grep user-name /etc/ipp-users

Solaris の印刷機能の今後

ローカルプリンタのある高度なモバイルシステムを使用するという、より差し迫った問題を解決するために、現在、いくつかの追加作業が行われています。

この目標に焦点を絞っているプロジェクトとしては、次のものが挙げられます。

PPD 管理: 現在の実装では、printmgr の PPD ファイルを使用する際に、サポート対象のプリンタメーカー、モデルおよびドライバを一覧表示するためにキャッシュを使用しています。このキャッシュは、パフォーマンス改善を目的として作成されています。2800 以上の圧縮 PPD ファイルを読み取る時間はあまりに長く、GUI ユーザーの許容範囲を超えているためです。キャッシュは現在、静的で、出荷時の圧縮 PPD ファイルに対して構築されています。複数のユーザーから、「追加の PPD ファイルを探してキャッシュにインストールするツールが欲しい」という希望が出されました。このプロジェクトの目的は、まさにこのツールを実現することです。

Presto (自動印刷設定): 自動的に、またはできるだけ自動的に、直接接続されたプリンタ、ネットワーク接続されたプリンタ、およびリモートでサービスされるプリンタへのアクセスを検出し、設定することによって、Solaris の使い勝手、特に印刷サービスを改善することを目的としたプロジェクトです。

OpenPrinting の詳細は、http:/sf.net/projects/openprinting を参照してください。

OpenSolaris 印刷コミュニティーおよび進行中のプロジェクトの詳細は、http://www.opensolaris.org/os/community/printing/ を参照してください。

BigAdmin