JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
アプリケーションパッケージ開発者ガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  パッケージの設計

2.  パッケージの構築

3.  パッケージの機能の拡張 (タスク)

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

5.  パッケージ作成のケーススタディー

6.  パッケージの作成のための高度な手法

ベースディレクトリの指定

管理デフォルトファイル

疑問の解決

BASEDIR パラメータの使用

パラメータ型ベースディレクトリの使用

例 -- パラメータ型ベースディレクトリの使用

pkginfo ファイル

pkgmap ファイル

ベースディレクトリの管理

再配置の対応

ベースディレクトリの調査

BASEDIR パラメータの使用

pkginfo ファイル

pkgmap ファイル

例 -- BASEDIR を調査する分析スクリプト

request スクリプト

checkinstall スクリプト

相対パラメータ型パスの使用

pkginfo ファイル

pkgmap ファイル

例 -- 相対パラメータ型パスを調査する request スクリプト

異機種システム混在環境での再配置のサポート

従来のアプローチ

再配置可能パッケージ

例 - 従来の再配置可能パッケージ

pkginfo ファイル

pkgmap ファイル

絶対パッケージ

例 - 従来の絶対パッケージ

pkgmap ファイル

複合パッケージ

例 - 従来の解決方法

pkginfo ファイル

pkgmap ファイル

従来の方法を超えて

複合パッケージの別の側面

再配置可能に見える絶対パス名の作成

例 -- ファイルの変更

説明

実装

例 -- 新しいファイルの作成

説明

実装

例 -- 複合パッケージ

pkginfo ファイル

pkgmap ファイル

リモートでインストール可能なパッケージの作成

例 - クライアントシステムへのインストール

例 - サーバーまたはスタンドアロンシステムへのインストール

例 - 共有ファイルシステムのマウント

パッケージのパッチ

checkinstall スクリプト

preinstall スクリプト

クラスアクションスクリプト

postinstall スクリプト

patch_checkinstall スクリプト

patch_postinstall スクリプト

パッケージのアップグレード

request スクリプト

postinstall スクリプト

クラスアーカイブパッケージの作成

アーカイブパッケージディレクトリの構造

クラスアーカイブパッケージをサポートするキーワード

faspac ユーティリティー

用語集

索引

パッケージのアップグレード

パッケージのアップグレードのプロセスは、パッケージの上書きのプロセスとは異なっています。Oracle Solaris OS の一部として提供される標準パッケージのアップグレードをサポートする特殊ツールはありますが、アンバンドルのパッケージは独自のアップグレードをサポートするように設計できます。前のいくつかの例で、先を見越して、管理者の管理下でインストールの正確な方法を制御するパッケージについて説明しました。同様に、パッケージの直接アップグレードをサポートする request スクリプトを設計できます。管理者が、古いファイルが残らないように、あるパッケージをすべて置き換えて別のパッケージをインストールすることにした場合、パッケージスクリプトでこの処理を行うことができます。

この例の request スクリプトおよび postinstall スクリプトでは、単純なアップグレード可能パッケージを提供しています。request スクリプトは管理者と対話して、古いパッケージインスタンスを削除するための簡単なファイルを /tmp ディレクトリに設定します。request スクリプトはファイルを作成します (これは禁止されている) が、/tmp には全員がアクセスできるため、問題ありません。

postinstall スクリプトは、/tmp のシェルスクリプトを実行します。このスクリプトは、古いパッケージに対して必要な pkgrm コマンドを実行してから、自分自身を削除します。

この例では基本的なアップグレードについて説明します。いくつかの非常に長いメッセージを含めて、コードは 50 行未満です。設計者の要求により、アップグレードのバックアウトを拡張したり、パッケージにほかの大きな変換を行ったりすることができます。

アップグレードオプションのユーザーインタフェースの設計時には、管理者がプロセスについてはっきり認識して、並列インストールではなくアップグレードを積極的に要求していることを確実に確認する必要があります。ユーザーインタフェースによって操作が明確になっている限りは、アップグレードのような汎用的で複雑な処理を実行しても問題はありません。

request スクリプト

# request script
control an upgrade installation
 
PATH=/usr/sadm/bin:$PATH
UPGR_SCRIPT=/tmp/upgr.$PKGINST
 
UPGRADE_MSG="Do you want to upgrade the installed version ?"
 
UPGRADE_HLP="If upgrade is desired, the existing version of the \
    package will be replaced by this version. If it is not \
    desired, this new version will be installed into a different \
    base directory and both versions will be usable."
 
UPGRADE_NOTICE="Conflict approval questions may be displayed. The \
    listed files are the ones that will be upgraded. Please \
    answer \"y\" to these questions if they are presented."
 
pkginfo -v 1.0 -q SUNWstuf.\*
 
if [ $? -eq 0 ]; then
      # See if upgrade is desired here
      response=`ckyorn -p "$UPGRADE_MSG" -h "$UPGRADE_HLP"`
      if [ $response = "y" ]; then
            OldPkg=`pkginfo -v 1.0 -x SUNWstuf.\* | nawk ' \
            /SUNW/{print $1} '`
            # Initiate upgrade
            echo "PATH=/usr/sadm/bin:$PATH" > $UPGR_SCRIPT
            echo "sleep 3" >> $UPGR_SCRIPT
            echo "echo Now removing old instance of $PKG" >> \
            $UPGR_SCRIPT
            if [ ${PKG_INSTALL_ROOT} ]; then
                  echo "pkgrm -n -R $PKG_INSTALL_ROOT $OldPkg" >> \
                  $UPGR_SCRIPT
            else
                  echo "pkgrm -n $OldPkg" >> $UPGR_SCRIPT
            fi
            echo "rm $UPGR_SCRIPT" >> $UPGR_SCRIPT
            echo "exit $?" >> $UPGR_SCRIPT
 
            # Get the original package's base directory
            OldBD=`pkgparam $OldPkg BASEDIR`
            echo "BASEDIR=$OldBD" > $1
            puttext -l 5 "$UPGRADE_NOTICE"
       else
             if [ -f $UPGR_SCRIPT ]; then
                   rm -r $UPGR_SCRIPT
             fi
       fi
fi
 
exit 0

postinstall スクリプト

# postinstall
to execute a simple upgrade
 
PATH=/usr/sadm/bin:$PATH
UPGR_SCRIPT=/tmp/upgr.$PKGINST
 
if [ -f $UPGR_SCRIPT ]; then
      sh $UPGR_SCRIPT &
fi
 
exit 0