アプリケーションパッケージ開発者ガイド

第 4 章 パッケージの確認と転送

この章では、パッケージの整合性を確認する方法と、パッケージをフロッピーディスクや CD-ROM などの配布媒体に転送する方法について説明します。

この章の内容は以下のとおりです。

パッケージの確認と転送 (作業マップ)

次の表は、パッケージの整合性を確認して配布媒体に転送する手順を示したものです。

表 4–1 パッケージの確認と転送の作業マップ

作業 

説明 

説明 

1. パッケージを構築する 

ディスク上でパッケージを構築します。 

第 2 章パッケージの構築

2. パッケージをインストールする 

パッケージをインストールし、エラーなしでインストールされることを確認して、パッケージをテストします。 

「スタンドアロンシステムまたはサーバーにパッケージをインストールする方法」

3. パッケージの整合性を確認する 

pkgchk コマンドを使用して、パッケージの整合性を確認します。 

「パッケージの整合性を確認する方法」

4. ほかのパッケージ情報を取得する 

省略可能pkginfo コマンドおよび pkgparam コマンドを使用して、パッケージ固有の確認を行います。

「インストール済みパッケージについての追加情報の表示」

5. インストール済みパッケージを削除する 

pkgrm コマンドを使用して、インストールされているパッケージをシステムから削除します。

「パッケージを削除する方法」

6. パッケージを配布媒体に転送する 

pkgtrans コマンドを使用して、パッケージを (パッケージ形式で) 配布媒体に転送します。

「配布媒体にパッケージを転送する方法」

ソフトウェアパッケージのインストール

ソフトウェアパッケージは、pkgadd コマンドを使用してインストールされます。このコマンドを使用すると、配布媒体またはディレクトリからソフトウェアパッケージの内容が転送され、システムにインストールされます。

この節では、パッケージが正しくインストールされることを確認するために、パッケージのインストール上の基本的な説明について紹介します。

インストールソフトウェアデータベース

システムにインストールされるすべてのパッケージの情報は、インストールソフトウェアデータベースに保持されます。パッケージ内のすべてのオブジェクトのエントリと、コンポーネント名、常駐場所、種類などの情報が保存されます。エントリには、コンポーネントが属するパッケージのレコード、コンポーネントを参照する可能性があるほかのパッケージ、およびパス名、コンポーネントの常駐場所、コンポーネントの種類などの情報が含まれます。エントリを自動的に追加したり削除したりするには、pkgadd および pkgrm コマンドを使用します。データベース内の情報を表示するには、pkgchk および pkginfo コマンドを使用します。

各パッケージコンポーネントには、2 種類の情報が関連付けられています。属性情報には、コンポーネント自体の内容が記述されます。たとえば、コンポーネントのアクセス権、所有者 ID、グループ ID は属性情報です。内容情報には、ファイルサイズや最終変更時刻など、コンポーネントの内容が記述されます。

インストールソフトウェアデータベースは、パッケージのステータスを追跡します。パッケージは、完全にインストールされる場合 (インストールプロセスが正常に完了した場合) と、部分的にインストールされる場合 (インストールプロセスが正常に完了しなかった場合) があります。

パッケージが部分的にインストールされる場合、インストールが中止される前にパッケージの一部分がインストールされる可能性があります。したがって、パッケージの一部分はインストールされてデータベースに記録されますが、残りの部分はインストールも記録もされません。pkgadd コマンドは、データベースにアクセスしてすでにインストールされている部分を検出できるので、パッケージを再インストールするときに、前回のインストールが停止した場所から開始するかどうかの指示を求められます。また、pkgrm コマンドを使用して、インストールソフトウェアデータベースの情報に基づいてインストール済みの部分を削除することもできます。

pkgadd コマンドでの対話

pkgadd コマンドは、問題を検出すると、まずインストール管理ファイルで命令を確認します (詳細については admin(4) を参照)。命令がない場合、または管理ファイルの関連するパラメータが ask に設定されている場合は、pkgadd は問題を説明するメッセージを表示して、応答を求めます。通常、プロンプトには「Do you want to continue with this installation?」と表示されます。「 yes」、「no」、または「quit」で応答する必要があります。

複数のパッケージを指定している場合、「no」で応答すると、インストール中のパッケージのインストールは停止しますが、pkgadd ではほかのパッケージのインストールは継続されます。「quit」で応答すると、pkgadd ではすべてのパッケージのインストールが停止されます 。

