スクリプト - みる会図書館


検索対象: UNIX MAGAZINE 1999年10月号
27件見つかりました。

1. UNIX MAGAZINE 1999年10月号

連載 / Linux でリラックスー /etc/rcrunlevel. d ディレクトリから、、スクリプト名 " て指定した初期化スクリプトへのシンポリック・リンク をすべて削除します。 update-rc. d コマンドは、 /etc/ init. d ディレクトリに、、スクリプト名 " の琪月化スクリ プトが残っている場合は、シンポリック・リンクを削 除しません。強制的にシンポリック・リンクを削除する 場合には、 update-rc. d コマンドに一 f オプションを指 定します。 たとえば、 /etc/init. d/exim へのシンポリック・リン クを削除するには以下のようにします。 # update—rc . d —f eX1m remove update—rc. d: /etc/init . d/exim exists during rc . d purge (continuing) Removing any system startup links for /etc/rc6. d/K20exim /etc/rc5. d/S20exim /etc/rc4. d/S20exim /etc/rc3. d/S20exim /etc/rc2. d/S20exim /etc/rcl . d/K20exim /etc/rcO . d/K20exim /etc/init . d/exim す。これにより、 exim パッケージをシステムから削除 update-rc. d コマンドに一 f オフションを指定していま /etc/init. d/exim スクリプトが存在しているため、 /etc/inittab ファイ ) レ ンクを標準出力に表示します。 ンクの削除はおこなわす、削除されるシンポリック・リ なお、 -n オプションを指定すると、シンポリック・リ きます。 することなしに、 exim デーモンか起動しないように UNIX MAGAZINE 1999.10 デーモンの起重加に、 /etc/init. d/rcS というプログラ また、 Debian GNU/Linux の起重加 ( 正確には init 行レベルは 2 であることが分かります。 5 行目から、 Debian GNU/Linux のデフォルトの実 います ) 。 の内容を図 2 に示します ( 説明のために行番号をイ寸加して のノヾージョン 2.76-3 に含まれる ) /etc/inittab ファイル Linux 2.1 に含まれる ( 正確には、 sysvinit パッケージ うな順番で実行されるかを説明します。 Debian GNU/ イルをとりあげ、どのような初期化スクリプトが、どのよ 以下では、 Debian GNU/Linux の /etc/inittab ファ ム ( シェル・スクリプト ) か実行されることカ吩かります ( 9 行目 ) 。工ントリの不頁が、、 sys ⅲ it " であるため、この スクリプトはシステムの起重加寺に 1 度だけ実行されます。 init デーモンは、このスクリプトカ鮗了するまで他の処理 をおこないません。 こで、 /etc/init. d/rcS スクリプトの中身も見てみま しよう ( 図 3 ) 。 /etc/init. d/rcS スクリプトは環境変数 などの設定をおこなったあと、図 3 の 26 行目で /etc/ default/rcS ファイルを言売み込んでいます。このファイル では、初期化スクリプトのためのデフォルト値がいくつか 設定されています。たとえば、 CMOS クロックが GMT ( グリニッジ標 ~ おを示しているかどうかなどの設定も こにあります。そのあと、 /etc/rcS. d ディレクトリ内 に存在するスクリプトのうち、ファイル名が S て始まる ものを順番に実行します ( 37 ~ 56 行目 ) 。さらに、 /etc/ rc. boot ディレクトリ内のすべての砌化スクリプトを順 番に実行します ( 61 行目 ) 。 さて、 /etc/inittab ファイルに戻りましよう。 /etc/ init. d/rcS スクリプトの実行カ鮗ったあと、現在の実行レ ベルを引数として、 /etc/init. d/rc スクリプトを実行して います ( 図 2 の 22 ~ 28 行目 ) 。工ントリの不頁が、、 wait であるため、ⅲ it デーモンはこのスクリプトカ冬了するま ・で他の処理をおこないません。 こで、 /etc/init. d/rc スクリプトの中身も覗いてみ ましよう ( 図 4 ) 。ます、現在の実行レベルと直前の実行 レベルを調べています ( 図 4 の 43 ~ 47 行目 ) 。そのあ と、直前の実行レベルが、、 N " でなければ、、、 K " で始まる すべての初期化スクリプトを順番に実行します ( 57 ~ 64 行目 ) 。シェルのワイルドカードを使用しているため、前 述の 2 桁の数字 ( れれ ) の小さいスクリプトから順番に実行 S て始まるすべての開始スクリプ されます。さらに、 こでは、直前の トを順番に実行します ( 67 ~ 95 行目 ) 。 実行レベルが、、 N " ではなく、なおかっ直前の実行レベル で同じ初期化スクリプトかま行されていれば、ふたたひ初 期化スクリプトを実行しない点に注意してください ( 71 ~ 86 行目 ) 。 以 - ヒのように初期化スクリプトの実行か完了したあと、 init デーモンは getty プロセスを起動します ( 図 2 の 50 ~ 55 行目 ) 。この点で、ようやくューザーのシステムへ のログインが可能になります。 107

