[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:00542] Debian FAQ Ch.11



笹井@サーフライン西湘です。Debian FAQ の11章の翻訳の改訂版です。
校正よろしくお願いします。

--

11.  Debian GNU/Linux のインストールをカスタマイズする


11.1.  全てのプログラムが確実に同じ用紙サイズを使うように設定するには
どうすればいいのですか?

ファイル /etc/papersize には、システムのデフォルト用紙サイズの名前 (す
なわち letter や A4) が書かれています。これは環境変数 PAPERSIZE を使っ
て上書きすることもできます。詳しくは papersize(5) のマニュアルページを
見て下さい。


11.2.  X11 プログラムのアプリケーションデフォルトを設定するにはどうす
ればいいのですか?

Debian の X11 パッケージはユーザが /usr/X11R6/lib/X11/app-defaults/ の
中のファイルを変更しないことを想定しています。もし X アプリケーション
を全体的にカスタマイズしたければ、 /etc/X11/Xresources をカスタマイズ
して下さい。このファイルは設定ファイルとして認識され、たとえパッケージ
をアップグレードしてもその内容は保存されます。


11.3.  配布パッケージはそれぞれブートアップ方法が異なっているようです
ね。Debian の場合について教えて下さい。

全ての Unix と同様に、Debian は init プログラムを実行することによって
ブートアップします。init の設定ファイル (/etc/inittab) には、スクリプ
ト /etc/init.d/boot を最初に実行するように書かれています。このスクリプ
トは、ファイルシステムを調べてマウントし、モジュールをロードして、ネッ
トワークサービスを (スクリプト /etc/init.d/network を呼び出すことによっ
て) 開始します。また、時計を合わせたり、その他の初期化も行います。それ
から、/etc/rc.boot/ にある (ファイル名に . が付くものを除いた) 全ての
スクリプトを実行します。ここにあるスクリプトは、デフォルトのキーボード
を設定し、失われたエディターのファイルを復元し、シリアルポートを設定し
ます。ブートプロセスを終えると、init はデフォルト実行レベル (この実行
レベルは /etc/inittab に書かれた id のエントリによって決まります) に指
定されたディレクトリ中の全ての開始スクリプトを実行します。多くの 
System V 互換 Unix と同様に、Linux には7つの実行レベルがあります。

実行レベルには、0 (システム停止), 1 (シングルユーザモード), 2から5まで 
(様々なマルチユーザモード), 6 (システムリブート) があります。Debian シ
ステムは id=2 で開始します。これはマルチユーザ状態に入った時のデフォル
ト実行レベルが 2 であり、また、/etc/rc2.d/ の中のスクリプトが実行され
るということを意味しています。

実際には、/etc/rcN.d/ のどのディレクトリのスクリプトも /etc/init.d/ の
中にあるスクリプトへの単なるシンボリックリンクになっています。しかし、
ディレクトリ /etc/rcN.d/ の各々のファイル名は /etc/init.d/ 中のスクリ
プトをいつ走らせたらよいのかわかるように名付けられています。具体的に言
うと、ある実行レベルに入る前に、 'K' で始まる全てのスクリプトが実行さ
れます。これにより、そのサービスは停止されます。その次に、'S' で始まる
全てのスクリプトが実行されます。これにより、そのサービスは開始されます。'K' 
や 'S' に続く2桁の数はスクリプトが実行される順番を表しており、数の小さ
いスクリプトが最初に実行されます。

/etc/init.d/ の中にあるスクリプトは 'start' か 'stop' か 'reload' のど
れかを引数としてとり、その引数に従って定められた仕事を行います。このや
り方はなかなかうまく機能します。例えば、'reload' を引数としたコマンド 
/etc/init.d/sendmail reload は sendmail デーモンに設定ファイルを再読み
込みするようにシグナルを送ります。ここにあるスクリプトは、システムが様々
なプロセスを制御するためにブートしてしまった後でも利用できます。


11.4.  Debian はブートプロセスをカスタマイズするのに rc.local を使って
いないようですね。どんな手段が使えるのですか?

仮に、システムが起動時や特定の (System V) 実行レベルへの入り口でスクリ
プト foo を実行しなければならないとします。その場合、システム管理者は
次のようにして下さい。

o まず、スクリプト foo をディレクトリ /etc/init.d/ に入れて下さい。。

o 次に、Debian コマンド update-rc.d を適切な引数で走らせて下さい。これ
により、引数としてコマンドラインに指定したディレクトリ rc?.d と 
/etc/init.d/foo の間にリンクが作られます。ここで '?' は 0 から 6 まで
の数であり、System V の実行レベルに対応しています。

o 最後に、システムをリブートして下さい。

コマンド update-rc.d は /etc/init.d/ の中のスクリプトからディレクトリ 
rc?.d の中のファイルへのリンクを作成します。各々のリンクは 'S' や 'K' 
で始まり、その次に数字が続き、最後にスクリプトの名前が続きます。
/etc/rcN.d/ の中の 'S' で始まるスクリプトは実行レベル N に入った時に実
行されます。'K' で始まるスクリプトは実行レベル N を離れた時に実行され
ます。例えば、スクリプト foo を /etc/init.d/ の中に置き、update-rc.d
foo defaults 19 としてリンクを作成すると、ブート時にスクリプト foo を
実行させることができます。ここで、引数 'defaults' はデフォルトの実行レ
ベルである 2から5 を表しており、引数 '19' は foo がファイル名に20以上
の数を含んでいるスクリプトよりも先に呼び出されることを表しています。


