Debian と Windows 間でのプリンタ共有 mini-HOWTO Ian Ward ian at excess dot org Noriko CURTIS - 日本語訳 norikoscurtis@yahoo.co.jp 2002-12-01 Revision History Revision 1.3 2003-11-18 Revised by: iw Removed incorrect lpadmin -h usage Revision 1.2 2003-10-03 Revised by: iw Note about woody and gs-esp, conflict with bash's enable command and fix for XP/2000 clients Revision 1.1 2003-06-26 Revised by: iw Added passwords on windows shared printers, Corrections Revision 1.0 2003-05-15 Revised by: tmm Initial release, reviewed by LDP Revision 0.8 2003-04-11 Revised by: iw converted from LaTeX ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Table of Contents 1. はじめに 2. 始める前に 2.1. Linux 上での印刷に必要なもの 2.2. 必要なパッケージ 2.3. CUPS ローカルプリンタ設定 2.4. Linux プリントの基礎知識 3. Windows マシンへプリント 3.1. Windows マシンへの接続 3.2. CUPS 設定 4. Windows マシンとのプリンタ共有方法 4.1. プリンタ共有の基礎 4.2. Samba の設定 4.3. CUPS 設定 5. トラブル解決集 5.1. Windows プリンタに接続できない 5.2. その他のトラブル 6. ライセンスについて 7. 日本語版謝辞 1. はじめに Debian GNU/Linux (http://www.debian.org) はボランティアによって運営さ れている主要な Linux ディストリビューションです。残念なことに、Debian システムでのプリンタ設定は困難な作業になりかねません。また、最新のツー ルを使って Windowsと Linux 間のプリンタ共有について、シンプルにしかも段 階的に解説してある文書があまりありません。こういった問題に対応するため に、この文書は書かれました。 この HOWTO 文書では、Debian システムでプリンタを設定する際に、どのよう にコマンドラインツールを用いればよいかを説明していきます。たどえば、 Linux 側のファイルを Windows 上のプリンタに送る方法や、 Linux 上のプリ ンタを Windows マシンから共有する方法などを解説します。最後に、トラブル 解決集も載せています。 この文書の配布元 URL は http://excess.org/docs/ linux_windows_printing.html です。 Docbook/XML ソースと EPS ファイルは http://excess.org/docs/src/ からダウンロ ードできます。この文書に関するバグレポート、訂正、提案は ian at excess dot org まで提出してください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2. 始める前に 2.1. Linux 上での印刷に必要なもの Debian でのプリンタ設定に必要な主なものは以下のとおりです。 ・ CUPS CUPS ( Common UNIX Printing System ) (http://www.cups.org) は、印 刷スプーラーとプリンタ利用・管理用のサポートプログラム群で構成され ています。 ・ Samba Samba (http://www.samba.org)は、 Windows ファイルとプリンタ共有プ ロトコルを Windows でないマシンに実装することにより、ネットワーク上 で、あたかも Windows マシンのように見せかけることを可能にするプログ ラムです。 ・ プリンタドライバ LinuxPrinting.org (http://www.linuxprinting.org) では、数多くのプ リンタドライバと Linux 対応プリンタのデータべースを管理しています。 ドライバをダウンロードする場合、Linux で使いたいプリンタごとにプリ ンタドライバをダウンロードする必要があります。プリンタドライバは、 PPD ファイルとフィルタープログラムで構成されているか、あるいは PostScript 用プリンタの場合は、PPD ファイルのみが含まれています。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2. 必要なパッケージ プリンタの設定に必要なプログラムやライブラリは標準の Debian アーカイブ に用意されており、普通の Debian パッケージングツールを使ってダウンロー ド、インストール可能です。必要なパッケージは以下のとおりです。 cupsys CUPS サーバー cupsys-bsd CUPS BSD コマンド cupsys-client CUPS クライアント用プログラム foomatic-bin LinuxPrinting.org からのプリンタサポートプログラム samba UNIX用Samba SMB/CIFS サーバープログラム smbclient UNIX用Samba SMB/CIFS クライアントプログラム gs-esp ESP Ghostscript ( http://www.cups.org/ghostscript.php ) Debian GNU/Linux 3.0 (a.k.a. woody) をご使用の場合、ESP Ghostscript は使えないので、代りに "gs" をご使用ください。 a2ps GNU A2PS ( http://www.gnu.org/software/a2ps/ ) 以上のパッケージをインストールするには、以下のコマンドを実行します。 apt-get update apt-get install cupsys cupsys-bsd cupsys-client foomatic-bin samba smbclient gs-esp a2ps プリンタによっては、上に示したパッケージ以外のパッケージを必要とする場 合があります。たとえば、HP 社のインクジェットプリンタには、 hpijs パッ ケージのインストールが必要です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3. CUPS ローカルプリンタ設定 lpadmin コマンドでプリンタを設定します。たとえば、 CUPS でレーザープリ ンタを設定するには以下のコマンドを実行します。 /usr/sbin/lpadmin -p Laser -v parallel:/dev/lp0 -P /root/laser.ppd /usr/bin/enable Laser /usr/sbin/accept Laser /usr/sbin/lpadmin -d Laser ここで bash シェルには enable ビルトインコマンドがあるので、bash をご 使用の場合、プリンタを使用可にするにはフルパス (/usr/bin/enable) で実行 してください。 一行目のコマンドでは、プリンタを新規に作成しています。 -p オプションで "Laser" というプリンタ名を指定、 -v オプションで初めのパラレルポートへ の接続を指定、そして-P オプションで PPD ファイルとして /root/laser.ppd の使用を指定しています。次に、 "Laser" プリンタを使用可能にし、印刷ジョ ブを受け付けられるようにするため、 enable と accept コマンドがあります 。最後のコマンドで、 "Laser" プリンタをデフォルトプリンタに設定していま す。詳しくは、CUPS のドキュメントを参照してください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4. Linux プリントの基礎知識 Figure 1. ローカルでのプリントイメージ [printing_b] lpr、あるいはlp コマンドにファイル名を渡すことで印刷が行えます。また、 lpstat -o や lpstat -p コマンドで、プリントキューやプリンタの状況を見る ことができます。印刷ジョブを取り消すには、cancel、または lprm コマンド に続いてジョブIDを入力します。 cupsd という CUPS スプーラデーモンは、まず文書を PostScript へ変換し、 さらにプリンタにネイティブなフォーマットへ変換するという機能を提供しま す(Figure 1参照)。PostScriptに対応していないプリンタには、ラスター化 したフォーマット, あるいは bitmap フォーマットを使います。ラスター化し たフォーマットの弱点は、オリジナルの PostScript 版よりも文書サイズがか なり大きくなってしまう点と、プリンタへの送信にかかる時間が長くなるとい う点です。 フィルタ(Filter)は、文書のフォーマット変換に使われるプログラムです。 CUPS スプーラーは、送られてきた文書に適したフィルタを探します。適したフ ィルタが見つからない場合、次のようなエラーメッセージが表示されます。 lpr: unable to print file: client-error-document-format-not-supported. 多くのアプリケーションは、そのアプリケーションの文書フォーマットに対応 するフィルタを用意していません。このようなアプリケーションで作成された 文書は、 PostScript または他の標準フォーマットに変換しないかぎり、その アプリケーションでしか印刷できません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3. Windows マシンへプリント 3.1. Windows マシンへの接続 Figure 2. ネットワーク上でのプリント [to_windows] SMB と CIFS は、Windows のファイルおよびプリンタ共有プロトコルです。 Samba を使って、これらのプロトコルを実装した Windows マシンと通信します 。 CUPS の設定作業に取り組む前に、Samba SMB/CIFS クライアント Figure 2 である smbclient コマンドで Windows マシンに接続できることを確認してく ださい。 Windows マシンへの接続例と、その実行結果を以下に示します。 /usr/bin/smbclient -L rice -U fred added interface ip=10.6.7.234 bcast=10.6.7.255 nmask=255.255.255.0 Got a positive name query response from 10.6.7.8 ( 10.6.7.8 ) Password: (not shown) Sharename Type Comment PRINTER$ Disk INKJET Printer STUFF Disk IPC$ IPC Remote Inter Process Communication 上記の smbclient コマンドは、ある Windows マシンで利用できる共有リソー スを要求しています。-L オプションで "rice" という調べたいマシン名を指定 し、 -U オプションで "fred" というユーザ名を指定しています。実行結果に は "INKJET" というプリンタが提示されています。 Windows ネーミングサービスが使えない場合、-I オプションで Windows マシ ンの IP アドレスを指定します。使用例は以下のとおりです。 /usr/bin/smbclient -I 10.6.7.8 -L rice -N smbclient コマンドに関する詳しい情報は Samba のドキュメントをご覧くだ さい。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2. CUPS 設定 Windows プリンタを見つけたら、次は CUPS の設定です。まず初めに、インス トールされた CUPS に smb backend ファイルが用意されているかを次のコマン ドで確認します。 ls -l /usr/lib/cups/backend/smb このファイルが見つからない場合、次のコマンドでファイルを作ります。 ln -s `which smbspool` /usr/lib/cups/backend/smb 3.1項で、例として用いたプリンタの設定手順を以下に示します。 /usr/sbin/lpadmin -p RicePrinter -v smb://fred:mypass@rice/INKJET -P /root/inkjet.ppd /usr/bin/enable RicePrinter /usr/sbin/accept RicePrinter /usr/sbin/lpadmin -d RicePrinter 前にも述べましたが、bash には enable というビルトインコマンドがあり、 プリンタを使用可能にするにはフルパス (/usr/bin/enable) で実行してくださ い。 一行目の "lpadmin" コマンドは、共有される Windows プリンタの設定を行い ます。パラメータには、ユーザ名、パスワード、netbios 名、プリンタ名を与 えます。他のコマンドについての解説は Section 2.3 を参照してください。 これで、プリンタのテスト準備ができました。lp コマンドから、または適当 なアプリケーションからテストプリントを行ってください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. Windows マシンとのプリンタ共有方法 4.1. プリンタ共有の基礎 Figure 3. プリンタ共有のイメージ [from_windo] Samba は nmbd デーモンとsmbd デーモンによって、Windows マシンとのファ イル、プリンタ共有を実現します。 nmbd デーモンは Windows ネーミングサー ビスとしての機能を提供し, LAN 上の Windows マシンにあなたのマシン名を一 斉配信します。 共有したい Linux プリンタごとに Windows のプリンタドライバをインストー ルする必要があります。Windows のプリンタドライバは、プリンタメーカーの Web サイトからダウンロードできます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2. Samba の設定 プリンタへの匿名アクセス(anonymous access)を許可する場合、リモートか らのプリント指示を許可するためのユーザアカウントを作成する必要がありま す。 /usr/sbin/adduser --system --disabled-password smbprint このコマンドは "smbprint" という名前のユーザをシステムに追加します。 "smbprint" のホームディレクトリ、 /home/smbprint がスプールディレクトリ になるので、ファイルのスプールに必要なディスクスペースがあることを確認 してください。また、"smbprint" に秘密ファイル、ディレクトリへの読み書き 権限を与えないよう注意してください。 CUPS をある特定のユーザからしかプ リントできないよう制限設定した場合、 "smbprint" ユーザに共有したいプリ ンタへのアクセス権を与えなければなりません。 Samba の設定ファイル名は /etc/samba/smb.conf です。 "smbprint" という ユーザ名で CUPS を設定した場合の設定ファイル例を以下に示します。 [global] printcap name = cups printing = cups security = share [printers] browseable = yes printable = yes public = yes create mode = 0700 guest only = yes use client driver = yes guest account = smbprint path = /home/smbprint しかしながら、上記の設定では、ネットワークからこのマシンにアクセスでき るどのマシンにでもプリントの許可を与えています。したがって、インターネ ットから直接アクセスできるマシンのような、信用のおけないネットワーク上 のマシンで上記のような設定は避けたほうがよいでしょう。アクセス制御を実 装したい場合、 security = user や security = domain のような設定を行っ てください。アクセス制御に関する詳しい情報は Samba の man ページをご覧 ください。 Samba 設定ファイルの編集ができたら、以下のコマンドで Samba を再起動し てください。 /etc/init.d/samba restart ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3. CUPS 設定 Windows のプリンタドライバは出力データをフォーマットしてから、ネットワ ークにそのデータを送ります。(訳者追記:Windows から問題なく利用できる よう) Windows 側のフォーマット済の出力データに対応するために CUPS を設 定します。 /etc/cups/mime.convs の次の行のコメントアウトを解除してくだ さい。 application/octet-stream application/vnd.cups-raw 0 - また、/etc/cups/mime.types の次の行のコメントアウトも解除してください 。 application/octet-stream 次に、ネットワーク上の他のマシンからの接続を許可するよう CUPS を設定し ます。以下の記述を /etc/cups/cupsd.conf に加えてください。 AuthType None Order Deny,Allow Deny From None Allow From All Samba の設定ファイルと同様に、この設定では、あらゆるマシンからのプリン タへの接続を許可しているので、信用のおけないネットワーク上のマシンでは 避けたほうがよいでしょう。プリンタへのアクセス制御の強化に関する詳しい 情報は、cupsd.conf の man ページと CUPS のドキュメントをご覧ください。 最後に、以下のコマンドで CUPS を再起動します。 /etc/init.d/cupsys restart これで Linux プリンタは LAN 上で Windows マシンと共有できます。Windows のプリンタ追加ウィザードでネットワークプリンタを追加し、テストページを 印刷してみてください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5. トラブル解決集 5.1. Windows プリンタに接続できない CUPS が使う smbclient ユーティリティ、smbspool、が接続に失敗した場合、 Unable to connect to SAMBA host: Success. のような役に立たないおかしな エラーメッセージが表示されます。また、Windows プリンタに印刷ジョブを送 っている最中に、ファイルがキューで行き止まってしまう場合も接続失敗のサ インです。 このような場合、以下のコマンドで、 CUPS ログの一番新しい記録をチェック してください。 /usr/bin/tail /var/log/cups/error_log cli_connect() failed... のようなメッセージは、 smbspool が接続しようと している Windows マシンを見つけられない、ということを意味しています。 Windows マシンのホスト名が正しいかどうか確認してください。また、Windows マシンが稼働しているか、ネットワーク接続は正常に機能しているかなども確 認してください。 Section 3.1で述べたように、 smbclient コマンドで、 Windows マシンに接続できるか確認してください。 SMB tree connect failed: ERRSRV - ERRinvnetname のようなメッセージが表 示された場合、 smbclient は Windows マシンに接続したけれども、指定した プリンタには接続されていない、という意味です。 Section 3.1で示したとお り、smbclient コマンドで共有プリンタ名が正しいかどうかを確認してくださ い。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.2. その他のトラブル その他のトラブルとして、ローカルプリンタで印刷できない、印刷ジョブが印 刷される前にキューから消えてしまう、などが挙げられます。また、暗号的で 意味のわからないエラーメッセージが表示される場合もあるでしょう。例: Child process 2384 exited with status 32. このような場合、印刷ジョブの失敗が起る前の状況についての詳しいメッセー ジを表示するために CUPS のログレベルを "debug" まで上てください。手順は 以下のとおりです。 1. 一番基本となるCUPS 設定ファイル、/etc/cups/cupsd.conf をテキストエ ディタで開く。 2. "LogLevel warn" の行を "LogLevel debug" に変更する。 3. 設定ファイルを保存し、テキストエディタを閉じる。 4. 以下のコマンドで CUPS サーバを再起動する。 /etc/init.d/cupsys restart 以下のコマンドで CUPS ログ記録を追いかけることができます。 /usr/bin/tail -f /var/log/cups/error_log Scheduler shutting down due to SIGTERM というメッセージが表示されます 。これは、CUPS サーバが正常に停止したという意味です。 GNU Ghostscript 7.05: Can't start ijs server 'hpijs'. のような意味のあ るデバッグメッセージに注意して、印刷ジョブをもう一度送ってください。こ の場合、"hpijs" パッケージをインストールすることで問題解決できます。 失敗の原因を判断できない場合、エラーメッセージ中の重要な部分をインター ネットの検索エンジンにかけてみてください。すでに誰かが同じトラブルを解 決しているかもしれません。また、Section 2.2 に記載した各パッケージを最 新版に上げてもいいでしょう。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6. ライセンスについて 著作権は (C) 2003 Ian Ward にあります。 This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. 参考訳:Free Software Foundation によって発行された GNU Free Documentation License(修正項目なし、表紙カバーなし、裏表紙なし)の Version 2 またはそれ以降の版の条項のもとに、この文書の複製、配布、そし て(または)改編を許可します。 This is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details. 参考訳:この文書は、読者に有益であることを願って配布されていますが、こ の文書の内容について保証がないことを知っておいてください。市場性および 特定目的適合性については黙示の保証を含めて、いかなる保証も行いません。 詳しくは、GNU General Public License をご覧ください。 A copy of the GNU General Public License is available as /usr/share/ common-licenses/GPL in the Debian GNU/Linux distribution or on the World Wide Web at http://www.gnu.org/copyleft/gpl.html. You can also obtain it by writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 参考訳: GNU General Public License は、Debian GNU/Linux ディストリビ ューションの /usr/share/common-licenses/GPL から、ネット上では http:// www.gnu.org/copyleft/gpl.htmlから、または Free Software Foundation への リクエストにより入手できます。あて先は Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7. 日本語版謝辞 翻訳を行うにあたって、下記の方々から協力を頂きました。この場をかりてお 礼申し上げます。 ・ 武井伸光さん ・ 濱崎健さん