LPRng
公式ウェブサイト より:
- LPRng ソフトウェアは Berkeley LPR の印刷スプーラ機能に改良・拡張を加えて可搬性を高めた実装です。RFC1179 の要件を満たすインターフェイスを提供しますが、全く新しい実装であり次のような機能が存在します: 軽量な lpr, lpc, lprm プログラム (データベースが不要)。印刷キューの動的なリダイレクト。ジョブの自動管理。詳細な診断。単一のキューで使えるマルチプリンター。SUID root を必要としないクライアントプログラム。緻密なセキュリティチェック。大幅に改善された権限管理・認証機能。
LPRng は成熟かつ安定しており、柔軟な印刷フィルタリングメカニズムが組み込まれています。印刷サーバーとして優れているだけでなく印刷クライアントとしても用いることが可能です。他のマシンにインストールした CUPS クライアントから印刷することもでき、CUPS の方で必要な設定は少なくてすみます。
インストール
- AUR から lprngAUR パッケージをインストールしてください。
- 任意でフィルターパッケージをインストールしてください:
設定
設定は以下の手順で行います:
- コントロールファイルの設定
- フィルターの設定
- printcap ファイルと spool ディレクトリの作成
- systemctl を使って lpd デーモンを有効化・起動
コントロールファイル
ローカル設定
2つのコントロールファイルを設定する必要があります:
/etc/lprng/lpd/lpd.conf /etc/lprng/lpd/lpd.perms
リモート設定
クライアントコンピュータからリモートプリンターに印刷するだけなら /usr/share/doc/lprng のデフォルト設定で問題ありません。以下のようにファイルを /etc/lprng/lpd/ にコピーして編集してください:
# cp /usr/share/doc/lprng /etc/lprng/lpd/
サーバー設定
インターネットからリクエストを受け取るサーバー側では、/etc/lprng/lpd/lpd.conf の最後の行をアンコメントして /etc/lprng/lpd/lpd.perms のコメントに書かれているようにパーミッションを設定してください。
プリンター設定 (フィルター)
以下のフィルター (設定) のどれかを選択してください。
Postscript プリンター
ネットワーク対応の Postscript プリンターを使っている場合は運がいいです。postscript のサンプルフィルター /usr/share/doc/lprng/psfilter は PDF やテキストファイルを Postscript に変換します。他のファイルタイプは拒否されます。
サンプルフィルターを /usr/lib/lprng/lpd にコピーして自由に名前を付けてください。そして、用紙サイズを設定して片面・両面印刷を選択してください。
片面印刷と両面印刷の印刷キューを分割したい場合、ファイルを2つ作成してください。
Foomatic システム
印刷フィルタリングの仕組みとして Foomatic システムも存在します。CUPS によって使われているシステムです。foomatic-filters-lprngAUR をインストールしてください。CUPS に含まれている foomatic-rip プログラムは LPRng のサポートが削除されています。
上記と同じように foofilter を使って、必要にあわせて編集してください。foofilter で指定したパスにあわせて .ppd ファイルをインストールしてください (/etc/lprng/lpd が良いでしょう)。
Hewlett Packard のプリンターを使う場合、hplip をインストールしてください。このパッケージには全ての Hewlett Packard 製プリンターに対応する .ppd ファイルが含まれています。
Ghostscript ドライバー
Ghostscript ドライバーがあるドライバーを使っている場合、上記と同じように gsfilter をコピー・編集して適切なドライバーと用紙サイズを設定してください。使用している Ghostscript で利用できるドライバーは次のコマンドで確認できます:
$ gs -h
様々なプリンター機能のサポートは限定的であり古くなっています。
Printcap ファイル
/etc/lprng/printcap ファイルは LPRng に使用しているプリンターと印刷フィルターの情報を伝えます。
サンプル
(/usr/share/doc/lprng の) printcap.sample ファイルには printcap ファイルを設定する方法が書かれた簡単なチュートリアルが載っています。ディレクトリに入っている printcap の断片の printcap_server と printcap_client には更に詳しい情報があります。
サンプルファイルは以下のようになります:
DCPJ4120DW:\
:mx=0:\
:sd=/var/spool/lpd/DCPJ4120DW:\
:sh:\
:lp=/dev/usb/lp1:\
:if=/opt/brother/Printers/dcpj4120dw/lpd/filterdcpj4120dw:
HL2035:\
:mx=0:\
:sd=/var/spool/lpd/HL2035:\
:sh:\
:lp=/dev/usb/lp0:\
:if=/opt/brother/Printers/brhl2035/lpd/filterHL2030:
ネットワーク印刷のアドバイス
一般的に、どれか一つのコンピュータをプリンターのサーバーにしてください。他のクライアントコンピュータは印刷ジョブを直接プリンターに送るのではなくサーバーに送るようにします。
USB 端子などでサーバーコンピュータに直接接続するプリンターとは対照的に、ネットワークプリンターでは印刷のフィルタリングを行うために printcap_server でサーバーを設定する必要があります (リファレンスマニュアル を参照)。
printap ファイルを作成した後、root で次のコマンドを実行してください:
$ /usr/bin/checkpc -f
上記のコマンドは設定を確認して /var/spool/lpd にスプールディレクトリを作成します。checkpc で何かエラーが表示される場合、問題を解決してから再度実行してください。
lpd デーモンの起動
LPRng は lpd という名前のデーモンをバックグラウンドで実行して印刷リクエストを管理します。systemd を使ってデーモンを有効化・起動してください。以下のコマンドを何もエラーが吐かれずに実行できた場合、準備完了です。
# systemctl start lpd.service # systemctl enable lpd.service
設定ファイルを変更したときは、lpd を再起動してください。
使用方法
lpr コマンドが LPRng の印刷ツールです。一般的な使い方は:
$ lpr [options] [file_to_be_printed]
ファイルが指定されなかった場合、標準入力から入力を受け取ります。最も便利なオプションは -P printer と -K number_of_copies です。プリンターオプションで指定する代わりに、環境変数の PRINTER を設定して LPRng に使用するプリンターを指定することもできます。
他の有用なオプションは lpq (印刷キューを確認) と lprm (キューから印刷ジョブを削除) です。lpr, lpq, lprm の man ページを参照してください。
CUPS と LPRng
CUPS を利用することで LPRng がインストールされていないクライアントマシンからサーバー上のプリンターを使うことができます。lpd プロトコルを使ってプリンターにアクセスするように CUPS を設定してください。CUPS のウェブインターフェイスを使えば簡単です。また、サーバーは必要な印刷フィルタリングを全て行うわけではないので、raw フィルターを使うように CUPS を設定してください。フィルタリングをどうするかは必要に応じて設定してください。
トラブルシューティング
Gnome2/GTK2
Gnome2/GTK2 アプリケーション (Firefox, Mate, LXDE, XFCE4 など) は lpr 印刷に対応しています。ホームディレクトリに ~/.gtkrc-2.0 ファイルを作成して、次の行を記述してください:
gtk-print-backends = "file,lpr"
LXDE
LXDE はデスクトップのルックアンドフィールが変更されたときに ~/.gtkrc-2.0 ファイルを独自に作成します。ファイルの中を見てください。
Postscript 印刷
印刷フィルターで PDF ファイルから Postscript を作成するには poppler パッケージの pdftops フィルターを使います。
ただし、pdftops はときどき、出力しなかったりすることがあります。ghostscript パッケージの pdf2ps フィルターで置き換えることができますが、このフィルターにも問題があります。
一回限りの印刷であれば、pdf2ps などの変換プログラムを使って Postscript を作成してプリンターに送信してください。
両面 PS
Double-sided printing of Postscript files is effected in the example filters by inserting a line of Postscript code right after the first line. For some Postscript files, this doesn't work.
In this case, send the Postscript file to a single-side print queue. The print filter psfilter set up for single-sided printing does no filtering of Postscript files.