11.5.  パッケージ管理システムでは、別のパッケージに関する設定ファイル
を含んでいるようなパッケージをどのようにして取り扱うのですか?

例えば、ユーザの環境に合わせた設定ファイルを含むパッケージをローカルに
作成しておき、いくつかの Debian パッケージ群とこの設定ファイルを含むパッ
ケージをインストールすることで簡単に新しいサーバを作りたい、という状況
を考えてみます。これは一般的に良い考えではありません。なぜなら、もし設
定ファイルが別のパッケージの中にあっても dpkg はそれらの設定ファイルに
ついて知るはずもなく、パッケージ群の一つをアップグレードした時に設定ファ
イルも更新されて矛盾が生じてしまいます。

かわりに、関心のある Debian パッケージ群の設定ファイルを修正したローカ
ルなパッケージを作って下さい。こうすれば、dpkg などのパッケージ管理シ
ステムは、ファイルがローカルなシステム管理者によって修正されたかどうか
わかるので、パッケージをアップグレードする時に上書きされることはありま
せん。


11.6.  あるパッケージによってインストールされたファイルを上書きして、
かわりに違うバージョンのものを使うにはどうすればいいのですか?

システム管理者やローカルユーザが Debian の login パッケージに含まれる 
login プログラムではなく login-local プログラムを使いたいとします。次
のようにしてはいけません。

o /bin/login を login-local で上書きする。

パッケージ管理システムはこの変更について知るはずもなく、login (あるい
は /bin/login を提供するパッケージ) を新たにインストールしたり更新した
りすると、カスタム /bin/login は単純に上書きされてしまいます。
次のようにして下さい。

o dpkg-divert --divert /bin/login.debian /bin/login を実行して下さい。
こうすれば、Debian login パッケージは、/bin/login ではなく 
/bin/login.debian にインストールされます。

o 次に、cp login-local /bin/login を実行して、ローカルに構築した 
login-local プログラムを /bin/login へ動かして下さい。

dpkg-divert には引数で細かい指示を与えることができます (コマンド 
dpkg-divert --help を使って調べることができます)。詳細は Debian プログ
ラマーズガイドを見て下さい。


11.7.  パッケージ管理システムが知っている利用可能パッケージのリスト
の中に自分で作ったパッケージを含めるにはどうすればいいのですか?

これには、次の2つの方法があります.

o dselect を使って、アクセス手段を再選択して、そのローカルなパッケージ
のあるディレクトリを指定して下さい。

o コマンド dpkg-scanpackages BIN_DIR  OVERRIDE_FILE [PATHPREFIX] > \
Packages.new を実行して下さい。ここで
   -- BIN-DIR は Debian アーカイブファイル (普通、拡張子 .deb を持つ) 
      があるディレクトリです。
   -- OVERRIDE_FILE は配布パッケージ管理人により編集されるファイルで、
      普通、main 配布パッケージのDebian パッケージに関しては Debian
      FTP アーカイブの indices/override.main.gz に保管されています。
   -- PATHPREFIX は生成される Package.new ファイルに付加することのでき
      るオプション文字列です。

一度あなたがファイル Packages.new を作ってしまえば、コマンド dpkg \
--update-avail Packages.new によってパッケージ管理システムにそれを教え
ることができます。


11.8.  mawk が好きなユーザもいれば gawk が好きなユーザもいます。vim が
好きなユーザもいれば elvis が好きなユーザもいます。trn が好きなユーザ
もいれば tin が好きなユーザもいます。Debian はこのような多様性をどのよ
うにしてサポートしているのですか?

二つのパッケージが同じプログラムの別のバージョンを提供している場合や、
二つのパッケージが同じ基本機能を提供している場合などいくつかのケースが
あります。習慣から、あるいは、あるパッケージのユーザインタフェースが別
のものよりもどういうわけか心地よいという理由から、どちらか一方のパッケー
ジを好むかもしれません。ところが、同じシステムを使っている別のユーザは
全く違う選択をするかもしれません。

Debian では仮想パッケージシステムを使うことによって、同じ基本機能を提
供する2つ以上のパッケージが存在している時にシステム管理者 (あるいはユー
ザ) がお気に入りのツールを選ぶことができます。また、特定のパッケージを
指定しなくても、パッケージ依存条件が満足されるようになっています。

例えば、一つのシステムに異なる2つのニュースリーダーが存在するとします。
ニュースサーバパッケージはシステムにニュースリーダーがインストールされ
ていることを'推薦 (recommend)'していても、tin か trn かという選択は個々
のユーザに任せています。これは tin と trn が共に仮想パッケージ 
news-reader となっているためにうまく機能します。どのプログラムが実行さ
れるかは仮想パッケージ名を持つファイル /etc/alternatives/news-reader 
から選択したファイル、例えば /usr/bin/trn へリンクを張ることにより決定
されます。このような方法を使った場合、プログラムを十分に利用するのには、
リンクが一つだけは不十分です。普通、マニュアルページやその他のサポート
ファイルも適切に選択されていなければなりません。Perl スクリプト 
update-alternative を使えば、パッケージに関連する全てのファイルをシス
テムデフォルトとして正しく選択することができます。

-- ここまで
---
笹井 崇司 (Takashi Sasai)
	Email:	sasai@xxxxxxxxxxxxxxxxxx