トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

パッケージの作成

パッケージの作成

概要

RedhatのrpmやDebianのdpkgほど高機能ではありませんが、Solarisにもバイナリパッケージでソフトウェアをインストールする仕組みがあります。例としてApache httpdのパッケージを作成してみます。

mkpkg tools

Sunの中の人がパッケージ作成を簡単に行えるmkpkg toolsというツールを作成しておられるのでそちらを使用してみます。Solaris関係の物置き からmkpkg toolsをダウンロードして適当なディレクトリに展開します。

# wget http://blogs.sun.com/roller/resources/thaniwa/mkpkg.zip
# unzip mkpkg.zip
# cp mkpkg mkpinfo mkproto /usr/local/bin

mkprotoスクリプトは環境変数USERとGROUPがセットされていることを前提としているようなのですが、私の環境ではGROUPという環境変数はセットされていませんでした。GROUP環境変数がセットされていない場合は、現在のグループ名をセットするようにmkprotoを修正しました。

mkprotoの先頭のあたりに追加
------------------------------
GROUP=${GROUP:-`/usr/xpg4/bin/id -gn`}

また、preinstall, postinstall, preremove, postremoveというファイルがある場合はインストールスクリプトまたはアンインストールスクリプトとみなすようにしました。

mkprotoの下の方のpkgprotoのパイプラインに追加
------------------------------
... | 
awk '{
    if ( $3 ~ /preinstall|postinstall|preremove|postremove/ )
        print "i "$3
    else
        print $0
}' >> $PROTOTYPE

変更したmkproto
mkproto(877)

インストールスクリプト、アンインストールスクリプト

インストールスクリプト、アンインストールスクリプトについて簡単に説明しておきます。 これらは、prototypeファイルの中で"i preinstall"のように記述します。 "i preinstall=/path/to/script"のように明示的にスクリプトファイル名を指定することもできます。

preinstall
インストール前に実行するスクリプト。
postinstall
インストール後に実行するスクリプト。
preremove
アンインストール前に実行するスクリプト。
postremove
アンインストール後に実行するスクリプト。

詳しくはdocs.sun.comか SUN packaging guide を見てください。後者は英語ですがdocs.sun.comより簡潔でわかりやすいと思います。

Apacheのパッケージを作成する

ApacheのソースにはSolarisのパッケージ作成用のスクリプト(build/pkg/buildpkg.sh)が付属していますが、それは使わずmkpkg toolsを使ってパッケージを作成してみます。

 コンパイル

Apacheを通常通りコンパイルします。

$ tar zxvf httpd-2.2.4.tar.gz
$ cd httpd-2.2.4
$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=most
$ gmake

適当なDESTDIRを指定してインストールします。

$ gmake install DESTDIR=/var/tmp/pkg 

 mkpkgの実行

インストールしたディレクトリに移動してmkpkgを実行します。

パッケージ名は、「Ticker Symbol(NASDAQ株式市場での表示シンボル。例:SUNW)+ アプリケーション名」とするのが通例のようです。NASDAQ上場企業じゃない場合はどうすればいいんでしょうかね。

$ cd /var/tmp/pkg
$ mkpkg httpd-2.2.4-i86pc-local -p SHhttpd -n httpd -v 2.2.4 -a i86pc

コマンドを実行すると、httpd-2.2.4-i86pc-localというパッケージがカレントディレクトリに作成されます。上の例では必須のオプションだけを指定しています。

オプションの詳細はヘルプを参照してください。

$ mkpkg -h
Usage of /usr/local/bin/mkpkg
> /usr/local/bin/mkpkg output [-g] [-user <username>] [-group <group>]
             -p <pkg> -n <name> -v <version> -a <arch> [-c <category>]
            [-b <basedir>] [-d <description>] [-vd <vendor>] [-o <flag>...]

  output             : output file name

  [Details of Option]
  -g                 : create gzipped package
  -p  <pkg>          : package name (ex. SUNWgcc)
  -n  <name>         : application name (ex. gcc)
  -v  <version>      : application version (ex. 4.2.0)
  -a  <arch>         : architecuture, i86pc,sun4u...
  -c  <category>     : category of the application (ex. system, application, GNOME2)
                       (default = appilcation)
  -b  <basedir>      : base directory of the application (default = /)
  -d  <description>  : package description
  -vd <vendor>       : vendor name (default = unknown)
  -o  <flag>         : if you want to add other flags, please use it
                       (ex. -o "SUMW_PRODNAME=SunOS" -o "SUNW_PRODVERS=5.10"

 パッケージのインストール

作成したパッケージはpkgaddコマンドでインストールできます。

# pkgadd -d httpd-2.2.4-i86pc-local

リンク

mkproto

最終更新時間:2007年09月05日 14時28分08秒