Linux Gazette 1999年11月号

Linuxは使っていますか。まだ使ったことのない方は是非試してみましょう。でもインストールする前にはシステムのデータのバックアップを必ず取って下さい。万が一データが消失してもそれは自己責任です。最初は古いマシンを使ってみることもいい方法だと思います。くれぐれもバックアップは忘れずに

今月のLinux Gazetteの内容


今月のニュース

始めにお願いがあります。ニュースはテキストフォーマットで送信して下さい。HTML, DOC, RTFなどは使わないで下さい。ニュースはプレスリリースではなく、製品、サービスがLinuxユーザーに有益な理由とウェブサイトのURLを送って下さい。

Linux Journal 1999年11月号が発売中です。今月の特集はデータベースです。Linus氏のインタビューも載っています。

ディストリビューションニュース

その他のディストリビューション関連ニュース

その他のニュース


More 2¢チップ


Bob Young氏LXNYで語る(By Stephen Adler)

オープンソース/オープンサイエンス1999の準備やコンファランスをインターネットでマルチキャスト放送するなどで忙しかったのですが、LXNYのBob Young氏の講演を聞いてきました。

今年のオープンソースの大きな出来事といえばRed Hatの株式公開です。NASDAQでの資産規模は50億ドルに登ります。

Young氏の講演は株式公開前の旅行の話から始まりました。コンピュータユーザーとの話からフリーソフトが重要だと気づきニュースレターを始めたことなど。話が自らの経験からフリーソフトウェアの質疑応答に移ったころには彼の新刊「Under the Radar」に関して質問が集中しました。筆者も他の人々がフリーソフトウェア市場に参入するとしたらどのようなアドバイスをしますか?と聞いてみたかったのだが質問する人が多すぎてできませんでした。次の機会には是非聞いてみます。彼の持ち時間が長すぎて疲れたのだろうが質問を切り上げることはできなかった。

帰りの車の中ではどうしてもBob Young氏とBill Gates氏を比べてしまった。オープンソース/フリーソフトウェアには奥の手がある。インターネットだ。この概念は国際的なネットワークのインターネットから生まれた。フリーソフトウェアのオープンソースという本質はインターネット上で協力したソフトウェア開発者の副産物だ。クローズドソースをオープンにすることは非常に難しい。ソフトウェア開発に投資してきた企業はオープンという概念からは離れている。これをインターネット以前の企業ということもできる。インターネットこそが我々の将来を握っている。ビジネスから交友まで。このインターネット文化の中ではクローズドソースモデルは衰退して行かざるを得ない。このような考えから今後企業が生き残るにはオープンソースのモデルを採用しなければならない。Red Hat, Caldera, Turbo Linux, Linux Careなどのインターネット後の企業のように。Red Hatの株は公開以来確実に上昇している。


Linuxのサウンドシステム(By Larry Ayers)

最近LInuxのサウンドとディスプレイのツールを調べてみた。Linuxのカーネルとともに提供されるドライバ(OSSドライバ)は基本的なものだが多数のサウンドカードをサポートしている。しかしオリジナルの開発者は別会社を設立した。4Front Technologiesだ。この企業はLinuxが対応していないサウンドカードのドライバも提供している。またフリーのLinuxのサウンドドライバの開発が遅いので待ち切れない連中がALSA(Advanced Linux Sound Architecture)を形成した。ALSAはドライバのコードを最初から書いている。果実はLinuxの新しいドライバモジュールとしてユーザーに利用されており、複数のサウンドカード企業がALSAにスペックを提供している。

さらにEnlightenmentから派生したサウンド開発も開始した。このプロジェクトはドライバを提供するものではなく、サウンドカードとアプリケーションの中間で機能するものだ。上記開発グループとも密接な連絡をとっている。

基本的なサウンドツールとしてSox, mpg123, Gramofile, cdrecordなどがある。Gramofileはレコードを録音するためのツールのようだがカセットテープのトラックの録音も可能のようだ。

次ぎに高機能のサウンドユティリティが紹介されている。WAVEファイルを扱うソフトとしてcdda2wav, cdparanoiaなどがあり、GUIのフロントエンドも開発されている。その中でもGripが使いやすい。演奏ソフトとしてはAlsaplayerが紹介されている。これはWAV、MP3、CDなどに対応している。WAVエディタとしてはsndが紹介されているが、使いこなすのは結構難しそうだ。

その他にサウンドビジュアライゼーションのツールなども紹介されている。


LinuxでToken Ring

この記事はLinuxでToken Ringをインストールして使用する方法を説明している。内容は