同機種環境内のスタンドアロンシステムまたはサーバーへのパッケージのインストール

ここでは、同機種環境内のスタンドアロンシステムまたはサーバーシステムにパッケージをインストールする方法について説明します。

Procedureスタンドアロンシステムまたはサーバーにパッケージをインストールする方法

  1. パッケージを構築します。

    必要に応じて、「パッケージの構築」を参照してください。

  2. システムにスーパーユーザーとしてログインします。

  3. ソフトウェアパッケージをシステムに追加します。


    # pkgadd -d device-name [pkg-abbrev...]

    -d device-name

    パッケージの位置を指定します。device-name は、完全なディレクトリパス名でも、テープ、フロッピーディスク、またはリムーバブルディスクの識別子でもかまいません。

    pkg-abbrev

    追加する 1 つ以上のパッケージの名前を空白で区切って指定します。省略すると、pkgadd では使用可能なすべてのパッケージがインストールされます。


例 4–1 スタンドアロンまたはサーバーでのパッケージのインストール

pkgA という名前のソフトウェアパッケージを、/dev/rmt/0 という名前のテープデバイスからインストールするには、次のコマンドを入力します。


# pkgadd -d /dev/rmt/0 pkgA

次のようにパッケージ名を空白で区切ることで、同時に複数のパッケージをインストールすることもできます。


# pkgadd -d /dev/rmt/0 pkgA pkgB pkgC

パッケージが常駐しているデバイスを指定しないと、コマンドによってデフォルトのスプールディレクトリ (/var/spool/pkg) がチェックされます。パッケージが見つからないと、インストールは失敗します。


参照

この手順が終了したら、次の作業、「パッケージの整合性を確認する方法」に進みます。

パッケージの整合性の確認

pkgchk コマンドを使用すると、パッケージの整合性、パッケージがシステムにインストールされているか、パッケージ形式でインストールされているか (pkgadd コマンドでインストールできる状態) を確認できます。パッケージの構造またはインストールされているファイルとディレクトリを確認したり、パッケージオブジェクトについての情報を表示したりします。pkgchk コマンドは、次の内容について一覧表示したり、チェックしたりできます。

このコマンドの詳細については、pkgchk(1M) を参照してください。

pkgchk コマンドでは、2 種類のチェックが実行されます。ファイルの属性 (ファイルのアクセス権と所有権、およびブロックまたは文字型特殊デバイスのメジャー/マイナー番号) のチェックとファイルの内容 (サイズ、チェックサム、および変更日時) のチェックです。デフォルトでは、ファイルの属性と内容の両方がチェックされます。

また、pkgchk コマンドでは、インストールされているパッケージとインストールソフトウェアデータベースの間で、ファイルの属性と内容の比較も行われます。パッケージに関するエントリは、インストール時から変わる場合があります。たとえば、別のパッケージによってパッケージコンポーネントが変更されているような場合です。データベースは、その変更を反映します。

Procedureパッケージの整合性を確認する方法

  1. パッケージをインストールします。

    必要に応じて、「スタンドアロンシステムまたはサーバーにパッケージをインストールする方法」を参照してください。

  2. パッケージの整合性を確認します。


    # pkgchk  [-v] [-R root-path] [pkg-abbrev...]

    -v

    処理されたファイルを一覧表示します。 

    -R root-path

    クライアントシステムのルートファイルシステムの場所を指定します。 

    pkg-abbrev

    チェックする 1 つ以上のパッケージの名前を空白で区切って指定します。省略すると、pkgchk では使用可能なすべてのパッケージがチェックされます。


例 4–2 パッケージの整合性の確認

この例では、インストールされているパッケージの整合性の確認に使用する必要のあるコマンドを示します。


$ pkgchk pkg-abbrev
$

エラーがある場合、pkgchk コマンドではそのエラーが出力されます。エラーがない場合は、何も出力されず、終了コード 0 が返されます。パッケージの省略名を指定しないと、システム上のすべてのパッケージがチェックされます。

または、-v オプションを使用すると、エラーがない場合にはパッケージに含まれるファイルが一覧表示されます。次に例を示します。


