# 管理解説書

## package 構成ファイル

目的

package コマンドの命令を記述しています。

構文

package 構成ファイルには、 package コマンドによって、構成中の AFS クライアント・マシンのローカル・ディスクに作成または変更されるファイル・システム要素が定義されています。使用する構成ファイルを指定する場合には、-config または -fullconfig 引き数を指定して、 package コマンドを使用してください。

構成ファイル内の命令の要約

構成ファイルの各行には、次の命令の 1 つ以上のインスタンスを記述することができます。このリストの後で、各命令の構文について詳しく説明します。

B
  ディスクなど、マルチバイト・コマンド・ブロック単位での入力を扱うブロック単位装置を定義します。

C
  端末または tty など、1 文字単位での入力を扱うキャラクター専用装置を定義します。

D
  ディレクトリーを作成します。

F
  指定されたソース・ファイルと一致するファイルを作成または更新します。

L
  シンボリック・リンクを作成します。

S
  UDP および TCP/IP 接続用の通信装置となるソケットを定義します。

%define
  変数を定義するか、または文字列を定義済みと宣言します。

%ifdef
  特定の文字列が宣言または定義された場合に実行するアクションを指定します。

%ifndef
  特定の文字列が宣言または定義されていない場合に実行するアクションを指定します。

%include
  ライブラリー・ファイルを組み込みます。

%undef
  文字列を未定義と宣言するか、あるいは変数を、値が設定されていないと宣言します。

ブロックおよびキャラクター単位装置を定義する B および C 命令

package構成ファイルの B 命令は、ディスクなど、マルチバイト・コマンド・ブロック単位での入力を扱うブロック単位装置を定義します。 C 命令は、端末または tty など 1 文字単位での入力を扱うキャラクター単位装置を定義します。これらの命令の構文は同じです。

       {B | C}   device_name  major_device  minor_device  owner  group  mode_bits

ここで、

B
  ブロック単位装置の定義を指定します。これは大文字でなければなりません。

C
  キャラクター単位装置の定義を指定します。これは大文字でなければなりません。

device_name
  定義する装置名を指定します。マシンのシステム・タイプに適切な名前の形式については、ハードウェアまたはオペレーティング・システムのマニュアルを参照してください。

major_device
  装置のメジャー装置番号を 10 進数で指定します。マシンのシステム・タイプに適した値については、ハードウェアまたはオペレーティング・システムのマニュアルを参照してください。

minor_device
  装置のマイナー装置番号を 16 進数、8 進数、または 10 進数のいずれかで指定します。 16 進数の前には文字列 0x (ゼロと文字 x) を、または 8 進数の前には 0 (ゼロ) を付けます。どちらの接頭部も持たない数値は、10 進数として解釈されます。マシンのシステム・タイプに適した値については、ハードウェアまたはオペレーティング・システムのマニュアルを参照してください。

owner
  UNIX の ls -l コマンドの出力に装置の所有者であることを示すためのユーザーのユーザー名、または UNIX のユーザー ID (UID) を指定します。

group
  UNIX の ls -lg コマンドの出力に装置のグループであることを示すためのグループのグループ名、または UNIX のグループ ID (GID) を指定します。

mode_bits
  装置の UNIX モード・ビットを定義します。許容値は、アクセス権の組み合わせに対応する標準的な 3 または 4 桁の数字です。例: 755 は rwxr-xr-x を、644 は rw-r--r-- を意味しています。

ディレクトリーを作成する D 命令

package 構成ファイルの D 命令は、ローカル・ディスク上にディレクトリーを作成します。ローカル・ディスク上に同じ名前のシンボリック・リンク、ファイル、またはその他の要素がある場合、それはディレクトリーで置き換えられます。そのディレクトリーがすでに存在する場合、その所有者、グループ、およびモード・ビットは、命令に適合するよう必要に応じて変更されます。この命令の構文は、次のとおりです。

       D[update_code]  directory  owner  group  mode_bits

ここで、

D
  ディレクトリーの作成を指定します。これは大文字でなければなりません。

