Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

aimanifest(8)

名前

aimanifest - AI (Automated Installer) で使用される XML ファイルの変更

形式

/usr/bin/aimanifest [-h]
aimanifest add [-r] path value
aimanifest delete path
aimanifest get [-r] path
aimanifest set [-r] path value
aimanifest load [-i] filename
aimanifest validate

説明

aimanifest コマンドは、新しい XML マニフェストを作成したり、既存のものを変更したりします。aimanifest は、DTD 定義への有効な !DOCTYPE 参照を含む XML ファイルで使用でき、AI (Automated Installer) で使用される派生マニフェストを作成するためのものです。AI 派生マニフェストの詳細は、Automatically Installing Oracle Solaris 11.4 Systemsを参照してください。

aimanifest コマンドは、マニフェストを作成するときに複数回呼び出すことができます。AIM_MANIFEST 環境変数は、aimanifest が変更するマニフェストの場所を指定します。AIM_MANIFEST は設定する必要があります。loadadd、または set サブコマンドを指定して aimanifest コマンドを呼び出すたびに、AIM_MANIFEST ファイルが開き、変更され、保存されます。

    aimanifest コマンドが変更できる AIM_MANIFEST ファイルには、少なくとも次の両方の要素が含まれている必要があります。

  • 作成している XML マニフェストで有効な DTD への !DOCTYPE 参照。

  • このマニフェストのルート要素。

AI が派生マニフェストスクリプトを実行しているときのように、空の AIM_MANIFEST ファイルで作業を始める場合、最初の aimanifest コマンドで load サブコマンドを指定し、少なくとも最低限必要な AIM_MANIFEST ファイルを読み込む必要があります。マニフェストを変更するための以降の aimanifest コマンドでは、DTD を使用して、作成中のマニフェスト内で要素を追加する場所を決定します。

エラーや情報メッセージを標準出力標準エラー出力に表示するだけでなくファイルに保存するには、AIM_LOGFILE 環境変数をログファイルの場所に設定します。情報はログファイルに追加されます。ログファイルはクリアされません。

オプション

aimanifest コマンドのオプションは次のとおりです。

–h–-help

使用法のヘルプメッセージを表示します。

aimanifest コマンドの addget、および set サブコマンドのオプションは、次のとおりです。

–r–-return-path

この aimanifest コマンドが作成または処理する各 XML 要素のパスを返します。返される各パスは、ノード ID のチェーンです。これらの返されたパスを保存しておけば、後続の aimanifest 呼び出しで使用できます。AI マニフェストの構築中に値が変更される可能性があるため、–r オプションで返されるパスを使用するほうが XML 要素や属性値を使ってパスを指定するよりも信頼性が高くなります。–r オプションで返されるパスの詳細については、「パスを返す」セクションを参照してください。

aimanifest コマンドの load サブコマンドのオプションは、次のとおりです。

–i–-incremental

新しいデータを追加する前に既存の AIM_MANIFEST データをクリアしません。

サブコマンド

サポートされているサブコマンドは次のとおりです。

aimanifest add [-r | --return-path] path value

XML マニフェストに新しい要素を追加します。値 value を持つ新しい要素を path の位置に追加します。path の詳細については、「オペランド」セクションを参照してください。path が属性 (@attr) で終わっている場合、新しい要素は attr 属性を持ち、value はその属性の値になります。

path 内の親/子関係の検査以外の検証は実行されません。

–r オプションでは、新しく追加されたノードへのパスが返されます。詳細については、「パスを返す」セクションを参照してください。

親パスが AIM_MANIFEST ファイル内の要素に一致する場合、1 要素だけに一致する必要があります。一致する親要素の子として新しい要素が作成されます。このセクションの「例 2: 値を含むパス」で示すように、パスには一意の親要素に一致する要素や属性値を指定できます。

    親パスが AIM_MANIFEST ファイル内の要素に一致しない場合、必要に応じて新しい要素が作成され、その新しい親に新しい子要素が追加されます。追加される要素へのパスは、次の規則に従って既存の要素から分割されます。

  • 分割は、値を指定する、パスのすべての部分のあとで発生します。

  • 分割は、値を指定するパスのすべての部分のあと、関連する同じタグの要素が DTD で複数許可されている最初の位置で発生します。

    この XML マニフェストスキーマを使用して、次の例を分析します。

  • マニフェストは、単一の A ノードで開始されます。

  • A ノードは、B ノードの子を 1 つだけ持つことができます。

  • B ノードは、C ノードの子を複数持つことができます。

  • C ノードは D ノードの子を複数持つことができます。

