パッケージの作成
概要
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(525)
インストールスクリプト、アンインストールスクリプト
インストールスクリプト、アンインストールスクリプトについて簡単に説明しておきます。 これらは、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
最終更新時間:2007年09月05日 14時28分08秒