update_code
  ディレクトリー作成命令を調節します。これはオプションです。指定する場合には、文字 D の後にスペースを空けずに指定してください。指定可能な値は、次の 2 つです。

  X
    ディレクトリーが lost+found ディレクトリー (fsck プログラムで使用されます) であることを示します。

  R
    構成ファイルに命令がないローカル・ディスク上のディレクトリーに存在するサブディレクトリー (その内容も含む) またはファイルを削除します。

directory
  作成するディレクトリーの完全パス名を指定します。

owner
  UNIX の ls -ld コマンドの出力にディレクトリーの所有者であることを示すためのユーザーのユーザー名、または UNIX のユーザー ID (UID) を指定します。

group
  UNIX の ls -lgd コマンドの出力に、ディレクトリーのグループであることを示すためのグループのグループ名、または UNIX のグループ ID (GID) を指定します。

mode_bits
  ディレクトリーの UNIX モード・ビットを定義します。許容値は、アクセス権の組み合わせに対応する標準的な 3 または 4 桁の数字です。例: 755 は drwxr-xr-x を意味し、644 は drw-r--r-- を意味しています。

ファイルを作成または更新する F 命令

package 構成ファイルの F 命令は、指定されたソース・ファイルの内容をコピーして、ローカル・ディスク上のファイルを作成または更新します。このソース・ファイルは、AFS にある場合も、ローカル・ディスクにある場合もあります。 package コマンド・インタープリターがソース・ファイルにアクセスできないと、構成ファイル内でいずれの命令も実行せずに終了します。

同じ名前のファイルがディスクに存在する場合、I 更新コードが使用されていなければ、 package コマンドは、ソース・ファイルの内容で上書きします。ファイルの現行バージョンに .old 拡張子を追加する場合には、O 更新コードを指定してください。package プログラムの完了後、マシンを自動的にリブートさせる場合には、Q 更新コードを指定してください。

ローカル・ディスク上に同じ名前のシンボリック・リンク、ディレクトリー、またはその他の要素がある場合、それはファイルで置き換えられます (必要に応じて、ディレクトリーの内容が最初に削除されます)。

この命令の構文は、次のとおりです。

          F[update_code]  file  source_file  [owner  group  mode_bits]

ここで、

F
  ファイルの作成または更新を指定します。これは大文字でなければなりません。

update_code
  ファイルの作成命令を調節します。これはオプションです。指定する場合には、文字 F の後にスペースを空けずに指定してください。次の 4 つの値が指定可能です。この中から 1 つ以上を選択してください。指定する順番は任意です。

  A
    この値を指定すると、source_file フィールドのパス名が、ファイル名を含むソース・ファイルの完全なパス名であることを示します。この引き数を省略すると package コマンドは、file フィールドのパス名を、source_file フィールドのパス名に追加し、ソース・ファイルの完全名を作ります。このコードでは、ソース・ファイルとターゲット・ファイルの名前が異なっていても構いません。

  I
    file という既存のファイルを保存します。このファイルは上書きされません。

  O
    既存バージョンのファイルに .old 拡張子を追加して、それを保存します。

  Q
    この値を指定すると、ファイルを上書きする場合に、package コマンドが状況コード 4 で終了します。標準の package に関連する変更が、マシンの AFS 初期化ファイルに対して行われていると、状況コード 4 によりマシンが自動的にリブートします。ファイルを更新してそれを有効にするために (たとえば、オペレーティング・システム・ファイル /vmunix あるいはそれと同等のファイルが変更された場合)、マシンをリブートしなければならない場合、このコードを使用してください。

file
  作成または更新するファイルがあるローカル・ディスク上の完全なパス名を指定します。最初の要素にはファイル名を指定します。

source_file
  ローカル・ディスクにコピーするファイルのパス名 (ローカル または AFS) を指定します。

  A 更新コードを指定する場合には、ソース・ファイルの完全なパス名を指定してください。そうでない場合には、package コマンドは、このパス名に file パス名を追加して、ソース・ファイルの完全名を生成します。たとえば、A 更新コードが指定されず、 /afs/abc.com/rs_aix42/bin/grep ファイルが /bin/grep バイナリーのソース・ファイルである場合、このフィールドに適切な値は、 /afs/abc.com/rs_aix42 になります。