物理的なカードのインストールが終了しテストが済んだらLinuxのカーネルを再構築しなければならない。カーネルコンパイルには「menuconfig」か「xconfig」を使った方がいい。「make config」ではタイプミスをしたら最初からやり直さなければならない。

今回はToken Ringをカーネルのモジュールとしてではなくカーネルに組み込んだので設定ファイルを変更する必要はない。起動時のログでインタフェースがちゃんと起動していることを確認しましょう。


    arrgh!  Transmitter busy

    Unknown command 08h in arb

というようなエラーが出た場合にはラムアドレスが違っているので「0xD0000h」に設定しなおします。

Token Ring カードが認識されたらインタフェースの設定をします。IPアドレス、マスク、ブロードキャストアドレス、デフォルトルートアドレス等です。Slackwareでは/etc/rc.d/rc.inet1のファイルでこれらの設定を行います。テストのためにコマンドラインで


  /sbin/ifconfig tr0 192.168.2.1 broadcast 192.168.2.255 netmask 255.255.255.0

と打ち込めば

  tr0 is the first Token Ring adapter found

  192.168.2.1 is the IP address of the interface

  192.168.2.255 is the broadcast address of the interface

  255.255.255.0 is the subnet mask

というメッセージが表示されるはずです。「ifconfig」をコマンドラインで打ち込むと eth0, tr0, loのインタフェースが表示されます。ここで重要なことはイーサネットとToken Ringのアドレスは別なものにすることです。今回はeth0に192.168.1.0をtr0に192.168.2.0を使用しています。

Token Ringとイーサネットのルーティングには二つの方法があります。一つはOSIモデルのデータリンク層を使用する方法ですがLInuxは対応していません。二つ目はネットワーク層を使用する方法です。ネットワーク層のデータはIPデータグラムとして扱われますから二つのLANを接続するにはルーティングを追加するだけで済みます。例えば単にネットワークを追加するだけなら


  /sbin/route add -net 192.168.2.0 netmask 255.255.255.0

というコマンドを発効すれば完了です。"ping"を使用してそれぞれのネットワークが正しく認識されているかどうか確かめましょう。

LinuxはToken Ringの動作に関して何ら問題はないのですがWindows 95には若干問題があります。Windows 95は設定を変更するたびに再起動を要求されます。イーサネットは問題ないのですがToken Ringは設定が変更されるとソフトブートではなくハードブートを要求するからです。結果的にはWindows 95はネットワーク接続を停止しソフトブートの途中でハングします。これはWindows 95に問題があります。多分最新のWindows 9x版では問題が解決されていると思います。