例 1: 単純なパス:AI マニフェストには /A/B/C のように、A ノードが 1 つ、B ノードが 1 つ、C ノードが 1 つ含まれています。add サブコマンドは、path/A/B/C/D として発行されます。この場合、C ノードが同じタグの兄弟を持てるパス内で最初のノードであるため、新しい C ノードが作成されます。新しい D ノードは新しい C ノードの子として追加されます。結果のマニフェストの構造は、/A/B/{C,C/D} となります。同じコマンドを D の値を変えて発行すると、/A/B/{C,C/D,C/D} のように C ノードが 3 個になります。

例 2: 値を含むパス:AI マニフェストに A ノードが 1 つ、B ノードが 1 つ、C ノードが 2 つ含まれています。値 1 を持つ C ノードは 1 つだけであるため、マニフェストの構造は /A/B/{C,C=1} となります。add サブコマンドが、path/A/B/C=1/Dvalue が 10 で発行されます。この場合、C に値 1 を指定することで一意のノードが識別され、値が指定されたブランチの位置やそれより前の位置でパスを分割することはできないため、新しい C ノードは追加されません。このパスを分割できる最初の位置は、D です。値 10 の新しい D ノードが、値 1 の C ノードの子として追加されます。結果のマニフェストの構造は、/A/B/{C,C=1/D=10} となります。D の値を 20 として同じコマンドを発行すると、/A/B/{C,C=1/{D=10,D=20}} となります。

aimanifest delete path

パスに一致するノードまたは属性をすべて削除します。パスがノードを指定している場合は、パスに一致する各ノードをルートとするサブツリーを削除します。パスが属性に一致する場合は、パスに一致するすべての属性を削除し、ノードは削除しません。パスの詳細については、「path オペランド」のセクションを参照してください。

正常終了時に一致数が stdin に出力されます。

5 element(s)/subtree(s) deleted
5 attribute(s) deleted
aimanifest get [-r | --return-path] path

パスに一致する各要素または属性の値を取得します。要素または属性の値が空の場合は、空の文字列 ("") が表示されます。パスの詳細については、「path オペランド」のセクションを参照してください。

–r オプションを指定すると、アクセスした各ノードへのパスが、2 つ目の返される文字列としてノードごとに返されます。詳細については、「パスを返す」セクションを参照してください。

aimanifest set [-r | --return-path] path value

パスに一致する各要素または属性の値を変更するか、パスに一致する既存の要素の新しい属性を作成します。検証は実行されません。パスの詳細については、「path オペランド」のセクションを参照してください。

属性の値を設定する場合は、その属性が存在している必要はありませんが、属性が属す要素は存在している必要があります。

–r オプションを指定しない場合、正常終了時に一致数が stdout に出力されます。

5 element(s) set
5 attribute(s) set
aimanifest load [-i | --incremental] filename

ファイル filename から XML マニフェストまたは部分的な XML マニフェストを読み込みます。要素の親/子関係の検査以外の検証は実行されません。

–i オプションが指定されなかった場合、既存の XML データをすべて上書きします。AIM_MANIFEST ファイル内のデータはすべて、filename ファイルの内容で置換されます。filename ファイルには、後続の aimanifest コマンドがファイルを変更できるように、DTD への !DOCTYPE 参照が含まれている必要があります。