owner
  UNIX の ls -l コマンドの出力にファイルの所有者であることを示すためのユーザー名、または UNIX のユーザー ID (UID) を指定します。

  ソース・ファイルの所有者をターゲット・ファイルにコピーする場合には、このフィールドを空のまま残してください。この場合、group および mode_bits フィールドも空にしてください。

group
  UNIX の ls -lg コマンドの出力にファイルのグループであることを示すためのグループ名、または UNIX のグループ ID (GID) を指定します。

  ソース・ファイルのグループをターゲット・ファイルにコピーする場合には、このフィールドを空のまま残してください。この場合、owner および mode_bitsフィールドも空にしてください。

mode_bits
  ファイルの UNIX モード・ビットを指定します。許容値は、アクセス権の組み合わせに対応する標準的な 3 または 4 桁の数字です。例: 755 は rwxr-xr-x を、644 は rw-r--r-- を意味しています。

  ソース・ファイルのモード・ビットをターゲット・ファイルにコピーする場合 には、このフィールドを空のまま残してください。この場合、owner および group フィールドは空にしてください。

シンボリック・リンクを作成する L 命令

package 構成ファイルの L 命令は、AFS またはローカル・ディスク上の別の場所にあるディレクトリーまたはファイルを指すシンボリック・リンクをローカル・ディスク上に作成します。標準 UNIX の ln -s コマンドの場合と同様に、このリンクは、実際のファイルまたはディレクトリーが存在しなくても作成されます。

ローカル・ディスク上に同じ名前のファイルまたはディレクトリーがある場合、 package コマンドは、シンボリック・リンクで置換します。

この命令の構文は、次のとおりです。

          L[update_code]  link  actual_path  [owner  group  mode_bits]

ここで、

L
  シンボリック・リンクの作成を指定します。これは大文字でなければなりません。

update_code
  リンク作成命令を変調します。これはオプションです。指定する場合には、文字 L の後にスペースを空けずに指定してください。次のいずれかの値または両方の値を指定してください。指定する順番は任意です。

  A
    actual_path フィールドのパス名は、実際のディレクトリーまたはファイル (ファイルのファイル名を含む) の完全パス名であることを示します。この引き数を省略すると、package コマンドは、 actual_path フィールドのパス名に link フィールドの値を追加して、実際のディレクトリーまたはファイルの完全名を生成します。このコードでは、シンボリック・リンクと実際のディレクトリーまたはファイルの名前が異なっていても構いません。

  I
    link という既存のシンボリック・リンクを上書きせずに保存します。

link
  作成するシンボリック・リンクの完全なローカル・ディスクのパス名を指定します。

actual_path
  リンクが参照するディレクトリーまたはファイルのパス名 (ローカル または AFS) を指定します。 A 更新コードを指定した場合には、ディレクトリーまたはファイルの完全なパス名を指定してください。そうでない場合には、package コマンドは、このパス名に link フィールドの値を追加して、実際のディレクトリーまたはファイルの完全名を生成します。たとえば、A 更新コードを指定せず、/etc/ftpd が /afs/abc.com/sun4x_56/etc/ftpd ファイルを指すシンボリック・リンクである場合、このフィールドの値は、/afs/abc.com/sun4x_56 になります。

  package コマンド・インタープリターは、./ (ピリオド、スラッシュ) または ../ (ピリオド 2 つ、スラッシュ) 表記で始まるパス名は、package コマンドが呼び出される現行作業ディレクトリーを基準として解釈し、正しく処理します。

owner
  UNIX の ls -l コマンドの出力にシンボリック・リンクの所有者であることを示すためのユーザー名、または UNIX のユーザー ID (UID) を指定します。

  シンボリック・リンクの所有者として package コマンドの発行側 (通常は、ローカル・スーパーユーザー root) を指定する場合には、このフィールドを空のままにしてください。この場合、group および mode_bits フィールドも空にしてください。