Socketプログラミング(By Pedro Paulo Ferreira Bueno and Antonio Pires de Castro Junior

ほとんどのOSは標準でTCP/IPでのウェブサーバー/クライアントやFTP, TELNETクライアント/サーバーに対応しています。これらインターネットのユティリティを使用するときにそのプロセスまで気にしたことはありません。そこでソケットAPIを使用したチャットプログラムを作ってその理解を深めることにします。

ネットワークアプリケーションはほとんどクライアント、サーバーに分類され、ソケットを作成するにはドメイン、タイプ、プロトコルを明示しなければなりません。


  int socket(int domain, int type, int protocol);

のように。今回使用するパラメータはARPAインターネットプロトコル、SOCK_STREAM、IPです。

チャットプログラムのサーバーから作成します。通常ソケットはポートに関連付されます。Telnetなら23、FTPなら21のように。今回はポートとして15000を選びました。ソケットを動作させるにはアドレスを指定しポートをバインドします。これでクライアントからメッセージを受信する準備が整います。

TCP/IPソフトウェアはOSの機能の一部なのでアプリケーションとTCP/IPプロトコルとのインタフェースはOSの機能によります。今回はLinuxも対応しているUNIX BSDソケットでテストしました。今回のチャットプログラムはLinuxでいかに簡単にソケットを使ったプログラムが書けるかを示したものです。今回のプログラムは


  1. サーバーの起動

  2. サーバーのアドレスでクライアントを起動する

でテストすることができます。


MS-DOS 6.2, Windows 98, Windows NT Server 4.0, Linuxでマルチブート(By Tom de Blende)

最新のHOWTOはhttp://bewoner.dma.be/BeversHP/multiboot.htmlにあります。今回はPCのマルチブート環境を構築した方法を説明します。この方法は筆者の環境では問題なく動作していますがすべての環境で同じように動作することを保証するものではありません。

今回はブートローダにNTブートローダを使います。ですからWindows NTをインストールしなければなりません。もしNTを使いたくなければMS-DOS/Windows 9x/Linuxを起動するのにLiloが使えます。因みに筆者の環境は以下の通りです。

今回のマルチブート環境はそれぞれのファイルシステムを利用して安価に構成することです。インストールした環境は次の通りです。
Disk one


   プライマリアクティブパーティション: MS-DOS 6.22 (FAT16, 400MB)

   論理ドライブ:NTサーバ 4.0(NTFS, 1.7GB)

   論理ドライブ:Windows 98(FAT32, 4.1GB)

Disk two

   プライマリパーティション:共有スペース(FAT16 1GB)

   残りスペース:Linux (EXT2, 2GB)

Windows 98をインストールしているのになぜMS-DOS 6.22をインストールしているのか。理由はCドライブのアクティブパーティションにWindows 98をインストールしてしまうとFAT32ファイルシステムになってしまいWindows NTでは起動ファイルが読み込めなくなってしまうからです。次に注意しなければならないのはNTディスクマネージャで他のOSのパーティション/論理ドライブの作成をしないことです。それぞれのOSを支障なくインストールするには次のことに注意して下さい。

全てのOSをインストールする手順は次の通りです。

  1. 1台目のハードディスクが接続されておりパーティションは切ってないこと。2台目はまだ接続する必要はありません。
  2. DOSのインストールディスクを挿入します。ブルースクリーンになってもDOSのインストールは選択しないこと。F3を2度押してインストールを終了します。まずすることはMBRをクリーンにすること
    
       a:/> fdisk /mbr
    
    
  3. ここで"fdisk"を起動してDOS用のパーティション(400MB)を作成します。次にこのパーティションをアクティブにします
  4. PCを再起動して変更を認識させ、再びDOSのインストールディスクでPCを起動しDOSをインストールします
  5. 次にWindows 98のインストールディスクでPCを再起動し"fdisk"を起動します。ここで「large disk」のサポートをするかどうか尋ねられますから「yes」と打ち込み、残りのスペースに拡張パーティションと論理ドライブを作成します。ここでPCの電源を切ります。
  6. 2台目のHDDを接続します。HDDが1台の場合や2台目のHDDに基本区画がない場合は当てはまりません。そしてフォーマットします。
  7. Windows 98をインストールします。もしスキャンディスクでエラーが出て進めない場合は
    
      setup /is
    
    
    とタイプしてスキャンディスクを回避します。
  8. Windows NTをインストールします。ファイルシステムをNTFSにすることを忘れずに
  9. 最後にNTローダーをインストールします。これでDOS, Windows 98, Windows NTのマルチブート環境が構築されました。Windows 98環境ではWindows NTドライブは見えません。NT環境からはWindows 98ドライブにアクセスすることはできません。FAT 32を使えばNT環境でWindows 98ドライブを読むことができます。またNTFSDOSを使えばWindows 98環境でWindows NTドライブを読むことができます。
  10. ようやくLinuxをインストールする準備ができました。インストールしたら忘れずにLinuxのブートディスクを作成して下さい。
  11. Liloの設定ではLiloをインストールする場所をMBRにはしないこと。かならず/(ルート)にして下さい。
  12. Linuxのインストールが済んだらNTブートメニューにOSを追加します。それにはBootPartを使用します。NTのDOSボックスでbootpartを起動し、コマンドプロンプトで次のコマンドを打ち込みます。
    
      c:/bootpart> BOOTPART DOS622 C:/BOOTSECT.622 "MS-Dos 6.22"
    
      c:/bootpart> BOOTPART WIN95 C:/BOOTSECT.w95 "Windows 98"
    
      c:/bootpart> BOOTPART REWRITEROOT:C:
    
    
    Linuxを追加するには
    
      c:/bootpart> BOOTPART $linuxpartion$ BOOTSECT.LIN Linux Redhat 6.0
    
    
    これで終了です。

Linuxサーバーネットワークの設定(By Alex Heizer)

Linuxのサーバーはコストを押えることができます。例えば5ユーザーのライセンスのついたIntelアーキテクチャのサーバーではメールもウェブサーバーもつかずに1,000ドル以上します。それに管理の容易さも考慮しなければなりません。

ハードウェアはx86ベースのPCが5台、その中でP133, 8MB RAMのマシンをサーバーにします。最も非力なマシンですがこのサイズのサーバーには十分です。全てのマシンにはシアトルのソフトウェア企業のGUIベースのOSがプリインストールされています。これらをSambaを使ってネットワークを構築するのは難しくはありません。

用意したハードウェアはNIC、ケーブル、ハブ、13GB HDDです。OSにはCaldera OpenLinuxを選びました。慣れているSlackware 3.5にしたかったのですが最新のプログラム、カーネルを使えるのとインストールが容易だということでCalderaにしました。

サーバーが立ち上がればワークステーションをネットワークに接続するのは簡単です。それぞれのワークステーションを設定しサーバーのIPアドレス、ゲートウェイアドレス、ドメインネームを設定したらSambaの設定ファイルを開いて必要な箇所のコメントを外します。Linuxは設定が難しいとはよく言われていますがこれは非常に簡単です。98年のOSはパスワードを暗号化して送信するのでこの部分もSambaの設定ファイルを修正しなければなりません。

サーバーの設定が済んだらユーザーアカウントを設定します。財務、会計の資料、管理書類、スプレッドシート、その他重要な書類はすべてのワークステーションがアクセスできるようにサーバーに置きます。バックアップにはColorado Trakkerというテープドライブを使います。

将来はApacheウェブサーバーを入れ、ダイアルイン、TELNET、FTP、POPサービス等も予定しています。


Security 最初のステップ(By Peter Lukas)

最近のディストリビューションのほとんどは習慣からかセキュリティホールが存在したままになっている。インストール後に立ち上げるとSHELL, IMAP, POP3のようなサービスが起動している。このようなサービスは他人に利用されやすい。これはLinuxだけではなくUNIX全部についていえることだ。このようなセキュリティホールをブロックすることはそれほど難しいことではない。5分もあれば攻撃の90%以上はブロックすることができる。

まずインターネットに接続されているマシンのサービスを慎重に検討することが大事だ。確信が持てないサービスは起動しない。この記事で想定しているマシンはメール、ニューズ、ウェブブラウジングなどができるワークステーションだ。

システムの設定を変更するにはスーパーユーザー(root)の権限が必要だ。rootになって現在の状況を"netstat"コマンドで確認しよう。結果は例えば次のようになる。

root@percy / ]# netstat -a
Active Internet connections (servers and established)
ProtoRecv-QSend-QLocal AddressForeign AddressState
tcp00*:imap2*:*LISTEN
tcp00*:pop-3*:*LISTEN
tcp00*:linuxconf*:*LISTEN
tcp00*:auth*:*LISTEN
tcp00*:finger*:*LISTEN
tcp00*:login*:*LISTEN
tcp00*:shell*:*LISTEN
tcp00*:telnet*:*LISTEN
tcp00*:ftp*:*LISTEN
tcp00*:6000*:*LISTEN
udp00*:ntalk*:*
udp00*:talk*:*
udp00*:xdmcp*:*
raw00*:icmp*:*7
raw00*:tcp*:*7