$ pkgchk -v SUNWcadap
/opt/SUNWcadap
/opt/SUNWcadap/demo
/opt/SUNWcadap/demo/file1
/opt/SUNWcadap/lib
/opt/SUNWcadap/lib/file2
/opt/SUNWcadap/man
/opt/SUNWcadap/man/man1
/opt/SUNWcadap/man/man1/file3.1
/opt/SUNWcadap/man/man1/file4.1
/opt/SUNWcadap/man/windex
/opt/SUNWcadap/srcfiles
/opt/SUNWcadap/srcfiles/file5
/opt/SUNWcadap/srcfiles/file6
$

クライアントシステムのルートファイルシステムにインストールされているパッケージを確認する必要がある場合は、次のコマンドを使用します。


$ pkgchk -v -R root-path pkg-abbrev

参照

以上の手順が終了したら、次の作業、pkginfo コマンドで情報を取得する方法」に進みます。

インストール済みパッケージについての追加情報の表示

インストール済みパッケージについての情報を表示するには、他に 2 つのコマンドがあります。

pkgparam コマンド

pkgparam コマンドを使用すると、コマンドラインで指定したパラメータに関連付けられた値を表示できます。この値は、特定のパッケージの pkginfo ファイル、または指定したファイルから取得されます。1 行に 1 つのパラメータ値が表示されます。値のみ、またはパラメータと値を表示できます。

Procedurepkgparam コマンドで情報を取得する方法

  1. パッケージをインストールします。

    必要に応じて、「スタンドアロンシステムまたはサーバーにパッケージをインストールする方法」を参照してください。

  2. パッケージについての追加情報を表示します。


    # pkgparam [-v] pkg-abbrev [param...]

    -v

    パラメータの名前とその値を表示します。 

    pkg-abbrev

    特定のパッケージの名前です。 

    param

    値を表示するパラメータを 1 つ以上指定します。 


例 4–3 pkgparam コマンドでの情報の取得

たとえば、値のみを表示するには、次のコマンドを使用します。


$ pkgparam SUNWcadap
none
/opt
US/Mountain
/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin
/usr/sadm/sysadm
SUNWcadap
Chip designers need CAD application software to design abc
chips.  Runs only on xyz hardware and is installed in the usr
partition.
system
release 1.0
SPARC
venus990706083849
SUNWcadap
/var/sadm/pkg/SUNWcadap/save
Jul 7 1999 09:58
$

パラメータとその値を表示するには、次のコマンドを使用します。


$ pkgparam -v SUNWcadap
pkgparam -v SUNWcadap
CLASSES='none'
BASEDIR='/opt'
TZ='US/Mountain'
PATH='/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin'
OAMBASE='/usr/sadm/sysadm'
PKG='SUNWcadap'
NAME='Chip designers need CAD application software to design abc chips.  
Runs only on xyz hardware and is installed in the usr partition.'
CATEGORY='system'
VERSION='release 1.0'
ARCH='SPARC'
PSTAMP='venus990706083849'
PKGINST='SUNWcadap'
PKGSAV='/var/sadm/pkg/SUNWcadap/save'
INSTDATE='Jul 7 1999 09:58'
$

特定のパラメータの値を表示する場合は、次の形式を使用します。


$ pkgparam SUNWcadap BASEDIR
/opt
$

詳細については、pkgparam(1) を参照してください。


参照

以上の手順が終了したら、次の作業、「パッケージを削除する方法」に進みます。

pkginfo コマンド

インストール済みパッケージについての情報を表示するには、pkginfo コマンドを使用します。このコマンドには複数のオプションがあり、表示の形式と内容をカスタマイズできます。

任意の数のパッケージインスタンスについての情報を要求できます。

pkginfo のデフォルトの表示

オプションを指定しないで pkginfo コマンドを実行すると、システムに完全にインストールされているすべてのパッケージのカテゴリ、パッケージインスタンス、およびパッケージ名が表示されます。次の例に示すように、表示はカテゴリ別に整理されます。


$ pkginfo
.
.
.
system      SUNWinst       Install Software
system      SUNWipc        Interprocess Communications
system      SUNWisolc      XSH4 conversion for ISO Latin character sets
application SUNWkcspf      KCMS Optional Profiles
application SUNWkcspg      KCMS Programmers Environment
application SUNWkcsrt      KCMS Runtime Environment
.
.
.
$

pkginfo の表示の形式のカスタマイズ

pkginfo の表示には 3 種類の形式があります。 簡易、抽出、詳細の 3 種類です。