group
  UNIX の ls -lg コマンドの出力にリンクのグループのであることを示すためのグループ名、または UNIX のグループ ID (GID) を指定します。

  シンボリック・リンクのグループを package コマンドの発行側に関連したデフォルト・グループと一致させる場合には、このフィールドを空のままにしてください。通常、コマンドの発行側はローカル・スーパーユーザー root で、デフォルト・グループは、ローカルの /etc/passwd ファイルまたは同等のファイルにある発行側の項目で決まります。このフィールドが空のままの場合は、owner と mode_bits フィールドも空にしなければなりません。

mode_bits
  シンボリック・リンクの UNIX モード・ビットを定義します。許容値は、アクセス権の組み合わせに対応する標準的な 3 または 4 桁の数字です。例: 755 は rwxr-xr-x を、644 は rw-r--r-- を意味しています。

  このフィールドを空にすると、シンボリック・リンクのモード・ビットは 777 (rwxrwxrwx) に設定されます。この場合、owner および group フィールドは空にしてください。

ソケットを作成する S 命令

package 構成ファイルの S 命令は、ローカル・ディスク上に (UDP または TCP/IP 接続の通信装置となる) ソケットを作成します。この命令の構文は、次のとおりです。

       S  socket [owner  group  mode_bits]

ここで、

S
  ソケットの作成を指定します。これは大文字でなければなりません。

socket
  ソケットの名前を指定します。適切な形式は、ローカル・マシンのオペレーティング・システムに依存します。

owner
  UNIX の ls -l コマンドの出力にソケットの所有者であることを示すためのユーザー名、または UNIX のユーザー ID (UID) を指定します。

  ソケットの所有者として package コマンドの発行側 (通常は、ローカル・スーパーユーザー root です) を指定する場合には、このフィールドを空にしてください。この場合、group および mode_bits フィールドも空にしてください。

group
  UNIX の ls -lg コマンドの出力にソケットのグループであることを示すためのグループ名、または UNIX のグループ ID (GID) を指定します。

  シンボリック・リンクのグループを package コマンドの発行側に関連したデフォルト・グループと一致させる場合には、このフィールドを空のままにしてください。通常、コマンドの発行側はローカル・スーパーユーザー root で、デフォルト・グループは、ローカルの /etc/passwd ファイルまたは同等のファイルにある発行側の項目で決まります。このフィールドが空のままの場合は、owner と mode_bits フィールドも空にしなければなりません。

mode_bits
  ソケットの UNIX モード・ビットを定義します。許容値は、アクセス権の組み合わせに対応する標準的な 3 または 4 桁の数字です。例: 755 は rwxr-xr-x を、644 は rw-r--r-- を意味しています。

  このフィールドを空にすると、シンボリック・リンクのモード・ビットは、セルの umask で調整され、777 (rwxrwxrwx) に設定されます。この場合、owner および group フィールドは空にしてください。

定義を宣言する、あるいは宣言しない %define または %undef 命令

package 構成ファイルの %define 命令は、引き数の数に応じて変数を宣言または定義します。

- 単一引き数が後に続く場合、引き数が定義されることを宣言します。この引き数は、%ifdef および %ifndef ステートメントで参照されるときに、コントローラーとして使用可能になります。このステートメントは、それぞれ true、false と評価されます。
- 2 つの引き数が後に続く場合、2 番目の引き数を最初の引き数の値として定義します。最初の引き数が、このプロトタイプまたは他のプロトタイプ、あるいはライブラリー・ファイルで変数として出てくる場合 (先頭にドル記号が付き、中括弧で囲まれています。たとえば、`${variable}`)、 package コマンド・インタープリターは、2 番目の引き数をそれに代入します。

%undef ステートメントは、引き数を未定義として宣言するか、変数の場合には変数の値を無効と宣言して、直前の %define ステートメントの結果を否定します。

この 2 つの命令の構文は、次のとおりです。

       %define  declaration
       %define  variable  value
       %undef  declaration
       %undef  variable

ここで、