–i オプションが指定された場合、新しいデータを追加する前に AIM_MANIFEST のデータをクリアーしません。代わりに、新しいデータの挿入または新しいデータと既存の XML データとのマージを増分的に行います。AIM_MANIFEST の !DOCTYPE 参照によって指定される DTD に基づいて、filename のデータをマージする場所と方法が決定されます。!DOCTYPE 参照が見つからない場合は、/usr/share/install/ai.dtd にある AI マニフェスト DTD が使用されます。filename のデータが DTD と矛盾する場合は、ゼロ以外のエラーステータスが返されます。

    次の事項は、新しいデータが AIM_MANIFEST マニフェストに挿入される場所に影響します。

  • AIM_MANIFEST データパスと filename データパスの先頭近くにある要素のタグが一致している度合い

  • それらの AIM_MANIFEST データ要素で許可されている子要素の種類

  • 同じタグが付けられた兄弟要素が許可されている場所

  • 子を持たない AIM_MANIFEST データノードが存在している場所

    filename データの各要素が処理されるときに次のすべての条件が真である場合、通常は、新しいノードが AIM_MANIFEST データのこの要素に対して作成されることはありません。その代わりに、既存のノードが新しいデータに置き換えられます。

  • 両方のセットのデータに、タグと場所が同じノードが含まれます。

  • AIM_MANIFEST 内で !DOCTYPE 参照によって指定される DTD は、同じタグが付けられた兄弟要素としてこの両方のノードが共存することを許可しません。

  • filename データ要素は子を持ちます。

要素が filename から挿入されるときに、新しいノードの作成が開始される場所の AIM_MANIFEST データルートにできるかぎり近い位置で分割が実行されます。分割の最初の新しいノードは、同じタグが付けられた兄弟要素が許可されているもっとも早い場所に作成されます。または、同じタグが付けられた要素が AIM_MANIFEST 内に存在しない場合には、もっとも早い適切な地点に作成されます。

    この XML マニフェストスキーマを使用して、次の例を分析します。

  • マニフェストは、単一の A ノードで開始されます。

  • A ノードは、B ノードの子を 1 つだけ持つことができます。

  • B ノードは、C ノードの子を複数持つことができます。

  • B ノードは、E ノードの子を 1 つだけ持つことができます。

    例1: 同じタグが付けられた要素の挿入。AIM_MANIFEST の内容が /A/B/C1/D1filename の内容が /A/B/C2/D2 の場合、load -i コマンド後の AIM_MANIFEST ファイルの内容は /A/B/{C1/D1,C2/D2} です。C ノードは、新しいノードを追加できる最初の場所です。filename データの C ノードが、AIM_MANIFEST データ内の既存の C ノードの後に追加されます。2 つの A 要素が異なる値を持っているか、2 つの B 要素が異なる値を持っている場合、filename 要素の値は AIM_MANIFEST 要素の値を置き換えます。2 つの A 要素が異なる属性を持っているか、2 つの B 要素が異なる属性を持っている場合、属性の値はマージされます。

  • AIM_MANIFEST ファイルと filename ファイルの両方に存在する A と B の属性は、マージされたファイルでは filename ファイルの値になります。

  • AIM_MANIFEST ファイル、filename ファイルのいずれかに存在するが両方のファイルには存在していない A と B の属性は、マージ後のファイルではすべて保持されます。

例 2: 異なるタグの要素の挿入。AIM_MANIFEST の内容が /A/B/C/Dfilename の内容が /A/B/E/F である場合に load -i コマンドを実行すると、AIM_MANIFEST ファイルの内容は /A/B/{E/F,C/D} になります。E ノードは、このノードが DTD によって許可される最初の位置に追加されます。要素 A と B の値は filename からの値となり、A と B の属性は、前述の例 1 で説明したように filename から AIM_MANIFEST にマージされます。

正しいマージ位置を決定できない場合があります。これが起こる可能性があるのは、マージされるノードのあとに続く必要のある兄弟がまだ追加されていない場合です。この問題を避けるには、複数のノードまたはサブツリーを共通の親ノードに DTD で規定された順番で追加します。ノードは、その一連の新しい兄弟の中での適切な位置を決定できない場合には、それらの兄弟の末尾に配置されます。

aimanifest validate

!DOCTYPE 文で参照された DTD に基づいて AIM_MANIFEST マニフェストを検証します。エラーは stderr に表示されます。検証が失敗した場合はゼロ以外のステータスが返されます。

オペランド

次のオペランドは必須です。

filename オペランド

load サブコマンドには filename オペランドが必要です。このオペランドは、AIM_MANIFEST マニフェストに読み込む完全なマニフェストまたは部分的なマニフェストの名前です。

value オペランド