短形式がデフォルトです。pkginfo のデフォルトの表示」に示すように、簡易形式では、カテゴリ、パッケージの省略名、およびパッケージの完全な名前のみが表示されます。

抽出形式では、パッケージの省略名、名前、アーキテクチャー(ある場合)、およびバージョン (ある場合) が表示されます。次の例のように、抽出形式を要求するには -x オプションを使用します。


$ pkginfo -x
.
.
.
SUNWipc         Interprocess Communications
                (sparc) 11.8.0,REV=1999.08.20.12.37
SUNWisolc       XSH4 conversion for ISO Latin character sets
                (sparc) 1.0,REV=1999.07.10.10.10
SUNWkcspf       KCMS Optional Profiles
                (sparc) 1.1.2,REV=1.5
SUNWkcspg       KCMS Programmers Environment
                (sparc) 1.1.2,REV=1.5
.
.
.
$

-l オプションを使用すると長形式で表示され、次の例のように、パッケージについて入手できるすべての情報が表示されます。


$ pkginfo -l SUNWcadap
   PKGINST:  SUNWcadap
      NAME:  Chip designers need CAD application software to
design abc chips.  Runs only on xyz hardware and is installed
in the usr partition.
  CATEGORY:  system
      ARCH:  SPARC
   VERSION:  release 1.0
   BASEDIR:  /opt
    PSTAMP:  system980706083849
  INSTDATE:  Jul 7 1999 09:58
    STATUS:  completely installed
     FILES:     13 installed pathnames
                 6 directories
                 3 executables
              3121 blocks used (approx)
$

pkginfo の長形式のパラメータの説明

次の表で、各パッケージで表示できるパッケージパラメータについて説明します。パラメータとその値は、パラメータに値が割り当てられている場合にのみ表示されます。

表 4–2 パッケージパラメータ

パラメータ 

説明 

ARCH

パッケージがサポートするアーキテクチャー。 

BASEDIR

ソフトウェアパッケージが常駐するベースディレクトリ (パッケージが再配置可能な場合に表示されます)。 

CATEGORY

パッケージがメンバーであるソフトウェアのカテゴリ (たとえば、systemapplication)。

CLASSES

パッケージに定義されているクラスのリスト。リストの順序で、クラスのインストール順序が決まります。最初にリストされているクラスが、最初にインストールされます (メディア単位)。このパラメータは、request スクリプトによって変更される場合があります。  

DESC

パッケージを説明するテキスト。 

EMAIL

ユーザー照会のための電子メールアドレス。 

HOTLINE

パッケージについてのホットラインヘルプを受け取る方法についての情報。 

INTONLY

NULL 以外の値に設定されている場合は、パッケージを対話形式でのみインストールする必要があることを示します。 

ISTATES

パッケージのインストールに対する許容可能な実行状態のリスト (S s 1 など)。

MAXINST

マシン上で同時に許可する必要のあるパッケージインスタンスの最大数。デフォルトでは、1 つのパッケージインスタンスのみが許可されます。 

NAME

パッケージ名。通常は、パッケージの省略名を説明するテキスト。 

ORDER

媒体に格納する順序を定義するクラスのリスト。パッケージを作成する際に pkgmk コマンドで使用されます。このパラメータで定義されていないクラスは、標準の順序付け手順を使用して媒体に格納されます。

PKGINST

インストールされているパッケージの省略名。 

PSTAMP

パッケージの製造スタンプ。 

RSTATES

パッケージの削除に対する許容可能な実行状態のリスト (S s 1 など)。

ULIMIT

このパラメータが設定されると、ulimit コマンドに引数として渡されます。これにより、インストールの間にファイルの最大サイズが設定されます。これは、手続きスクリプトによって作成されるファイルに対してのみ適用されます。

VENDOR

ソフトウェアパッケージの提供ベンダーの名前。 

VERSION

パッケージのバージョン。  

VSTOCK

ベンダー提供のストック番号。 

pkginfo コマンドの詳細については、pkginfo(1) のマニュアルページを参照してください。