%define
  定義ステートメントであることを指定します。

%undef
  定義を否定するステートメントであることを指定します。

declaration
  %define ステートメントで宣言される文字列、または %undef ステートメントで定義を解除される文字列を指定します。

variable
  %define ステートメントが定義している変数名、または %undef ステートメントが定義を解除している変数名を指定します。

value
  variable フィールドの文字列が、このプロトタイプまたは他のプロトタイプ、あるいはライブラリー・ファイルで適切な形式 (先頭にドル記号があり、中括弧で囲まれた形式。たとえば、`${variable}`) で出現した場合に、その文字列を置き換える値を指定します。1 つ以上のワードを指定することができます。

実行する条件付きアクションを指定する %ifdef および %ifndef 命令

package 構成ファイルの %ifdef 命令は、指示された文字列が単一の引き数の %define ステートメントで宣言されているか、または 2 つの引き数を取る %define ステートメントで定義されている値の変数である場合に実行する 1 つ以上のアクションを指定します。

同様に、%ifndef 命令は、指定された文字列がまだ宣言されていないか、あるいは %define ステートメントで定義されていないか、 %undef ステートメントで未定義にされたために値を持たない変数である場合に実行する 1 つ以上のアクションを指定します。

いずれの場合も、オプションの %else ステートメントを使用して、最初のステートメントが false と評価された場合に実行する 1 つ以上の代替アクションを指定することができます。 (%ifdef ステートメントの場合、指定された文字列が宣言されていなかったり、値を持たない変数か、あるいは %undef ステートメントでいずれかが未定義にされると、%else ステートメントが実行されます。 %ifndef ステートメントの場合には、文字列が宣言されるか、または値を持つ変数の場合に実行されます。)

%ifdef および %ifndef ステートメントは、いくつかネストすることができます。

この 2 つのステートメントの構文は共通です。これらの構文は次のとおりです。

       %ifdef | ifndef   declaration
                                      action+
       [%else [declaration]
                      alternate_action+]
       %endif declaration

ここで、

ifdef
  declaration フィールドの文字列が宣言されているか、あるいは定義済みの値を持つ変数である場合にステートメントが true と評価されます。

ifndef
  declaration フィールドの文字列が宣言されていないか、あるいは定義済みの値を持たない変数である場合にステートメントが true と評価されます。

declaration
  %ifdef ステートメントが true と評価されるために、宣言が必要な文字列、または 定義済みの値を持つ必要がある変数名を指定します。この結果、指定されたアクションが実行されます。 %ifndef ステートメントの場合、このステートメントが true と評価されるのは、文字列が宣言されていないか、あるいは変数が定義済みの値を持っていない場合です。最初と 3 番目の declaration は必須です (後者は、 %endif の後に出現します)。 2 番目の declaration (文字列 %else の後にあります) はオプションです。これは、%else ステートメントがどの %ifdef あるいは %ifndef ステートメントに対応するのかを明確にするためにだけ使用します。

action
  %ifdef または %ifndef ステートメントが true と評価された場合に実行するアクションを指定します。各アクションは、別々の行に指定してください。アクションには、パーセント記号および定義命令で始まるステートメントを指定することができます。

alternate_action
  %ifdef または %ifndef ステートメントが false と評価される場合に実行するアクションを指定します。各アクションは、別々の行に指定してください。アクションには、パーセント記号および定義命令で始まるステートメントを指定することができます。

ライブラリー・ファイルを組み込む %include 命令

package 構成ファイルの %include 命令は、 %include 命令のあるプロトタイプ・ファイルのコンパイル後に、指定されたライブラリー・ファイルの内容を構成ファイルに組み込みます。この命令の構文は、次のとおりです。

       %include  pathname

ここで、

%include
  ステートメントにライブラリー・ファイルを組み込むことを指定します。

pathname
  組み込むライブラリー・ファイルの完全なパス名を指定します。このファイルは、AFS または ローカル・ディスクに存在し、1 つ以上の変数を持っていなければなりません。

注意

