[% title = "The Debian GNU/Linux FAQ - Debian GNU/Linux のインストールをカスタマイズする" %]
[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 次のページ ]
ファイル /etc/papersize にはシステムのデフォルト用紙サイズの 名前 (すなわち letter や A4) が書かれています。これは環境変数 PAPERSIZE を使って上書きすることができます。詳しくは papersize(5) のマニュアルページを見て下さい。
/dev ディレクトリにある多くのデバイスファイルは予め定義され た何らかのグループに属しています。例えば /dev/fd0 は floppy グループに属しており、/dev/dsp は audio グループに属しています。
あるユーザがこれらのデバイスの一つにアクセスできるようにするには、そ のデバイスが属するグループにそのユーザを加えれば結構です。つまり
adduser user group
とします。こうすればデバイスファイルを chmod する必要はありません。
kbd
と console-tools
パッケージがこれをサポートし
ています。/etc/kbd/config あるいは
/etc/console-tools/config ファイルを編集してください。
Debian の X11 インストールは、ユーザが /usr/X11R6/lib/X11/app-defaults/ の中のファイルを変更しないこと を想定しています。もし X アプリケーションを全体的にカスタマイズしたけれ ば /etc/X11/Xresources をカスタマイズして下さい。このファイル は設定ファイルとして登録されているので、パッケージをアップグレードしても その内容は保存されます。
全ての Unix と同様に Debian は init プログラムを実行すること によってブートアップします。init の設定ファイル (/etc/inittab) にはスクリプト /etc/init.d/rcS を最初に 実行するように書かれています。このスクリプトはファイルシステムを検査して マウントし、モジュールをロードして、ネットワークサービスを開始します。ま た時刻を合わせたり、その他の初期化も行います。それから /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」か「restart」か 「force-reload」のどれかを引数にとり、その引数に従って定められた仕事を行 うからです。これらのスクリプトはシステムがブートしてしまった後でも様々な プロセスを制御するために利用できます。
例えば「reload」を引数としたコマンド /etc/init.d/sendmail reload は sendmail デーモンに設定ファイルを再読み込みするようシグナ ルを送ります。
起動時や特定の (System V) ランレベルへの入り口でシステムがスクリプト foo を実行しなければならないとします。その場合システム管理者は 次のようにして下さい。
スクリプト foo をディレクトリ /etc/init.d/ に 入れる。
Debian コマンド update-rc.d を適切な引数で実行する。こ れにより、引数としてコマンドラインに指定したディレクトリ rc?.d と /etc/init.d/foo の間にリンクが作られます。ここで「?」は 0 か ら 6 までの数であり、System V のランレベルに対応します。
システムを再起動する。
コマンド 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 以上の数を含んでいるスクリプトよりも先に 呼び出されることを表しています。
例えば、ユーザの環境に合わせた設定ファイルを含むパッケージをローカル
に作成しておき、いくつかの Debian パッケージ群とこの設定ファイルを含むパッ
ケージをインストールすることで簡単に新しいサーバを作りたい、という状況を
考えてみます。これは一般的に良い考えではありません。もし設定ファイルが別
のパッケージの中にあっても dpkg
はそれらの設定ファイルについて知
るはずもなく、パッケージ「群」の一つをアップグレードした時に設定ファイル
も更新されて矛盾が生じてしまうからです。
代わりに、関心のある Debian パッケージ「群」の設定ファイルを修正する
ローカルなパッケージを作って下さい。こうすれば、dpkg
などのパッケー
ジ管理システムは、ファイルがローカルな「システム管理者」によって修正され
たかどうかわかるので、パッケージをアップグレードする時に上書きされること
はありません。
システム管理者やローカルユーザが、Debian の login
パッケー
ジに含まれる「login」プログラムではなく「login-local」プログラムを使いた
いとします。
次のようにしてはいけません。
/bin/login を login-local で上書きする。
パッケージ管理システムはこの変更について知るはずもなく、login (あるいは /bin/login を提供するパッケージ) を新たにインストール したり更新したりすると、カスタム /bin/login は単純に上書きされ てしまいます。
代わりに次のようにして下さい。
dpkg-divert --divert /bin/login.debian /bin/login
を実行する。こうすれば、Debian login パッケージを将来イン ストールすると、/bin/login ではなく /bin/login.debian にインストールされます。
次に
cp login-local /bin/login
を実行する。ローカルに構築したプログラムを /bin/login へ移動 します。
詳しくは マニュアルページ dpkg-divert(8)
に 書かれています。
次のコマンドを実行してください。
dpkg-scanpackages BIN_DIR OVERRIDE_FILE [PATHPREFIX] > my_Packages
ここで
BIN-DIR は Debian アーカイブファイル (普通、拡張子「.deb」を持 つ) があるディレクトリです。
OVERRIDE_FILE はディストリビューションメンテナにより編集される ファイルで、main ディストリビューションの Debian パッケージのものは 普通 Debian FTP アーカイブの indices/override.main.gz に保 管されています。ローカルパッケージの場合これは無視できます。
PATHPREFIX は生成される my_Packages ファイルに付加す ることのできるオプション文字列です。
いったんファイル my_Packages を作ってしまえば、以下のコマン ドによってパッケージ管理システムにそれを教えることができます。
dpkg --merge-avail my_Packages
二つのパッケージがあるプログラムの異なるバージョンを提供しており、双 方が同じ基本機能を提供しているといういくつかのケースがあります。ユーザが どちらか一方のパッケージを好むのは、習慣からかもしれませんし、あるパッケー ジのユーザインタフェースが別のものよりもどういうわけか心地よいという理由 からかもしれません。同じシステムの別のユーザは違う選択をするかもしれませ ん。
Debian では「仮想」パッケージシステムを使うことによって、同じ基本機能 を提供する 2 つ以上のパッケージが存在している時にシステム管理者 (あるい はユーザ) がお気に入りのツールを選ぶことができます。また、特定のパッケー ジを指定しなくてもパッケージ依存条件が満たされるようになっています。
例えば、一つのシステムに 2 つの異なるニュースリーダーが存在するとしま す。ニュースサーバパッケージは、システムになんらかのニュースリー ダーがインストールされていることを「recommend (推薦)」してはいますが、 tin か trn かという選択は個々のユーザに任せています。 これがうまく機能するのは、tin と trn が共に仮想パッケー ジ news-reader を提供しているからです。どのプログラム が実行されるかは、仮想パッケージ名を持つファイル /etc/alternatives/news-reader から選択したファイル、例えば /usr/bin/trn へリンクを張ることにより決定されます。
このような方法を使う場合、リンクが一つだけではプログラムを十分に利用 するのに不十分です。普通、マニュアルページやその他のサポートファイルも適 切に選択されていなければなりません。Perl スクリプト update-alternative を使えば、パッケージに関連する全てのファイル をシステムデフォルトとして正しく選択することができます。
例えば、どの実行ファイルが「x-window-manager」を提供するのかをチェッ クするには
update-alternatives --display x-window-manager
を走らせます。それを変更したいのなら
update-alternatives --config x-window-manager
を走らせ、画面の指示に従います (基本的には選択したいエントリの次の番号を 入力します)。
何らかの理由でパッケージが自分自身をウィンドウマネージャとして登録し ない場合 (エラーになるならバグとして提出してください)、あるいは /usr/local ディレクトリにあるウィンドウマネージャを使いたい場合は、選択 したいエントリが画面の選択肢に現れないでしょう。そんなときは例えば以下の ようにコマンドラインオプションでリンクを更新できます。
update-alternatives --install /usr/bin/x-window-manager \ x-window-manager /usr/local/bin/wmaker-cvs 50
「--install」オプションの第一引数は /etc/alternatives/NAME へのシンボ リックリンクです。ここで NAME が次の引数になります。第三引数は /etc/alternatives/NAME が指すべきプログラムです。第四引数は優先度で、大 きな値を指定すると自動的に選択される可能性が大きくなります。
別候補を削除するには単に
update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs
を実行してください。
[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 次のページ ]
The Debian GNU/Linux FAQ
version CVS, 2 January 2007