クラスおよびクラスアクションスクリプトを使用して、インストール中に /etc/inittab を変更するには、次の作業を完了する必要があります。
クラスを作成します。
inittab という名前のクラスを作成します。このクラスに対して、インストールおよび削除クラスアクションスクリプトを作成する必要があります。pkginfo ファイルの CLASSES パラメータで inittab クラスを定義します。
inittab ファイルを作成します。
このファイルには、/etc/inittab に追加するエントリの情報を格納します。prototype ファイルの図で、inittab は inittab クラスのメンバーで、ファイルタイプは編集可能を表す e となっていることに注目してください。
インストールクラスアクションスクリプト (i.inittab) を作成します。
クラスアクションスクリプトは、実行されるたびに同じ結果を生じる必要があります。このクラスアクションスクリプトは、次の手順を実行します。
このエントリが以前に追加されているかどうかをチェックします。
追加されている場合は、このエントリの以前のバージョンをすべて削除します。
inittab ファイルを編集し、このエントリの出自がわかるようにコメント行を追加します。
一時ファイルを /etc/inittab に戻します。
ENDOFCLASS インジケータを受け取ったときに init q コマンドを実行します。
init q コマンドは、このインストールスクリプトで実行できます。このアプローチでは、1 行だけの postinstall スクリプトは必要ありません。
削除クラスアクションスクリプト (r.inittab) を作成します。
削除スクリプトは、インストールスクリプトと非常によく似ています。インストールスクリプトが追加した情報を削除し、init q コマンドを実行します。
このケーススタディーは、次のケーススタディーよりも複雑です。「sed クラスと postinstall スクリプトを使用したファイルの変更」を参照してください。2 つではなく 3 つのファイルを作成する必要があり、配信された /etc/inittab ファイルは実際には、挿入するエントリの断片を含んだ可変部分に過ぎません。pkgadd コマンドが i.inittab ファイルに渡すファイルを必要としなければ、これは i.inittab ファイルに組み込まれていたかも知れません。また、削除の手順も別個のファイル (r.inittab) に置く必要があります。この方法はうまく行きますが、複数のファイルをインストールする必要のある非常に複雑なケースに最も向いています。「インストール時の crontab ファイルの変更」を参照してください。
「sed クラスと postinstall スクリプトを使用したファイルの変更」で使用されている sed プログラムは、inittab エントリの最後にあるコメントがパッケージのインスタンスに基づいているため、複数のパッケージのインスタンスをサポートします。「build クラスを使用したファイルの変更」のケーススタディーでは、インストール中に /etc/inittab を編集するための、より効率的なアプローチが紹介されています。