構成ファイルは、完全に正しくなければなりません。何らかの構文エラーまたは誤った値がある場合は、 package コマンド・インタープリターは、いずれの命令も実行せずに終了します。

例

次の例では、B および C 命令により、メジャーおよびマイナー装置番号がそれぞれ 1 および 0 で、モード・ビットが、-rw-r--r-- のディスク /dev/hd0a と、メジャーおよびマイナー装置番号がそれぞれ 6 および 5 で、モード・ビットが -rw-rw-rwの tty /dev/ttyp5 を定義しています。いずれの場合も、所有者は root で、所有グループは wheel です。

       B /dev/hd0a 1 0 root wheel 644
       C /dev/ttyp5 6 5 root wheel 666

次の例では、D 命令により、所有者 root、グループ wheel、モード・ビットが drwxr-xr-x のローカル /usr ディレクトリーを作成しています。 R 更新コードにより、構成ファイルにはなく、/usr ディレクトリーに存在するファイルおよびサブディレクトリー (もしあれば) を削除しています。

       DR /usr root wheel 755

次の例は、ABC Corporation セルで AIX 4.2 を実行するマシンに適切な F 命令により、/afs/abc.com/rs_aix42/bin/grep をソースとして使用し、ローカル・ディスク・ファイル /bin/grep を作成または更新しています。

       F /bin/grep /afs/abc.com/rs_aix42 root wheel 755

次の例では、F 命令により、/usr/vice/etc/ThisCellファイルを作成しています。ここでは、A 更新コードの指定に従って、ソース・ファイルに絶対パス名を指定しています。Q コードで、package コマンドが終了時に状況コード 4 を戻すように設定しています。これは、マシンの AFS 初期設定ファイルに、標準の package に関連した変更が行われると、マシンのリブートを要求します。所有者、グループおよびモード・ビットの値は指定していません。これらは、ソース・ファイルから継承されます。

       FAQ /usr/vice/etc/ThisCell /afs/abc.com/common/etc/ThisCell

次の例では、ABC Corporation セルで AIX 4.2 を実行するマシンに適切な L 命令により、ローカル・ディスク上の /etc/ftpd からファイル /afs/abc.com/rs_aix42/etc/ftpd へのシンボリック・リンクを作成しています。

       L /etc/ftpd /afs/abc.com/rs_aix42 root wheel 644

次の例では、S 命令でソケット /dev/printer を定義しています。

       S /dev/printer root wheel 777

次の例では、%define 命令で変数 `${diskmode}` に値を定義しています。この変数は、D、F、または L 命令の owner_name、group_name、および mode_bits フィールドを埋めるために、テンプレートで使用されます。

       %define diskmode root wheel 644

次の例では、%undef 命令により、未定義の文字列 afsd を宣言しています。

       %undef afsd

次の例では、%ifdef 命令により、文字列 `rs_aix42` が宣言されたら、命令を含むプロトタイプ・ファイルのコンパイル時に指定された 3 つのライブラリー・ファイルを組み込むように指定しています。代替アクションは定義されていません。プロトタイプ・ファイルの先頭のほうに、rs_aix42 を宣言し、`${wsadmin}` 変数に値を割り当てる %define ステートメントが必要です。

       %ifdef rs_aix42
       %include ${wsadmin}/lib/rs_aix42.readonly
       %include ${wsadmin}/lib/rs_aix42.generic
       %include ${wsadmin}/lib/rs_aix42.generic.dev
       %endif rs_aix42

次の例では、State University セルに適切な %ifndef 命令により、`${cell}` 変数の値として `stateu.edu` を定義しています。

       %ifndef cell
       %define cell stateu.edu
       %endif cell

次の例では、%include 命令で、package に関連したファイルが常駐するディレクトリーの lib サブディレクトリーからライブラリー・ファイル base.generic を組み込んでいます。コンパイル時に、`${wsadmin}` 変数は実際のパス名 (/afs/abc.com/wsadmin など)に解決されます。

       %include ${wsadmin}/lib/base.generic

関連情報

package

[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]

(C) IBM Corporation 2000. All Rights Reserved