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 <http://excess.org/docs/
linux_windows_printing.html> です。 Docbook/XML ソースと EPS ファイルは
http://excess.org/docs/src/ <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 <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/ <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 に加えてください。

<Location /printers>                                                   
AuthType None                                                          
 Order Deny,Allow                                                      
 Deny From None                                                        
 Allow From All                                                        
</Location>                                                            

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. 日本語版謝辞

 翻訳を行うにあたって、下記の方々から協力を頂きました。この場をかりてお
礼申し上げます。

 ・ 武井伸光さん
   
 ・ 濱崎健さん
   