2. UNIX MAGAZINE 1999年10月号

の起重加に、どのような初期化スクリプトが、どのような 順番で実行されるのかをすこし詳しく説明します。 そのあと、 Debian GNU/Linux パッケージの使用法 に関するドキュメントの探し方を説明します。 dselect コ マンドなどを利用してさまざまなパッケージをインストー ルしてみたものの、パッケージの使い方がよく分からない ために、使いこなせない人も多いのではないでしようか。 そこで、新た ( ンヾッケージをインストールしたときに、ど うやってドキュメントを探せばいいのかを紹介します。さ らに、パッケージの成疋ファイルやログファイルがどのよ うなディレクトリにオタされているのかもあわせて説明し ます。 Debian の初期化スクリプト init テーモン Debian GNU/Linux にかぎらず、一殳の UNIX オ ペレーティング・システムでは、ハードウェアの初期化 やデーモンの起動などをおこなう初期化スクリプトはⅲ it デーモンによって起動されます。これは、カーネルが最初 ( プロセス番号 1 ) のプロセスとして起重丿けるデーモンであ り、他のすべてのプロセスの親プロセスとなります。 他の多くの Linux 配布パッケージと同様、 Debian GNU/Linux では、 init デーモンとして MiqueI van Smoorenburg が作成した SystemV 互換の sysvinit を用いています。 sysvinit の詳細は、 Slackware の初期 化スクリプトをとりあげたとき ( 2 月号 ) に解説したの こでは sysvinit そのものについては説明しません。 で、 sysvinit における実行レベル (runlevel) の定義や、 init デーモンの成疋ファイルである /etc/inittab ファイルの 書式などについては、 2 月号を参照してください。 /etc/init. d ディレクトリ Debian GNU/Linux の初期化スクリプトは、すべて /etc/init. d というディレクトリ内にオ内されています。 これらの初期化スクリプトは、システムの起重加 ( 正確に は init デーモンの起重加 ) や、システムの夫行レベルか変 化するときに、 init デーモンによって実行されます。これ らのネ月化スクリプトにより、さまざまなサービスの開始 連載 / 凵 nux でリラックスー 104 や終了などがおこなわれます。 ただし、実行する初期化スクリプトの不頁は、実行レベ ルに応して変化します。また、初期化スクリプトを実行す る順番も重要です。たとえば、ネットワークの設定をお こなう初期化スクリプトや、ノヾックグラウンドでデーモン を起動する初期化スクリプトなどは、一殳にシングルユー サー・モードでは実行する必要はありません。また、ネット ワークの設定をおこなうネノ期化スクリプトは、ネットワー クを利用するデーモンを起動する初期化スクリプトよりも 前に実行しておく必要があります。 Debian GNU/Linux では、基本的に SystemV と同 じ方式 2 で、どのようなスクリプトをどのような順番で起 重丿庁るのかを決定しています。つまり、それぞれの実行レ ベルに対して、 /etc/rcrunlevel. d というディレクトリを用意し、 こから /etc/init. d ディ レクトリ内のネノ期化スクリプトにシンポリック・リンクを 作成しています。このシンポリック・リンクにより、実 行する初期化スクリプトや、その実行順序を決定していま す。ここで、 runlevel は現在の実行レベル ( 0 ~ 6 ) 、また はシステムの起重丿時を表す S のいすれかです。 シンポリック・リンクの名前は、 S れれスクリプト名 もしくは、 K れれスクリプト名 という形式になります。れれは、初期化スクリプトの実行 順を表す 2 桁の数字です。、、スクリプト名 " は初期化スク リプト名で、通常はリンク先のファイル名 (/etc/init. d ディレクトリ内の初期化スクリプトのファイル名 ) です。 init デーモンは、夫行レベルが襯 e 眦 I に変化したと きに、ます /etc/rcrunlevel.d ディレクトリ内のネ月化ス クリプトのうち、、、 K " て始まるもの ( サービスの停止ス クリプト ) をれれの小さい順 ( れれか 1 司番の場合はアルファ べッい印に実行します。このとき、ネ加月化スクリプトに stop" という引数を与えて実行します。正確には、 init デーモンか初期化スクリプトを直接実行するのではなく、 init デーモンから起動される / etc / ⅲ it. d / rc スクリプト 2 ただし、 init デーモンから実行されるスクリプト名 (/etc/init. d/rc など ) は一緇 ; 異なります。 UNIX MAGAZINE 1999.10

3. UNIX MAGAZINE 1999年10月号

連載 / Linux でリラックスー とするだけです。 exim デーモンの起重加オプションなど をいちいち憶えておく必要もなく、たいへん簡単です。 デーモンが使用する設定ファイルを変更したときは、ほ とんどの場合デーモンに SIGHUP シグナルを送って、設 定ファイルを再度読み込ませる必要があります。これに は、たとえば、 # ps ax ー grep exim 582 aO S 0 : 00 grep exim 0 : 00 /usr/sbin/exim —bd —q30m 169 ? S 0 : 00 vi /etc/init . d/exim 502 al S # kill -HUP 169 のようにします。しかし、 Debian GNU/Linux のネノ期 Debian GNU/Linux では、さまざまなパッケージを シンポリック・リンクのイ乍成と削除 できます。 のようにして、簡単に設定ファイルを読み込ませることが # /etc/init . d/exim force—reload 化スクリプトを使用すれば、 106 インストールしたい場合に、 update-rc. d コマンドを使え のパッケージではないソフトウェアのネ川月化スクリプトを を起動しないようにしたい場合や、 Debian GNU/Linux し、すでにインストールされているパッケージのデーモン rc. d コマンドを手動で実行する必要はありません。しか rc. d コマンドか夫行されます。このため、通常は update- postinst スクリプトや postrm スクリプトから update- パッケージのインストール時や肖丱に、前号で説明した Debian GNU/Linux のノヾッケージ管理システムでは、 rc. d コマンドが用意されています。 リック・リンクを簡単に作成、削除するための update- d ディレクトリから / etc / ⅲ it. d ディレクトリへのシンポ このため、 Debian GNU/Linux では /etc/rcrunlevel. プトへのシンポリック・リンクも削除する必要があります。 レクトリから / etc / i ⅲ t. d ディレクトリ内の初期化スクリ は、ネ月化スクリプトとともに、 /etc/rcrunlevel. d ディ る必要があります。また、パッケージを削除するときに リ内のネ月化スクリプトにシンポリック・リンクを作成す /rcrunlevel. d ディレクトリから /etc/init. d ディレクト プトを含むパッケージをインストールするときには、 /etc 自由に追加したり削除することができます。匆月化スクリ ばシンポリック・リンクの作成や削除が容易になります。 もちろん、 ln や rm コマンドなどを使って、手動でシンポ リック・リンクを作成することもできますが、複数の /etc/ rc 襯 e 眦 /. d ディレクトリにシンポリック・リンクを作成 する必要があるためやや面倒です。以下で、 update-rc. d コマンドの使用法を簡単に説明します。 ・シンポリック・リンクの作成 update-rc . d [-n] スクリプト名 defaults [ 数字 ] /etc/rcrunlevel. d ディレクトリから、、、スクリプト 名 " で指定された初期化スクリプトに対して、デフォル トの設疋でシンポリック・リンクを作成します。、、ス クリプト名 " で指定された初期化スクリプトが、 /etc/ init. d ディレクトリ内に存在している必要があります。 デフォルトの定では、実行レベル 2 ~ 5 には開始スク リプトとしてのシンポリック・リンクを、実行レベル 0 、 1 、 6 には停止スクリプトとしてのシンポリック・リ ンクを作成します。また、スクリプトの実行順序として は 20 を使用しますが、、、数字 " か指定された場合はこ の値を使用します。 ー n オプションを指定した場合は、シンポリック・リン クは作成されません。これは、 update-rc. d コマンドの 実行によって、どのようなシンポリック・リンクが作 成されるかを調べたいときに使用します。 たとえば、 /etc/init. d/exim という初期化スクリプト か有雀するときに、 /etc/rcrunlevel.d ディレクトリか ら /etc/init. d/exim へシンポリック・リンクを作成す るには以下のようにします。 # update—rc. d exim defaults Adding system startup /etc/rcO . d/K20exim /etc/rcl . d/K20exim /etc/rc6. d/K20exim /etc/rc2. d/S20exim /etc/rc3. d/S20exim /etc/rc4. d/S20exim /etc/rc5. d/S20exim for /etc/init . d/exim . . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim . /init . d/exim デフォルトの設定とは異なる設定でシンポリック・リン クを作成することもできます。詳しくはオンライン・マ ニュアル update-rc. d(8) を参照してください。 ・シンポリック・リンクの削除 update-rc . d [-n] [-f] スクリプト名 remove UNIX MAGAZINE 1999.10

4. UNIX MAGAZINE 1999年10月号

連載 / Linux でリラックスー 図 1 /etc/rcO. d ディレクトリ内のキ琪手化スクリプト列 K11cron K12kerne1d K20exim K20gpm K20samba K20skkserv K25nfs—server K30netstd_misc K50net at alk K89atd K90sysk10gd S20sendsigs S25h clock . sh S30urandom ・ restart S40umountfs S90ha1t K15netstd-init K2010goutd K18netbase K20autofs K201pd K20ppp によって実行されます。なお、直前の実行レベルが、、 N " の場合は、これらの、、 K " から始まる初期化スクリプトは 実行されません。 次に、 init デーモンは /etc/rcrunlevel.d ディレクト リの初期化スクリプトのうち、 S て始まるもの ( サービ スの開始スクリプト ) を同しく数字十アルファベット順に 実行します。このとき、ネ川月化スクリプトに、、 start" とい う引数を与えます。ただし、実行レベルが 0 または 6 の ときは、初期化スクリプト名が S から始まっていても 、 stop" という引数をケえて実行します。 たとえば、 /etc/rcO. d ディレクトリに図 1 のような初 期化スクリプト ( 実体はシンポリック・リンク ) があったと します。この場合、実行レベルが 0 に変化したときには、 サービスをいったん中止し、その後あらためてサービス を開始する。 ・ reload サービスを中断することなく を再度読み込む。 ・ force— 、サービスの成疋ファイノレ → → → → → → → K11cro 取 stop K12kerne1d stop K89atd stop K90sysk10gd stop S20sendsigs stop S25hwc10ck. sh stop S40umountfs stop S90haIt stop 可能ならば、サービスを中断することなく、サーピスの 故疋ファイルを再度読み込む。これができない場合は、 サーピスをいったん中止し、その後あらためてサービス を開始する。 Debian GNU/Linux では、デーモンとして重川乍する ようなサーピスに対してはかならす初期化スクリプトが用 意されています。また、ほとんどの匆月化スクリプトでは、 start 、 stop 、 restart 、 force-reload といった引数を使 用することができます。 このため、サービスの起動や終了などは、サービスの種 類によらすすべて統一されたガ去でおこなうことができま す。たとえば、 exim ( メール中幻医工ージェント ) デーモン を終了したいとしましよう。多くの UNIX オペレーティ ング・システムでは、 # ps ax ー grep exim の順でネノ琪月化スクリプトか実行されることになります。実 行レベルが 0 なので、 S から始まる初期化スクリプト であっても、、 stop" という引数が与えられることに注意し てください。 初期化スクリプトの本髄 このように、初期化スクリプトには、、 start" や、、 stop などの引数が与・えられて実行されます。 Debian GNU/ Linux では、初期化スクリプトの引数として、以下のよう UNIX MAGAZINE 1999.10 ・ stop ・ start サービスを中止する。 サービスを開始する。 な値か定義されています。 582 aO S 169 ? S 502 al S # k 土 11 169 0 : 00 grep exim 0 : 00 /usr/sbin/exim —bd —q30m 0 : 00 vi /etc/init . d/exim のように いったん exim デーモンのプロセス番号を調 ペそのあとにシグナルを送ってプロセスを終了させる必 要があります。一方、 Debian GNU/Linux では、 exim デーモン用に初期化スクリプトか用意されているため、 # /etc/init . d/exim stop のようにしてデーモンを終了させることかて、きます。もち ろん、 exim デーモンをふたたひ開始するには、 # /etc/init . d/exim start 105

5. UNIX MAGAZINE 1999年10月号

図 3 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 連載 / Linux でリラックスー Debian GNU/Linux の /etc/init. d/rcS スクリプト PATH=/sbin:/bin: /usr/sbin: /usr/bin ← PATH を設正 run1eve1=S prev1eveI=N umask 022 export PATH runlevel prevlevel See if system needs tO be /sbin/unconfigured. sh then if [ —x /sbin/unconfigured. sh ] f i Source defaults . export VERBOSE /etc/defauIt/rcS ←現在の実行レベルは S ←直前の実行レベルは N setup . 基本システムの設定がされているかをチェック ( 基本システムのアーカイプ ( base2 ー 1. tgz ) を展開しただけだと このチェックでひっかかる ) ←初期化スクリプトのデフォルト値を設定 ← S で始まるすべての初期化スクリプトに対して・・ for now . ←リンク先が存在するかどうかをチェック ←シェル・スクリプトならば子プロセスを起動しない for do done 1 CaII a11 parts in 0 て de て . in /etc/rcS . d/S??* # lgnore dangling symlinks [ ! —f "$i" ] & & continue case in For compatibility, run the files in /etc/rc. b00t t00. # Source shell script for speed. trap ー INT QUIT TSTP set start ←初期化スクリプトの引数に start を指定 # No sh extension, SO fork subprocess . 初期化スクリプトの引数に start を指定 $i start ( ー [ -d /etc/rc. boot ] & & run-parts /etc/rc. boot ← /etc/rc. boot ディレクトリ内の初期化スクリプトを パッケージのドキュメント Debian GNU/Linux には膨大な数のパッケージが用 意されています。普通の人にとっては、そのほとんどが名 UNIX MAGAZINE 1999 ユ 0 すべて実行 前も聞いたことがないソフトウェアでしよう。 UNIX に 精通している人でも、パッケージの優先度が。 pti 。 nal ( 任 意 ) や extra ( 特別 ) であるようなソフトウェアは、はと んど使用したことがないと思います。 Debian GNU/Linux のノヾッケージ管理システムでは、 109

6. UNIX MAGAZINE 1999年10月号

PERL ADVISOR の ァータの保存 RandaI し . Schwartz Perl のスクリプトは、起動されるたびにすべてのデー タを初期化する。つまり、起動のたびに新しくデータを 作成して値を読み込み、なんらかの処理をおこなうのであ る。同じスクリプト ( 別のスクリプトでもよい ) をあとで 起動したときにも、同じデータにアクセスできるようにデ close DB; @data = く DB> ; open DB, ”く file" or die "open: $ い・ ば、プログラムの知原で、 1 項目すっ " テキストファイルに保存することだ。 もっとも簡単なガ去の 1 つは、 1 つの配列を、、各行に ータを保存するにはどうすればよいだろうか。 たとえ 132 close DB; open DB, " く file" or die "open: $ ー " ・ るような区切り文字を入れておく。 この場合、ハッシュのキーと値のあいだに、何か区別でき 同様に、ノ、ツシュをファイルに保存することもできる。 いる必要がある。 まれてはならす、各項目は 1 つの改行コードで区切られて 適切でなければならない。すなわち、データには改行が含 きないという齣がある。そのはかにも、データの形式が このカ 1 去には、 1 つのファイルに 1 つの配列しか保存で close DB; print DB @data; open DB, ">file" 0 て die "create : $ い・ に書き戻す。 きる。そして、必要な処理カ院了したら、これをファイル これで、行の挿入・追加・削除といったことが自由にで として使用するのだ。 のように配列を読み込んで、 @data を各行からなるリスト 0 襯れ % 襯〃化 Co 襯加市 g こでは、ファイルの各行から、ハッシュのキーとそ れに対応する値を取り出すために、 map 演算子を使用し ている。そして、このスクリプトの最後で、これとは逆の 処理をおこなう。 open DB, ">file" or die "create: $ い・ print DB map "$-\t$mydata{$-}\n" keys %mydata; close DB; こでも、処理を簡単にするために map 演算子を使用 している。この場合も、データの形式が適切でなければな らない。つまり、ハッシュのキーや値にタブや改彳丁を含め ることはできない。 DBM テータベースの使用 さて、任意のキー直か扱えるような、もうすこし東 されたガ去を紹介しよう。それには DBM を使う。 DBM とは、 DBM ライプラリ ( 1970 年代中期以降のははすべ ての UNIX に含まれている ) を用いて作成された簡単な データベースのことである。 DBM データベースは、任意 のキーと値の組て構成されるバイナリデータである。ただ し、キーと値の合言は約 IKB 以下に制限されている。 Perl では、以下のようにして作成される DBM ハッシ ュを使って、 DBM にアクセスすることができる。 dbmopen %DB , "my—database" , 0644 0 て die "dbmopen: $ ! ”・ これ以降、ハッシュ %DB へのアクセスは、データベー スからのデータの取得や、データベースへのデータの内 へと適切に置き換えられる。データベースは、カレント・ ディレクトリの my-database. dir および my-database. pag というファイルに内される。これらのファイルか存 UNIX MAGAZINE 1999.10

7. UNIX MAGAZINE 1999年10月号

連載 / Linux でリラックスー 図 4 Debian GNU/Linux の /etc/init. d/rc スクリプト # Now find out what the current and what the previous run1eve1 are . ←現在の実行レベル runIeve1=$RUNLEVEL # Get first argument . Set new runlevel tO this argument . ] & & runlevel=$l ←引数があれは、これをもとに実行レベルを決定 ←直則の実行レベノレ previous=$PREVLEVEL export runlevel previous # ls there an rc directory for this new runlevel? if [ -d /etc/rc$runlevel. d ] ← /etc/rcrunlevel.d ディレクトリが存在するか ? then # First, run the KILL scripts ・ ←直前の実行レベルが N でなけれは・・・ if [ $previous ! = N ] then for i in /etc/rc$runlevel . d / K [ 0 ー 9 ] [ 0 ー 9 ] * ↑停止スクリプトを順番に実行 do # Check if the script is there . [ ! —f $i ] & & continue ↑リンク先が存在するかどうかをチェック # Stop the service . startup $i stop ←初期化スクリプトの引数に st 。 p を指定 done # Now run the START scripts for this runlevel . for i in /etc/rc$runlevel . d/S* ↑開始スクリプトを順番に実行 do [ ! —f $i ] & & continue ↑リンク先が存在するかどうかをチェック if [ $previous ! = N ] then 1 っ 3 -4 5 一ト一 0 1 っつけ一 4 一り一 8 9 0 一 1 っつけ 4 一り冖ー 8 0 ー 1 っ 1 一ト り【ー一 8 一一 0 11 っ 1 っ -4 一り ( ー 4 -4 4 -4 4 4 -4 一 4 4 5 - り 5 - り”り 5 一り 1 り 5 6 6 6 ー「ー冖ー suffix=$i#/etc/rc$runlevel . d/S [ 0 ー 9 ] [ 0 ー 9 ] stop=/etc/rc$runlevel. d/K [ 0 ー 9 ] [ 0 ー 9 ] $suffix previous-start=/etc/rc$previous . d/S [ 0 ー 9 ] [ 0 ー 9 ] $suffix [ —f $previous—start ] & & [ ! —f $stop ] & & continue ↑直前の実行レベルでサービスが開始されていればスキップする in 0 ) ←実行レベルが 0 または 6 なら、 startup $i stop 引数に st 叩を指定 startup $i start ←実行レベルがそれ以外なら、 引数に start を指定 # eof /etc/init . d/rc ノヾッケージの制罹卩ファイノレの Description フィールド ( 7 次々とインストールすることも容易です。 月号参照 ) にパッケージの簡単な説明か書かれており、 しかし、、、パッケージをインストールしてみたものの、 れを見川ま、それぞれのパッケージの概要を知ることがで どのようにして使えばいいのか分からない " という場合も きます。 dselect コマンドを使用すれは、パッケージの説 あるでしよう。 Debian のポリシー・マニュアルでは、パ 明にざっと目をとおして、おもしろそうなパッケージを ッケージのドキュメントに関しても日寉なルールを定めて 110 UNIX MAGAZINE 1999.10

8. UNIX MAGAZINE 1999年10月号

Linux でリラックス 大崎博之 Debian GNU / Linux の初期化スクリプト 先日、研究室の学生たちに頼んで、 Debian GNU/ Linux がインストールされた言算機にメールサーバーや Web サーバーをインストールし、実際に使えるように設 定してもらいました。彼らが Debian GNU/Linux に 触れるのはこれか初めてでしたが、ふだんから Red Hat Linux や Vine Linux などを使用しているため、それほ ど苦労せすに設定できるだろうと予想していました。 ところが、 NIS サーバーやメールサーバーの設定をして もらったところ、思ったようには作業がはかどらす、すい ぶん苦労したようです。設定してもらった学生の 1 人に話 を聞くと、全員が口を揃えて、 「 Debian GNU/Linux は使いにくい・・ と言っていたそうです。ふだんから他の Linux 配布パッ ケージを使用しているにもかかわらす、なぜそれほど苦労 したのでしようか ? いろいろと訊いてみたところ、 Debian GNU/Linux システムの完成度の高さが 1 つの原因になっているのでは ないかと感しました。つまり、 Debian GNU/Linux で はシステム全体としての整合性がきちんととられているた めに、かえって個々のパッケージを使いにくいと感しるこ とがあるようです。たとえば、 Debian GNU/Linux で は、設定ファイルをオ褓内するディレクトリや、ログファイ ルを出力するディレクトリなどはきちんと決められていま す。しかし、これがソフトウェアの一勺な ( デフォルト の ) 設疋とは異なっていることがあるのです。 たとえば、 sendmail ( メール転送工ージェント ) の設 定ファイルである sendmail. cf ファイルは、ほとんどの UNIX オペレーティング・システムでは / etc ディレクト リにありますが、 Debian GNU/Linux では /etc/mail UNIX MAGAZINE 1999.10 にあります。 Apache (HTTP サーバー ) の成疋ファイル をオ褓内するディレクトリは、デフォルトの設定では / usr / local/apache/conf ですが、 Debian GNU/Linux では /etc/apache となります。このようなデフォルトの設疋 との違いが、、、使いにくい " と感しさせる原因かもしれま せん。 Debian GNU/Linux では、オペレーティング・システ ムとしての言思想や、パッケージが岡たすべきルールな どを、、 Debian ポリシー・マニュアル " 1 として日Ⅲ寉に定め ています。これを読むと、いかにうまく言されたシステ ムであるかが分かると思います。しかし、初めて Debian GNU/Linux に触れた人は、どこをどう調べていいのか も分からす、使いこなすまでに時間がかかってしまうよう です。 そこで今回は、 Debian GNU/Linux を使いこなすう えで知っておいたはうがいいことをいくつか説明します。 これまでの連載で、 Debian GNU/Linux に関しては以 下のような内容をとりあげました。 ・ 1999 年 5 月号 ~ 6 月号「 Debian GNU/Linux 2.1 のインストーノレ」 ・ 1999 年 7 月号 ~ 9 月号「 Debian GNU/Linux のノヾッ ケージ管瑪 以降では、ます Debian GNU/Linux の初期化スク リプトについて説明します。初期化スクリプトとは、 /etc /init. d ディレクトリや /etc/rcS. d ディレクトリなどに オ内されたスクリプトのことです。 Debian GNU/Linux 1 /usr/doc/debian-policy/ にインストールされるはか、 http:// www.debian.org/doc/manuals/debian-policy/でム辭万版が入 手できます。 103

9. UNIX MAGAZINE 1999年10月号

連載 /Cyber Kansai Project— media CONNECT のストリーム系サーパー 写真 2 図 4 生中継への入口ページ 日 0 ; トップペーレを置物第 5 イライト、イト第朝第代み、テ・ - タ すを天物端メ - ル 81 インターネット生中継 「が町 0 による中紹がらー、なれま 「象川 0 による中搬がご質になれます、 00 0 「 W 朝ド % 物を・ d は 1 “物」による画第が ・ = なれ讐 00 を ( ー H ト日 0 各サーバーは、 ・ ReaIVideo 5.0 (media CONNECT) ・ ReaIVideo G2 (media CONNECT ( 日本、 米国 ) 、 CKP) この SoftwareVision の耳鯀目 . みは、たいへん興味深い ・ WMT (media CONNECT 、 Keel Networks 、 pana— ものでした。 LiveWatch というアニメーション画面か起 sonic Hi-HO 、 NTT America) 動し、 SBO ( ストライク、ポール、アウト ) 情報と打者の ・ SoftwareVision (media CONNECT) 情報カ隧次反映さ走者カ咄たときはアニメーションで 動きます。ここで使われる SBO や打者・走者などの情報 のように分昔攵して設置しました。 SoftwareVision につい は、 Web で使用していたものと同じものを連動させまし ては、〕尺すると別のページに jl はうにしました。それ た ( 図 5 ) 。 以外のアイコンがクリックされた場合には、 CGI スクリ SoftwareVision には、、、お知らせ機能 " と呼ばれるた プトを呼び出してラウンドロビン処理をしたり、各サー いへんおもしろい機能もあります。これは、得点が入った ーから耐妾ストリームを流すようなメタファイルと連動さ り、どちらカゝ - 一方のチームか攻撃側になった点、あるい せました。 ば尺した選手がバッターポックスに入ったときなどに生 サーバー機器は、 CKP の賛助会員であるイージーネッ 中継映像を表示する仕組みです。つまり、自分が知りたい ト 2 の協力を得て、 2U のラックマウント型 PC と NLX シーンになったら生中糸圜央像を呼び出してくれるのです。 のブック型 PC を借用しました ( 写真 2 ) 。 2U の PC に 前述のように、 SoftwareVision は別のページにしまし 使われているリムーバブル HDD ケースは、頑丈で冷却効 たが、それ以外のアプリケーションについては、 CGI ス 果がきわめて咼く、ラックマウントにはもってこいの逸品 クリプトを用いてメタファイルを返すような分散処理をお でした。 こないました。 CGI を利用すると、期間中の障害などへ こ数年、ストリーム配イ謝支術の進歩はめざましいもの の素早い対応か可能になります。さらに、大会終了後はス があります。昨年は RealVideo 5.0 か主充でしたが、今 トリーム系アプリケーションのメタファイルとしてではな 年は RealVideo G2 、さらには強烈なライバル・アプリ く、「ありがとうございました」といったコメントもスク ケーションとして Microsoft の WMT も登場しました。 リプト・ファイルを差し替えるだけで表示させることかで 新たな試みとして、 NTT サイバーソリューション研 きます。簡単なイ督目みなので、機会があ川まぜひお試しく 究所の協力を得て、独自のストリーム配信システム Soft- ださい ( リスト 1 ) 4 wareVision による配信もおこないました。 4 この程隻の処理であま、 PerI を使うまでもなく、 シェル・スクリプト 2 http://www.eni.co ・ jp/ でもイ吩でしよう。 3 http://www.softwarevision.or ・ jp/ 164 UNIX MAGAZINE 1999.10

10. UNIX MAGAZINE 1999年10月号

0 図 8 ha" を入力 7 第 pobox2 住回図 配罟ファイル発表 ノ 話ハイ は 図 9 絵交じり文の完成 pobox2 の方式はとってもです 住回ロ 0 0 図 11 HTML 文 く html> く b0dy bgcolor=white> く img . の方法はとっても く img src="heart . gif" align=center> です く img src="exclaim. gif" align=center> く br> く br> く /body> く /html> 図 12 htm12mail スクリプト # ! /usr/local/bin/perl $file = shift; open(in,$file) Ⅱ die "Can't open $file" " /tmp/msg$$ " $tmpfile open(out,"> $tmpfile") Ⅱ die "Can 't create message file" $ Ⅱ = 0 ; while( く in>){ chop ; $head = $ 1 ; $tail $image [ $ 司 "${head}cid: image${n}${tail}" $ 取十十 ; print out " $ ー \ Ⅱ " 図 10 HTML による絵交じり文 万イル ( り偏集 ( 印表不 ( 当シ。ャンフ・ 0 ) み ヘルフ・ ( 印 ・の方式まと。てもツです 0 ■同ロ 朝 ' フゆ場所・「、了ーヨ 作れます。 HTML への変換 文字を < img > タグて表現した HTML 文 ( 図 11 ) で、絵 ものを Netscape で表示したところです。それぞれの絵 す。図 10 は、図 9 の絵交しり文を HTML に変換した ルツールで読んだりすることか簡単にできるようになりま すれは、 Web プラウザて参照したり、 HTML 対応のメー このようにして作成した絵入りの文章を HTML に変換 を含む文を手軽に表現できます。 code でエンコードしたデータをまとめて 1 つのメール文 ッケージに含まれる mirnencode コマンドや、 rnimen- Communications Research) が開発した Metamail ノヾ ります。 MIME のエンコーディングには、 Bellcore (Bell ディングすれは、メールでも絵交じり文を送れるようにな いますが、これらのファイルをまとめて MIME 工ンコー この例では、 HTML と画像が別々のファイルになって 170 2 ftp://ftp.bellcore.com/pub/nsb/ close(out) ; $command $command 'metasend —b ー 0 mailtext ー / related "—f $tmpfile —m text/html —e 7bit "-n -f $image[$i] $ c omm and —m image/gif -i image$i system $command ; unlink $tmpfile ; ( 語ⅲの都合 - .E 、て折り返しています ) 書とする metasend コマンドが使えます。図 12 に示し た Perl スクリプト htm12mail のなかで metasend コ マンドを呼び出すと、図 11 の HTML ファイルから図 13 のような MIME 工ンコードされたテキストが作成で UNIX MAGAZINE 1999.10