このようにインストール直後は多数のサービスが起動されている。これらのサービスを起動させたままにしておくのは危険だ。サービスの停止は"/etc/inetd.conf"ファイルを修正すれば簡単にできる。ファイルを開いて必要のないサービスをコメントアウトしよう。今回の例からすると全てのサービスをコメントアウトすることになる。ファイルの修正が済んだら変更を反映させなければならない。方法はいくつかあるが例えば


  killall -HUP inetd

としよう。

次は動作しているプロセスのチェックだ。多分、sendmail, lpd, snmpdなどが動作しているはずだ。これらのプロセスも必要ない。これらのプロセスはディストリビューションにもよるが "/etc/init.d" 又は "/etc/rc.d" から起動されているはずだ。これらのプロセスを起動しているスクリプトを探して起動しないようにしよう。今回の例で停止させるプロセスは "r"サービス(rwho, wrallなど)、lpd、ucd-snmp、Apacheなどだ。

最近のディストリビューションはX Windowシステムのログインマネージャを使用しているものが多いがこれも利用されやすい。デフォルトで全てのホストがログインウィンドウを利用することができるからだ。今回のマシン環境ではログインユーザーが一人なのでこれも必要ない。"/usr/X11R6/lib/X11/Xaccessファイルを変更して最初にxdmが起動しないようにしよう。筆者の環境では次のようになっている。


#* #any host can get a login window

#* #any indirect host can get a chooser

xdmを再起動すれば変更が反映される。

オープンソースのいいところは多数のユーザーにより不具合が発見されすぐにベンダーによりそれが修正されることだろう。ベンダーはアップデートやバグ修正版をウェブサイトにアップロードしていることが多い。自分のディストリビューションのベンダーのサイトはこまめにチェックすることにしよう。

これだけの作業でもセキュリティは大幅に強化されている。ここまでのセキュリティは個人の家庭の防犯と同じだ。泥棒は鍵がかかっているかどうかを確かめ鍵がかかっていれば他の獲物を探して移動する。これ以上のセキュリティを必要としたり、インターネットで何らかのサービスを提供したい場合にはより高度なセキュリティを検討しなければならない。