add および set サブコマンドでは value オペランドが必要です。value オペランドは、path オペランドで指定された要素または属性の有効な値です。

path オペランド

aimanifest コマンドの adddeleteget、および set サブコマンドには、path オペランドが必要です。パスは、要素と属性から成る XML 階層内のノードを定義します。

XML 要素の階層構造は XML ツリーとも呼ばれます。次の部分的な AI マニフェストの場合、auto_install 要素がツリーのルート、ai_instance 要素と software 要素がサブツリーのブランチまたはルートです。

<auto_install>
  <ai_instance>
    <software type="IPS"/>
  </ai_instance>
</auto_install>

aimanifest パス構文では、スラッシュ文字 (/) を使ってツリー構造内の各ブランチを示します。現在の例では、software 要素へのパスは /auto_install/ai_instance/software です。

属性は要素にバインドされます。aimanifest パス構文では、アットマーク記号 (@) を使って属性名を識別します。software 要素の type 属性へのパスは、/auto_install/ai_instance/software@type です。

aimanifest の path オペランドは、複数の要素に相当する場合があります。特定の 1 要素をターゲットにするには、要素や属性の値を必要に応じて含めることで、パスを一意にします。たとえば、次の部分的な AI マニフェストで定義されている 2 番目のスライスのサイズを指定するために、パス /auto_install/ai_instance/target/disk/slice[@name="4"]/size@val を使ってサイズを指定するスライスを識別できます。

<auto_install>
  <ai_instance>
    <target>
        <disk>
          <slice name="0"/>
          <slice name="4"/>
        </disk>
    </target>
  </ai_instance>
</auto_install>

getset、および delete サブコマンドは、複数の要素に相当する可能性のあるパスを受け入れることができます。add サブコマンドには、単一の (親) 要素に一致するパスが必要です。

相対パスは許可されます。前の段落で示した slice のパスは、name 属性値が 4 の slice は 1 つだけであるため、ai_instancetargetdisk、または slice から指定を始めることもできます。たとえば、パス slice[@name="4"]/size@val を使用できます。

path 内のある value にスラッシュ文字が含まれている場合、/name="pkg:/entire" のようにその値を単一引用符か二重引用符で囲む必要があります。

aimanifest がシェルスクリプト内で呼び出される場合には、引用符を含む値にさらに特別な処置が必要になる場合があります。シェルスクリプト内では、aimanifest パス値に含まれる引用符の前にバックスラッシュ文字 (\) を付けて、シェルが引用符を削除したり解釈したりしないようにエスケープが必要になる場合があります。使用するシェルの規則を確認してください。次の例は、ksh93 スクリプトのスラッシュ文字付きの値を示しています。

