CAPを用いてEtherTalk上のプリンタを使おう

 CAPでMac用のプリンタをSolaris上から使う設定方法を説明します.これについては雑誌の記事などでは,ほとんどSunOS4.*の話ばかりで,Solarisについての話はほとんどありません.さらにはCAPについてくるドキュメントの類にもきちんとは書かれていません.ということで一番苦労するところです.

準備・インストール

 必要なファイル類はデフォルトの状態ではインストールされないので,手で移動させます.必要なのはCAPを展開したディレクトリ下のapplication/papif以下にある,add_at_printerと,papif.interface.templateです.これをCAPをインストールしたディレクトリ(デフォルトだと/usr/local/cap)にコピーします.あとはadd_at_printerに実行属性をつけておきます.
 他にもadd_at_printerには多少修正が必要です.というのも,add_at_printerは,シェルスクリプトなのですが,なぜか中の記述と実際のディレクトリ構成が多少異なっているからです.スクリプトの中ではプログラム類はCAPのディレクトリの下のbin/というディレクトリに入っているようになっていますが,実際はCAPをインストールしたディレクトリの真下にあります.よってそこら辺を修正します.
 具体的には,中の"PAPIFHOME=${PAPIFHOME}/bin"という部分と"$CAPHOME/bin/atlook -n "=:LaserWriter@$ZONE" | egrep -e '¥[Net:[0-9]*'"という部分の"/bin"というのを取り除きます.

 また,同じディレクトリにはいっているはずのpapifというプログラムにも多少手を加えます.papifが動くときに,そのプロセス自体がroot権限を持つ必要があるからです.つまり持ち主をrootにしてsetuidしておけばよいわけです.
 具体的には以下のようにします.これはroot権限が必要です.

# chmod 4755 papif
# chown root papif

プリンタの設定

 さて,ここでroot権限でそのディレクトリ内で./add_at_printerと打ち込むと,OSにプリンタを登録することが出来ます.実行させてみましょう.するとまず最初に

Enter AppleTalk zone [*] >

と聞いてきます.これはここの場合そのままリターンで良いです.するとネットワーク上のappletalkのプリンタの一覧が表れます.こんな感じです.

1 - Select610PS+TT:LaserWriter@* [Net:255.140 Node:128 Skt:128]
2 - CanonA404PS:LaserWriter@* [Net:255.140 Node:233 Skt:128]

 そして

Enter AppleTalk printer name >

と聞いてきますので,登録したいプリンタの名前を打ち込みます.先に出たリストをそのままコピー&ペーストできると楽ですので,そのような環境で行った方がいいでしょう.ここではCanonA404PS:LaserWriter@*を登録しましょう.

 次はUNIX上ではどのような名前にするか,を聞いてきます.この〜@*という名前は長すぎますから.

Enter Unix printer name [CanonA404PS] >

好きなように打ち込んでいいのですが,ここではcanon-aという名前にしましょう.そのように打ち込みますと

Defining "CanonA404PS:LaserWriter@*" AppleTalk printer as canon-a ...

と聞いてくるので,「y」と打ち込めば作業を開始します.
 それが終わると今度は

Do you want to make it available to network [Y/n]?

と聞いてきます.「このプリンタをネットワーク上の他のマシンからのlprで使えるようにしますか?」ということですので,ここはそれぞれの事情にしたがって好きなようにしてください.

 そして最後に,appletalkプリンタの名前とUNIX上の名前の対応を設定します./etc/cap.printersとファイルに対応を書いておきます.今回の場合は

canon-a=CanonA404PS:LaserWriter@*

と書きます.スペースは空けずに詰めて書いてください.

 これでappletalkのプリンタが,Solaris上からcanon-aという名前で使えるようになりました.

注意点

  1. lpqの表示にwarningが出るときがある.しかし,無視して良い.これはCAPの方のバグのようです.
  2. 一部しか印刷していないのに,それ以上印刷される場合がある.これはpapifのバグで,印刷終了をうまく判定できないためです.
     対策としては/etc/lp/interface/以下の,papifを用いているプリンタ名と同じ名前のファイルの中に,

    IDLESTUFF=0; export IDLESTUFF

    と書いた行を挿入します.場所は頭の方ならば大体どこでも良いですが,感じとしては"PAPIFHOME=〜"という行の次辺りに書くのが美しいでしょう.

     詳しくはここ参照.


SolarisにCAPをインストールする
aufsのインストール・設定
色々技術メモページに戻る
石田 翼のホームページに戻る

ISHIDA Tsubasa <tbs-i@mtg.biglobe.ne.jp>
Last modified: Sun Apr 16 20:29:07 JST 2000