プログラム言語、Dino(By Vladimir N. Makarov)

DinoはPerlやTCLやPythonのような動的なスクリプト言語だ。文法はC言語に似ている。今回はDinoを簡単に紹介する。でもこれはプログラマーのマニュアルではない。

Dinoはロシアのグラフィック企業であるANIMATEKがアニメーションのダイナソーの動きを表現するために開発した(同時に言語の名前にもなっている)。プログラムの雰囲気を理解するにはコードを見てみるのが手っ取り早い。今回はDinoでアセンブラを書いてそれを紹介している。

今回Dinoを紹介するために書いたアセンブラは200行だ。DinoインタープリタはGPLの下で配布されている。
http://www.linuxstart.com/~vladimir_makarov/kinoload.html
http://www.freespeech.org/vmakarov/dinoload.html
興味のある方はLinux Gazetteのホームページにアクセスして下さい。


Micro Publishing(By Rick Holbert and Mark Nielsen)

現在「Books on Demad」はまだ夢だと考えられている。しかし「Books on Demand」を構成するものはほとんど完成しているのだ。例えばDesktop PublishingやLaser Printersなどのように。足りないのは最終的に完成した本だ。この記事で説明する内容はフリーのLinuxソフトウェア、レーザープリンタ、"book binding vise"等を使用している。

まず使用するのはmpageだ。mpageは入出力にpostscriptを使用する。その他使用されるツールには次のようなものがある。


  Tex, LaTeX

  dvips

  PDFTeX, PDFLaTeX

  Ghostscript

  Acrobat Reader

ハードウェアはLinuxボックスの他にレーザープリンタ、装丁用の機械などが必要だ。ここで装丁に関しても説明されているが実際の装丁作業は省略してLinuxで作業する部分を紹介しよう。オリジナルファイルがTeX, texinfo, LaTeXならtex/latex, dvips等を使ってpostscriptに変換する。例えばコマンドは次のようになる。

  tex filename.tex

  tex filename.tex

  makeindex filename.??

  dvips filename.dvi -o filename.ps

  又は texi2dvi filename.texi

  dvips filename.dvi -o filename.ps

PDFTeX, PDFLaTeXを使ってPDFファイルを作りそれからpostscriptファイルを作ればなおいい。コマンドは「pdftex filename.tex 又は pdflatex filename.tex」だ。

これでmpageを使う準備ができた。本のサイズは5.5インチx8.5インチだ。mpageのコマンドは次の通り。


  mpage -O -b Letter -o filename.ps > filename_front.ps

  mpage -E -b Letter -o filename.ps > filename_back.ps

PDFファイルを"ps2pdf"コマンドを使って作りAcrobat Readerから印刷をした方が他のOSでの利用は簡単だ。後は印刷をし本にすれば出来上がりだ。良かったら自分の本作りを楽しんで下さい。


Emacsのマクロ(By Jesper Kjaer Pedersen)

コンピュータは生活を容易にする道具だ。いろいろな作業の中でも単調な繰り返しの作業は指示するのも容易だ。Emacsはマクロでこの機能をサポートしている。今回はEmacsのマクロについて説明しよう。