/usr/bin/aimanifest get software_data[name=\"pkg:/entire\"]@action

このマニュアルページのほとんどの例では、このマニュアルページがスクリプト内や特定のシェル内で aimanifest が呼び出されることを想定していないため、バックスラッシュエスケープ文字が省略されています。AI 派生マニフェストのスクリプトについては、『Oracle Solaris 11 システムのインストール』を参照してください。

次の各形式の分岐は、要素や要素属性へのパスの構築方法を示しています。

/A

A は要素のタグ名で、/auto_install のようになります。このブランチ指定は、単純ブランチとも呼ばれます。単純ブランチのみを持つパスは、単純パスと呼ばれます。

/A=value

A は要素のタグ名、value はその要素の値で、/name="pkg:/entire" のようになります。

/A[B/C=value]

A は要素、BA の子である要素、CB の子である要素、valueC 要素の値です。このパス形式は、値が value の孫要素 C を持つ A 要素を指定します。たとえば、AI マニフェストに複数のソフトウェアセクションがある場合、この形式を使用すると、次のパスのように、パッケージ pkg:/entire をインストールするソフトウェアセクションに対する操作が可能になります。

software[software_data/name="pkg:/entire"]
/A[@Aattr=value]

A は要素、AattrA の属性、valueAattr 属性の値です。このパス形式は、値が value の属性 Aattr を持つ A 要素を指定します。たとえば、AI マニフェストが複数のスライスを定義している場合、この形式を使用すると、slice[@name="4"] のように、4 の name 値を持つスライスに対する操作が可能になります。

/A[B/C@Cattr=value]

A は要素、BA 要素の子、CB 要素の子、CattrC の属性、valueCattr 属性の値です。このパス形式は、値 value の属性 Cattr を持つ孫要素 C を持つ A 要素を指定します。たとえば、AI マニフェストに複数のソフトウェアセクションがある場合、この形式を使用すると、パス software[source/publisher@name="solaris"] のように、名前の値が solaris のパブリッシャーセクションを持つソフトウェアセクションに対する操作が可能になります。

/A[1]

/A[1] は、マニフェスト内での A 要素の最初のインスタンスを指定します。たとえば、AI マニフェストに software セクションが複数含まれている場合には、この形式を使用して、/auto_install[1]/ai_instance[1]/software[2] のように 2 番目の software セクションを処理対象にできます。

これが、–r オプションで返されるパスの形式です。「パスを返す」セクションを参照してください。

/A@Aattr

このパスは、A 要素の Aattr 属性を指定します。このパスが指定するのは、A 要素ではなく Aattr 属性です。この形式は、Aattr 属性を設定または取得する場合に使用します。

/A[B/C=value]@Aattr

このパスは、値が value の孫属性 C を持つ A 要素の Aattr 属性を指定します。

/A[B/C@Cattr=value]@Aattr

このパスは、値が valueCattr 属性を持つ孫要素 C を持つ A 要素の Aattr 属性を指定します。

/A/B=value@Battr

このパスは、値 valueB 要素の Battr 属性を指定します。B 要素は A 要素の子です。

パスを返す

addget、および set サブコマンドで –r オプションを使用すると、サブコマンドによって作成またはアクセスされた各要素のアドレスが返されます。これらの返されるアドレスの形式は、ノード ID のチェーンです。これらの返されたアドレスを使用すると、返された要素の値が変更されている場合でも、それらの要素にふたたびアクセスできます。

後述の例から、–r オプションで返されるアドレスのほうが、要素や属性値を指定するパスよりもずっと使いやすいことがわかります。次のノードツリーから始めます。

        auto_install
             |
        ai_instance
             |
           target
             |
           disk
         attribute: whole_disk=true
             |
         disk_name
         attribute: name=data1
         attribute: name_type=volid

name 属性値が data2name_type 属性値が volid の新しい disk ノードを追加します:

        auto_install
             |
        ai_instance
             |
           target
             |
  |----------|----------|
disk                  disk
whole_disk=true       whole_disk=true
    |                     |
disk_name             disk_name
name=data1            name=data2
name_type=volid       name_type=volid

属性が 1 つ新しい disk_name 要素は、単一のコマンドを使って容易に追加できます。2 番目や 3 番目の属性を追加するには、変更する disk_name 要素を指定する必要があります。同じノードに複数回アクセスするための次の 2 つの方法を比較してください。

値を使用したパスの指定

この例のコマンドは、値を使用してパスを指定します。最初のコマンドで一意の値を割り当て、以降のコマンドではその値を使用して一意のパスを指定できるようにする必要があります。この方法では、値が変更された場合に正しくない結果が生成される可能性があります。

$ aimanifest add target/disk/disk_name@name data2
$ aimanifest set \
> target/disk/disk_name[@name=data2]@name_type volid
$ aimanifest set \
> target/disk[disk_name@name=data2]@whole_disk true

戻りパスを使用したパスの指定

同じノードに複数回アクセスするもっとも信頼性の高い方法は、新しい disk_name 要素へのパスを保存し、その保存したパスを以降のアクセスで使用する方法です。

$ NewDisk=$(aimanifest add -r target/disk@whole_disk true)
$ aimanifest add ${NewDisk}/disk_name@name data2
$ aimanifest add ${NewDisk}/disk_name@name_type volid

–r オプションによって $NewDisk に返されるパスは、ノードを ID で表しており、値を持ちません。

$ aimanifest add -r target/disk/@whole_disk true
/auto_install[1]/ai_instance[1]/target[1]/disk[2]

これらの例を試すには、AIM_MANIFEST を設定する必要があります。

$ export AIM_MANIFEST=/tmp/aimtest.xml

    aimanifest コマンドが変更できる AIM_MANIFEST ファイルには、少なくとも次の両方の要素が含まれている必要があります。

  • 作成している XML マニフェストで有効な DTD への !DOCTYPE 参照。

  • このマニフェストのルート要素。

次の例は、AI マニフェスト用の最低限の AIM_MANIFEST マニフェストファイルを示しています。

<!DOCTYPE auto_install SYSTEM "file:///usr/share/install/ai.dtd">
<auto_install/>

通常は、既存の有効な AI マニフェストに対して動作する派生マニフェストスクリプト内で aimanifest コマンドを使用します。これらの例を試すには、/usr/share/auto_install/manifest/default.xml をコピーしてから、AIM_MANIFEST を定義してこのコピーを参照します。このコピーが書き込み可能になっていることを確認してください。

使用例 1 auto_reboot 属性の設定
$ aimanifest set /auto_install/ai_instance@auto_reboot false
使用例 2 auto_reboot 値の取得
$ aimanifest get /auto_install/ai_instance@auto_reboot
false
使用例 3 値パスを使用したパブリッシャーの追加

この例のパッケージリポジトリは、file:///net/host2/export/extras_repo にあるファイルリポジトリです。パブリッシャーは extras です。software 要素は source 要素を 1 つだけ持つことができるため、この例では新しい publisher 要素を発行元の solaris を含む source 要素に追加します。

$ aimanifest add \
> software[@type=IPS]/source[publisher@name=solaris]/publisher@name \

extras
$ aimanifest add \
> publisher[@name=extras]/origin@name \
> file:///net/host2/export/extras_repo

default.xml AI マニフェストから開始した場合、これらの aimanifest コマンドから次の AI マニフェストエントリが得られます。簡潔にするために、destination および software_data 要素は省略されています。

<software type="IPS">
  <source>
    <publisher name="solaris">
      <origin name="http://pkg.oracle.com/solaris/release"/>
    </publisher>
    <publisher name="extras">
      <origin name="file:///net/host2/export/extras_repo"/>
    </publisher>
  </source>
</software>
使用例 4 返されたパスを使用したパブリッシャーの追加

この例は前の例と同じですが、異なる方法を使って同じ結果を実現しています。

$ NEW_PUB=$(aimanifest add -r \
> software[@type=IPS]/source[publisher@name=solaris]/publisher@name \

extras)
$ echo $NEW_PUB
/auto_install[1]/ai_instance[1]/software[1]/source[1]/publisher[2]
$ aimanifest add ${NEW_PUB}/origin@name \
file:///net/host2/export/extras_repo
使用例 5 マニフェストフラグメントを追加することによるパブリッシャーの追加

この例では、部分的な AI マニフェストを含むファイルをロードすることで、発行元 extras を追加します。この場合、結果は、発行元 extras が定義された IPS タイプの別個の追加 software 要素になります。この新しい software 要素は、発行元 solaris を定義する元の IPS software 要素のあとに挿入されます。この新しい software 要素内部の software_data 要素で命名されたパッケージは、発行元の extras またはこの新しい software 要素で定義されたほかの発行元からのみ検索されます。インストールするソフトウェアのない software 要素は役に立たないため、このマニフェストフラグメントはインストールするパッケージも定義します。

次の内容を持つ extras.xml という名前のファイルを作成します。

<auto_install>
  <ai_instance>
    <software type="IPS">
      <source>
        <publisher name="extras">
          <origin name="file:///net/host2/export/extras_repo"/>
        </publisher>
      </source>
      <software_data action="install">
        <name>pkg:/package/from/extras_repo</name>
      </software_data> 
    </software>
  </ai_instance>
</auto_install>

software セクションだけが必要な場合でも、auto_install 要素と ai_instance 要素も含める必要があります。読み込むファイル内で auto_install または ai_instance 要素の属性が指定されていた場合、それらの属性値が既存の値を置き換えるか追加されます。

この software セクションを AIM_MANIFEST マニフェストに追加するには、次のコマンドを使用します。

$ aimanifest load -i extras.xml
使用例 6 値パスを使用したパッケージの追加

この例では、発行元の名前をパス内の値として指定することにより、名前が solarispublisher 要素を持つ software 要素にパッケージを追加します。

$ aimanifest add \
> software[source/publisher@name=solaris]/software_data/name \
> pkg:/system/utils

default.xml AI マニフェストから開始した場合、この aimanifest コマンドは次に示す 2 番目の software_data 要素を追加します。

<software_data action="install">
  <name>pkg:/entire@latest</name>
  <name>pkg:/group/system/solaris-large-server</name>
</software_data>
<software_data>
  <name>pkg:/system/utils</name>
</software_data>
使用例 7 返されたパスを使用したパッケージの追加

この例は前の例と同じですが、異なる方法を使って同じ結果を実現しています。この例では、get サブコマンドを返されたパスオプションとともに使用して、発行元の solaris が定義されている software 要素にパッケージを追加します。

$ NEW_PKG=$(aimanifest get -r \
software[source/publisher@name=solaris] | awk '{print $2 }')
$ echo $NEW_PKG
/auto_install[1]/ai_instance[1]/software[1]
$ aimanifest add ${NEW_PKG}/software_data/name \
pkg:/system/utils
使用例 8 単一の「set」コマンドによるすべてのディスクに共通する属性の更新

この例では、単一のコントローラ上に 4 つのディスクを設定し、それらすべてを「datapool」という zpool に追加します。3 つの「set」サブコマンドを使用して、4 つのディスクすべてで 3 つの属性を更新します。

NUM_C0_DISKS=4
          for ((num = 0; num <= NUM_C0_DISKS; num++)) ; do
                aimanifest add disk/disk_name@name \
                    /pci@0,0/pci108e,534a@7/disk@${num},0
          done
          aimanifest set disk/disk_name@name_type devpath
          aimanifest set disk@in_zpool datapool
          aimanifest set disk@whole_disk true

その結果、<target> サブツリー内の XML は次のようになります。

<target>
             <disk in_zpool="datapool" whole_disk="true">
               <disk_name name="/pci@0,0/pci@108e,534a@7/disk@0,0" name_type="devpath"/>
             </disk>
             <disk in_zpool="datapool" whole_disk="true">
               <disk_name name="/pci@0,0/pci@108e,534a@7/disk@1,0" name_type="devpath"/>
             </disk>

             <disk in_zpool="datapool" whole_disk="true">
               <disk_name name="/pci@0,0/pci@108e,534a@7/disk@2,0" name_type="devpath"/>
             </disk>
             <disk in_zpool="datapool" whole_disk="true">
               <disk_name name="/pci@0,0/pci@108e,534a@7/disk@3,0" name_type="devpath"/>
             </disk>
             ...
             ...
             </target>
使用例 9 マニフェストフラグメントの追加によるパッケージの追加

この例では、部分的な AI マニフェストを含むファイルをロードすることで、パッケージを追加します。この場合、結果は IPS タイプの別個の追加 software 要素になり、元の IPS software 要素のあとに挿入されます。この新しい software 要素には、software_data 要素のみが含まれ、source 要素は指定されません。この新しい software 要素内部の software_data 要素で命名されたパッケージは、直前の software 要素内で定義された発行元から検索されます。

次の内容を持つ newpkg.xml という名前のファイルを作成します:

<auto_install>
  <ai_instance>
    <software type="IPS">
      <software_data>
        <name>pkg:/system/utils</name>
      </software_data>
    </software>
  </ai_instance>
</auto_install>

software セクションだけが必要な場合でも、auto_install 要素と ai_instance 要素も含める必要があります。読み込むファイル内で auto_install または ai_instance 要素の属性が指定されていた場合、それらの属性値が既存の値を置き換えるか追加されます。

この software セクションを AIM_MANIFEST マニフェストに追加するには、次のコマンドを使用します。

$ aimanifest load -i newpkg.xml
使用例 10 マニフェストの検証

AIM_MANIFEST マニフェストを検証します。

$ aimanifest validate

終了ステータス

次の終了ステータスが返されます。

0

コマンドは正常に処理されました。

>0

エラーが発生した。

ファイル

AIM_MANIFEST

この環境変数の値は、構築される AI マニフェストの場所です。

AIM_LOGFILE

この環境変数の値は、aimanifest 処理のログファイルの場所です。

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/install/auto-install/auto-install-common
インタフェースの安定性
確実

関連項目

installadm(8)