Oracle® Solaris 11.2 での Image Packaging System を使用したソフトウェアのパッケージ化と配布

印刷ビューの終了

更新: 2014 年 7 月
 
 

ディレクトリの個別パッケージ化

パッケージ化された内容がすべてそのディレクトリから削除される場合でも、パッケージ解除された内容をその存在する場所に維持するには、ディレクトリを個別にパッケージ化してインストールします。ディレクトリからほかのパッケージ化された内容がすべてアンインストールされた場合でも、そのディレクトリをインストールしたパッケージがインストールされている状態である限り、そのディレクトリはインストールされたままになります。

たとえば次の手順を実行し、dir に内容を配布するほかのインストール済み IPS パッケージがない場合は、dir ディレクトリの内容 (IPS によって配布されていないアプリケーションを含む) が /var/pkg/lost+found に回収されます。

  1. dir に IPS パッケージとして配布されなかったアプリケーションをインストールします。

  2. dir に内容をインストールする IPS パッケージをインストールします。

  3. dir に内容をインストールする IPS パッケージをアンインストールします。

dir にインストールされているパッケージ解除されたソフトウェアを維持するには、dir ディレクトリを専用の IPS パッケージにパッケージ化します。

必要なディレクトリまたはディレクトリ構造を配布する IPS パッケージを作成します。そのパッケージをインストールします。そのパッケージをアンインストールするまでは、そのディレクトリ構造はその場所に維持されます。そのディレクトリに内容を配布するほかのパッケージをアンインストールしても、そのディレクトリは削除されません。

IPS によりすでに配布されているディレクトリを配布するパッケージは作成しないでください。異なる所有権、アクセス権、またはほかの属性が設定されているディレクトリが更新によってインストールされる場合、その更新は正常に完了しない可能性があります。次の手順の pkgmogrify ステップを参照してください。

内容のアンインストール後にディレクトリを保持する方法

  1. 配布するディレクトリ構造を作成します。

    この例は /usr/local を示します。/usr/local/bin または IPS パッケージで配布されない異なるディレクトリ構造を含めるように、容易に拡張できます。

    $ mkdir -p usrlocal/usr/local
  2. 初期パッケージマニフェストを作成します。
    $ pkgsend generate usrlocal | pkgfmt > usrlocal.p5m.1
    $ cat usrlocal.p5m.1
    dir path=usr owner=root group=bin mode=0755
    dir path=usr/local owner=root group=bin mode=0755
  3. IPS によりすでに配布されているディレクトリを除外します。

    配布する /usr はすでに Oracle Solaris により配布されているので除外し、またメタデータを追加するため、pkgmogrify 入力ファイルを作成します。ディレクトリの所有権またはアクセス権をデフォルトから変更するために変換を追加することもできます。

    $ cat usrlocal.mog
    set name=pkg.fmri value=pkg://site/usrlocal@1.0
    set name=pkg.summary value="Create the /usr/local directory."
    set name=pkg.description value="This package installs the /usr/local \
    directory so that /usr/local remains available for unpackaged files."
    set name=variant.arch value=$(ARCH)
    <transform dir path=usr$->drop>
  4. 変更を初期マニフェストに適用します。
    $ pkgmogrify -DARCH=`uname -p` usrlocal.p5m.1 usrlocal.mog | \
    pkgfmt > usrlocal.p5m.2
    $ cat usrlocal.p5m.2
    set name=pkg.fmri value=pkg://site/usrlocal@1.0
    set name=pkg.summary value="Create the /usr/local directory."
    set name=pkg.description \
        value="This package installs the /usr/local directory so that /usr/local
    remains available for unpackaged files."
    set name=variant.arch value=i386
    dir path=usr/local owner=root group=bin mode=0755
  5. 作業内容を確認します。
    $ pkglint usrlocal.p5m.2
    Lint engine setup...
    Starting lint run...
    $
  6. パッケージをリポジトリに発行します。

    この例では、yourlocalrepo リポジトリのデフォルトパブリッシャーはすでに site に設定されています。

    $ pkgsend -s yourlocalrepo publish -d usrlocal usrlocal.p5m.2
    pkg://site/usrlocal@1.0,5.11:20140303T180555Z
    PUBLISHED
  7. インストールする新しいパッケージが表示されていることを確認します。
    $ pkg refresh site
    $ pkg list -a usrlocal
    NAME (PUBLISHER)      VERSION      IFO
    usrlocal (site)       1.0          ---
  8. パッケージをインストールします。
    $ pkg install -v usrlocal
               Packages to install:         1
         Estimated space available:  20.66 GB
    Estimated space to be consumed: 454.42 MB
           Create boot environment:        No
    Create backup boot environment:        No
              Rebuild boot archive:        No
    
    Changed packages:
    site
      usrlocal
        None -> 1.0,5.11:20140303T180555Z
    PHASE                                          ITEMS
    Installing new actions                           5/5
    Updating package state database                 Done
    Updating package cache                           0/0
    Updating image state                            Done
    Creating fast lookup database                   Done
    Reading search index                            Done
    Updating search index                            1/1
  9. パッケージがインストールされたことを確認します。
    $ pkg list usrlocal
    NAME (PUBLISHER)      VERSION      IFO
    usrlocal (site)       1.0          i-- 
    $ pkg info usrlocal
              Name: usrlocal
           Summary: Create the /usr/local directory.
       Description: This package installs the /usr/local directory so that
                    /usr/local remains available for unpackaged files.
             State: Installed
         Publisher: site
           Version: 1.0
     Build Release: 5.11
            Branch: None
    Packaging Date: March  3, 2014 06:05:55 PM
              Size: 0.00 B
              FMRI: pkg://site/usrlocal@1.0,5.11:20140303T180555Z
    $ ls -ld /usr/local
    drwxr-xr-x   2 root     bin            2 Mar  3 10:17 /usr/local/