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

[debian-devel:00369] 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 (コマンドライン指定)ディレクトリ rc?.d と /etc/init.d/foo の間のリン
クを設定するために、Debian コマンド update-rc.d を適切な引数で走らせて
下さい。ここで '?' は 0 から 6 までの数であり、System V 実行レベルに対
応しています。
o システムをリブートして下さい。

コマンド update-rc.d はディレクトリ rc?.d の中のファイルと 
/etc/init.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 を実行して、あなた自身のローカル
に構築されたプログラムをその場所へ動かして下さい。

いくつかの細部は 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つのニュースリーダーが存在
するとします。ニュースサーバパッケージはシステムにニュースリーダーがあ
ることを'推薦'するかも知れませんが、tin か trn の選択は個々のユーザに
任されます。これは tin と trn の両方が仮想パッケージ news-reader を提
供することにより満足されます。どのプログラムが実行されるかは仮想パッケー
ジ名を持つファイル /etc/alternatives/news-reader から選択したファイル、
例えば、 /usr/bin/trn へリンクを張ることにより決定されます。
選択可能なプログラムを十分に使えるようにサポートするのに、一つのリンク
だけは不十分です。普通、マニュアルページとおそらくその他のサポートファイ
ルもまた適切に選ばれていなければなりません。Perl スクリプト 
update-alternative は特定のパッケージに関連する全てのファイルがシステム
デフォルトとして選択される方法を提供しています。

--- 以上
---
笹井 崇司 (Takashi Sasai)
	Email:	sasai@xxxxxxxxxxxxxxxxxx
		sasai@xxxxxxxxxxxxxxxxxxxxxxx