Procedurepkginfo コマンドで情報を取得する方法

  1. パッケージをインストールします。

    必要に応じて、「スタンドアロンシステムまたはサーバーにパッケージをインストールする方法」を参照してください。

  2. パッケージについての追加情報を表示します。


    # pkginfo [-x | -l] [pkg-abbrev]

    -x

    パッケージの情報が抽出形式で表示されます。 

    -l

    パッケージの情報が長形式で表示されます。 

    pkg-abbrev

    特定のパッケージの名前です。省略すると、pkginfo コマンドでは、インストールされているすべてのパッケージに関する情報がデフォルトの形式で表示されます。

次のステップ

以上の手順が終了したら、次の作業、「パッケージを削除する方法」に進みます。

パッケージの削除

パッケージを削除するときに rm コマンドを使用したくなるかもしれませんが、pkgrm コマンドを使用するとソフトウェア製品用データベースの情報が更新されるため、pkgrm コマンドを使用して削除することが重要です。たとえば、rm コマンドを使用してバイナリ実行可能ファイルを削除することは、pkgrm を使用してそのバイナリ実行可能ファイルを含むソフトウェアパッケージを 削除することと同じではありません。rm コマンドを使用してパッケージのファイルを削除すると、ソフトウェア製品用データベースが破壊されます。1 つのファイルだけを削除する場合は、removef コマンドを使用してください。このコマンドは、ソフトウェア製品用データベースを正しく更新します。

Procedureパッケージを削除する方法

  1. スーパーユーザーとしてシステムにログインします。

  2. インストール済みのパッケージを削除します。


    # pkgrm pkg-abbrev ...

    pkg-abbrev

    1 つ以上のパッケージの名前を空白で区切って指定します。省略すると、pkgrm では使用可能なすべてのパッケージが削除されます。

  3. pkginfo コマンドを使用して、パッケージが正常に削除されたことを確認します。


    $ pkginfo | egrep pkg-abbrev
    

    pkg-abbrev がインストールされている場合に、pkginfo コマンドを使用すると、そのインストール情報が返されます。インストールされていない場合は、pkginfo からシステムプロンプトが返されます。

配布媒体へのパッケージの転送

pkgtrans コマンドでは、パッケージの移動とパッケージ形式の変換が実行されます。pkgtrans コマンドを使用すると、インストール可能なパッケージに対して次の変換を実行できます。

Procedure配布媒体にパッケージを転送する方法

  1. まだ行っていない場合は、パッケージを構築し、ディレクトリ形式のパッケージを作成します。

    詳細については、「パッケージの構築方法」を参照してください。

  2. パッケージをインストールして、正常にインストールされることを確認します。

    必要に応じて、「スタンドアロンシステムまたはサーバーにパッケージをインストールする方法」を参照してください。

  3. パッケージの整合性を確認します。

    必要に応じて、「パッケージの整合性を確認する方法」pkginfo コマンドで情報を取得する方法」、およびpkgparam コマンドで情報を取得する方法」を参照してください。

  4. インストール済みパッケージをシステムから削除します。

    必要な場合は、「パッケージを削除する方法」を参照してください。

  5. パッケージを (パッケージ形式で) 配布媒体に転送します。

    基本的な変換を実行するには、次のコマンドを実行します。


    $ pkgtrans device1 device2 [pkg-abbrev...]

    device1

    パッケージが現在常駐しているデバイスの名前です。 

    device2

    変換後のパッケージを書き込むデバイスの名前です。 

    [pkg-abbrev]

    1 つ以上のパッケージの省略名です。 

    パッケージ名を指定しないと、device1 に常駐しているすべてのパッケージが変換されて、device2 に書き込まれます。


    注 –

    パッケージの複数のインスタンスが device1 に常駐している場合は、パッケージのインスタンス識別子を使用する必要があります。パッケージ識別子については、「パッケージインスタンスの定義」を参照してください。変換中のパッケージのインスタンスが device2 にすでに存在している場合、pkgtrans コマンドでは変換は実行されません。-o オプションを使用すると pkgtrans コマンドでは、出力先デバイスの既存のインスタンスが上書きされ、インスタンスがすでに存在する場合に -n オプションを使用すると新しいインスタンスが作成されます。device2 がデータストリーム形式をサポートする場合はこのチェックが適用されないことに注意してください。


次のステップ

この段階で、パッケージの設計、構築、確認、および転送に必要な手順が完了しています。ケーススタディーを見る場合は、第 5 章パッケージ作成のケーススタディーを参照してください。高度なパッケージ設計のアイデアを見る場合は、第 6 章パッケージの作成のための高度な手法を参照してください。