Emacsのマクロを定義するのはC-x ( だ。方法はCtrlを押し同時にxを押す。次にCtrlとxを離して ( を押す。Ctrl-x ) でマクロ定義は終了する。Ctrl-x eでマクロを実行することができる。マクロを繰り返すにはCtrl-x eを回数分押さなければならない。これを回避するには.emacsファイルに


  (global-set-key [(shift f1)] 'call-last-kbd-macro)

を追加してshift-F1を押せばいい。

まず簡単なマクロの例を紹介しよう。これはHTMLファイルで使う<b> </b> と同じで単語をボール度に変換するものだ。方法は単語の始めに <b> を挿入し単語の最期に </b> を挿入するものだがこれだけではすまない。何故ならマクロは単語の最後を認識できないからだ。このためには"forward-word, backward-word"コマンドを使用する。これはCtrlと左アローキーにバインドされている。マクロを記録するときに"C-u C-x q"をタイプして再帰編集モードに入るようにします。これでEmacsがマクロを実行するたびに指定された場所でコマンド入力を待ち"C-M-c"でマクロの実行を続けます。マクロの記録が終了したら簡単なテストをしてみましょう。


  C-x ( Type a word ==> C-u C-x q

  次に「Hello World」とタイプして

  C-M-c <== C-x )

この動作で「Type a word ==>Hello World<==」という文字列がバッファに入力されています。Emacsで記録したマクロを実行するとEmacsは「Type a word ==>」で停止し、「C-M-c」で動作を続けます。

これでEmacsのマクロの感じが理解できたでしょう。次にパワーマクロを簡単に紹介します。パワーマクロは筆者がEmacs用に開発したマクロパッケージです。これをEmacsで使用するにはファイルをホームページからダウンロードしてlispファイルをEmacsのパスの通ったところへコピーし、.emacsファイルに次のスクリプトを追加します。


  (require 'power-macros)

  (power-macros-mode)

  (pm-load)

パワーマクロをインストールするとマクロの実行を特定のキーに割り当てることができ、モードによりマクロのアクセスを制限できます。

しばらく前に講演をする機会がありましたが講演の直前にプレゼンテーションプログラムが動作しなくなって困ったことがありました。たまたまプレゼンテーションプログラムで使用した内容がASCIIだったのでこれをEmacsで代用することにしました。Emacsへの入力はすぐに済んだのですがプレゼンテーションページの切替えをどうするかの問題が出てきました。答えはもうお分かりでしょう。そのために二つのマクロを作ってその場は事無きを得ました。もし皆さんがもっとEmacsについて知りたいと思ったら私のホームページhttp://www.imada.sdu.dk/~blackie/emacsを覗いて下さい。


ホームネットワークのバックアップ(By JC Pollman and Bill Mote)

バックアップに使用されるプログラムは通常 "TAR, CPIO, DUMP" だ。小さなネットワークでは "tar" が良く使われるが、これはテープでのバックアップ用に作られたものなので差分バックアップなどは不得手だ。差分バックアップが不得手という面では "cpio" も同じだが、"tar" に比べるとアーカイブが小さい、アーカイブが部分的に壊れても全てが壊れるわけではないという利点がある。"dump" は "tar" や "cpio" に比べると全然別のものだ。これはファイルではなくファイルシステムをバックアップする。さらにファイルシステムの種類を問わない。一度に一つのファイルシステムをバックアップし9レベルの差分バックアップ機能がある。だがディレクトリ毎のバックアップはできずしかも記憶スペースは"tar"や"cpio"よりも大きい。

筆者の書いたバックアップ用のスクリプトとcrontabはLinux Gazetteのホームページを参照して下さい。バックアップの内容は毎月最初にディレクトリのフルバックアップを、毎週日曜日に特定のディレクトリをバックアップし先週のファイルに上書きします。さらに日曜日のバックアップの時間を保存しておき毎日変更されたファイルをバックアップします。これを "crontab" で自動的に起動させればほとんど手間はかかりません。


家庭で使うUNIX(By Rob Reid)

学校でUNIXを使っていたので家のコンピュータにもLinuxをインストールしました。Linuxは素晴らしいOSですが家庭で使うOSとしてはまだ不十分だと思います。例えば "locate" データベースが更新されない、ログファイルが溜ってしまうなどです。これはUNIXが伝統的にスイッチをいれたら落さないということがその理由です。家庭で使うコンピュータは頻繁にスイッチを落します。でも "cron" のために年中コンピュータを on にしておくわけにもいきませんから起動時間を変更する事にしました。コンピュータを使用する時間は決ってないので1時間毎に "cron" を起動させることにします。さらにタイムスタンプをチェックして最近起動されている場合にはジョブをキャンセルするようにしています。

コンピュータの起動、シャットダウンの時間を短縮するには必要の無いデーモンを起動しないことです。ランレベル3の起動処理の半分はネットワークにとられています。そこでランレベル4を使用して起動時間を短縮させます。ネットワークが必要な場合にはスクリプトでネットワークを起動します。必要が無くなったらネットワークをダウンします。さらに"tune2fs"コマンドで起動時のファイルシステムのチェックの回数を変更することもできます。これは"man"ページを良く読んで下さい。筆者が推奨する回数というものはありません。


家庭でWebアプリケーションの開発-その1(By Anderson Silva)

Linuxの良い点は安価にフル機能のサーバーを家庭で構築できることです。現在3台のコンピュータを使用しルーターはPentium 133, 32MB RAM, 1.7GB HDのマシンです。このマシンはルーターの他にもdns. firewall/proxy, samba, webサーバーを兼ねています。

この記事はPentium 133のような非力なマシンでもウェブアプリケーションが構築できるということとPHPの紹介をします。PHPは独立したスクリプト言語です。文法はC, C++, Javaなどに似ているのでそれらのプログラムの経験がある場合には難しいものではありません。PHPの最も優れている点はOracle, Sybase, mSQL, MySQL, ODBC, dBaseなどのデータベースのインタフェースを提供していることです。

Red HatをインストールするとPHP3とPostgreSQLデータベースがインストールされますが、今回はPHP3とMySQLを使用します。MySQLはhttp://www.mysql.com/download_3.22.htmlからダウンロードできます。Red Hatを使っているなら


  The Server - MySQL-3.22.17-1.i386.rpm

  The Client - MySQL-client-3.22.17-1.i386.rpm

  The Development Libraries - MySQL-devel-3.22.27-1.i386.rpm

をダウンロードした方がいいでしょう。ダウンロードしたら

  rpm -ivh MySQL-*

と言うコマンドでインストールします。

MySQLは優れたオンラインヘルプや管理を容易にするGUIなどのおかげでそれほど難しいものではありません。

次にPHP3をインストールします。Red HatはPHP3をインストール済ですがPostgreSQL対応に設定されています。そこでFAQを参照しながらMySQL対応に設定します。MySQL対応にPHPを設定する方法は次のようになります。


    まずmod_php3をアンインストールします

       rpm -e mod_php3

    次にrpmのソースを入手してインストールします

       rpm -Uvh mod_php3-3.0.5-2.src.rpm

    /usr/src/redhat/SPECS/mod_php3.specファイルを修正して

       %buildセクションに使用するデータベース名とパスを追加します

       MySQLの場合は  「--with-mysql=/usr \」を追加します

   修正が済んだらバイナリを作成します

       rpm -bb /usr/src/redhat/SPECS/mod_php3.spec

   バイナリを作成したらインストールします

      rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm

Apacheを再起動すればMySQL対応のPHP3が利用できます。

もう一つの問題はRed HatなどのディストリビューションはPHP3をすでにインストールしていることです。この場合はApacheの設定ファイルでPHP3を起動しないようにして下さい。この問題もFAQに載っています。


       # Extra Modules

       AddModule mod_php.c

       AddModule mod_php3.c

       AddModule mod_perl.c



       # Extra Modules

       LoadModule php_module modules/mod_php.so

       LoadModule php3_module modules/libphp3.so

       LoadModule perl_module modules/libperl.so



       追加:

       AddType application/x-httpd-php3 .php3

       「global properties」、又は「VirtualDomain」のプロパティ

MySQL、PHP3をインストールしてPHP3を起動すれば終了です。

テストをするにはウェブのルートディレクトリに次のようなファイルを作ります。


  ファイル名:phptest.php3



  <?

  echo "<HTML>\n";

  echo "<HEAD><TITLE>Hello World!</TITLE></HEAD>\n"

  echo "Testing PHP3 with Hello World!\n";

  ?>

ファイルを作ったらウェブブラウザを開いてphptest.php3のスクリプトが表示されれば設定は完了しています。来月はMySQLデータベースを使った少し複雑なデータ入力を紹介します。


今月のLinuxサイト:Linuxnewbie.org(By Slambo)

毎月Linuxに関するサイトを紹介するコーナーです。今月はLinuxNewbie.orgです。サイトには「誰でも自分で見つけた方法などを書き込んで公開することができる。テストが必要かも知れないがもしそれなりの価値のあるものなら他のユーザーも利用できるだろう」とあります。サイトで公開されているのは初心者用のヘルプ、フォーラム、アーティクル、書籍の紹介、推薦、Linux/オープンソースに関するニュースなど多様です。

初心者用のヘルプはIntelとMacから始まりネットワーク、モデム、Xウィンドウ、セキュリティ、サウンド等と続きます。掲示版では活発に意見の交換がされています。書籍に関してはLinuxハッカー用からO'Reillyの刊行物、その他有用なものが紹介されています。唯一このサイトに欠けているものといえば検索エンジンでしょう。有用な情報がフォーラムの中に埋もれてしまっていますが、時間をかけてこのサイト探索して下さい。


トランザクションプロトコル:T/TCP

現在トランザクションに利用できるプロトコルはTCPとUDPだ。T/TCPはTCP/IPプロトコルでトランザクション処理をするためのTCPの拡張だがまだ試験段階だ。TCPとUDPはそれぞれに長所と短所がある。現在はSunOS 4.1.3、FreeBSD 2.0、LinuxなどがT/TCPに対応している。今回はT/TCPがネットワークで採用された場合に開発者が利用できるようなオペーレーションや管理について説明する。

TCP/IPは広く使われているがその中でもTCPがリファランスモデルになっている。その他UDPというプロトコルがある。UDPはコネクションの確立をしないプロトコルなのでデータがホストに届いていると仮定している。その意味で信頼性に欠けるが速度を優先するDNSなどに使われている。TCPは接続を確立しエラー訂正機能があり信頼性は問題ないがその点でUDPよりは遅い。

インターネットの拡大とともにUDPより速くTCPよりも信頼性のあるプロトコルが必要とされるようになってきた。トランザクションTCP(T/TCP)はTCPとUDPの後継プロトコルと見られている。つまりトランザクションを念頭に置いたプロトコルだ。T/TCPはハンドシェイクを簡単にしタイムウェイトを短縮して速度をあげている。1994年にはT/TCPの仕様がRFC1644として公開されている。

インターネットの拡大はネットワークの帯域幅や速度にも影響を及ぼしている。トランザクションの最小の通信は2パケットだ。リクエストに一つ、応答に一つ。UDPならこれが可能だ。T/TCPはTCPの信頼性を確保してなおかつこれに近い。実際は3パケットになるが。サーバーへの受領確認のパケットがUDPに加わったようなものだ。

TCP Accelerated Open(TAO)はT/TCPプロトコルのホストとの接続を確立するパケット数を減少させ、さらにconnection count(CC)を採用して次回からの接続を容易にしている。

CCオプションの採用によりタイムウェイトの時間も短縮できる。

T/TCPはデータ転送に関わるセグメント数を減少させるメカニズムだ。テストでは接続の確立、データの送信、接続の終了が1セグメントで済んでいる。TCPでは接続の確立、データ送信、接続の終了がそれぞれ別のプロセスになっている。T/TCPは小さなデータの送信には最適だ。現在ではHPPT, RPC, DNSなどがこれに当たる。


LinuxでWebサイトの構築を指導する(By Alan Ward)

この記事は主にウェブサイト構築に関わる教師へのものですが他の人も有用だと思います。まずサイト構築に関する最初の疑問は

  1. サイトを構築する環境
  2. どのHTMLエディタを使用するか
ではないでしょうか。環境はサーバーのソフトウェアのことです。現在はWindows NT、Windows 98(イントラネット)、UNIXサーバーなどがあります。HTMLエディタは最初の疑問に関連します。つまりWindowsを使うならMS Frontpage、NetscapeサーバーならNetscape Communicator、Unix/Linuxなら多様です。今回はLInuxでApacheサーバー、クライアントはWindowsとiExplore, Netscape, Hot Javaとします。

サーバーの構築にもいろいろあります。インターネット、イントラネット、最初は開発用で完了時にインターネットサーバーにする等。一つの例としてはMS Personal Webサーバーで開発をし終了時にISPにアップロードすることなどが考えられます。今回はLinuxとApacheサーバーですからローカルで動作すればISPでも同様に動作するはずです。これは子供達に教える場合は重要です。その上サーバーのドキュメントのメンテナンスにはFTPを使用しますのでFTPサーバーを標準で持っているLinuxの方が断然便利です。

HTMLエディタに関してはまず通常のテキストエディタを使用したいと思っています。そうすればHTMLコーディングにも慣れいずれはFrontpageなどのHTMLエディタを使用する場合にも困らないでしょう。ですからWindowsではノートパッドを使っていますが、Linuxでは使いやすいものでいいでしょう。例えば "gedit, kedit, vi..." など。筆者の好みはEmacsです。この記事もEmacsのHTMLモードを利用して書いています。高度なエディタとしてはNetscapeコンポーザがいいと思います。理由は使用できるプラットフォームが多岐に渡るからです。

次に考慮しなければならないのは読者です。つまり読者のブラウザの種類です。ブラウザにより表現が変わります。結論としては汎用的なページを作成しなければなりません。サイトを公開する前にプラットフォームを変えてアクセスする、ブラウザを変えてアクセスする、ディスプレイの解像度を変えてアクセスするなどの作業が必要です。その他にも最新のHTML機能の採用(DHTML、VRMLなど)、フレーム、Javaなどの利用により表現が変わります。

異なったハードウェアやソフトウェアの利用によりインターネットはかなり複雑な状態になっています。私の経験から言えることは子供達はインターネットの利用に慣れていますのでこのようなインターネットの複雑さを徐々に理解していくものと思います。現在はCやPerlを使ったウェブプログラムにも興味があります。


あとがき

今月のLinux Gazetteはいかがでしたか。今月もバックアップに関する記事がありましたがこれはLinuxに限らずどのOSでも非常に大事なことです。遊びでインストールしているうちはいいのですが、仕事で使ったり、メールの送受信で使ったりすると保存してあるデータを後で再利用することがあるかもしれません。再利用するかどうかは別にしてもバックアップは必ず取りましょう。いつ何が起こるか分かりませんから。