![]() |
linux なんかだと、 rpm とかってゆーパッケージ管理の方法があるようで、 ソフトのインストールの楽になったもんです。実は、Solaris にも rpm に よるパッケージ管理の方法があるようなのですが、ここは、ヤハリ、Solaris 自前の pkgadd を使ったパッケージ管理で利用可能なのを作っちゃおう ってことです。
練習用に、 gzip を使いましょう。まずは、 gzip のソースをげっちゅー してくらはい。
SunSite Japanアタリからゲッチューしてくれば良いでしょう。 gzip-1.3.tar.gz が げっちゅーできると思います。アーカイブをデコードしておいてね。
んで、そのままフツーにコンパイル & インストールして /usr/local アタリにインストールされてしまうとアツイので、パッケージを作る 専用のディレクトリにインストールしておくようにしてくらはい。
今回の例では、 ${HOME}/gzip-1.3_pkg にパッケージ用のバイナリを 一時的にインストールするようにしておきます。
./configure のオプションなんかは、ソフトによって変わってくると 思うので、適宜、最適なオプションにしてくらはい。
--prefix オプションだけ、一時インストールのとこを指定してもらえれば良い です。ソフトによっては、手作業でインストール後の処理が必要になってくる 場合がありますが、その場合は、そーゆースクリプトを書いておいてくらさい。
インストールが終わったら、一例の /home/hoge/gzip-1.3_pkg をカレントに してくらはい。
で、pkginfo ファイルを記述します。ファイルネームは、 "pkginfo" ぢゃないとイヤンみたいです。んで、 pkginfo に記述する中身はこんな 感じ、
PKG=gzip NAME=gzip 1.3 VERSION=1.3 ARCH=sun4u Solaris 8 CATEGORY=application VENDOR=hogehoge<hoge@hoge.local.co.jp> EMAIL=hoge@hoge.local.co.jp BASEDIR=/usr/local |
ってな感じです。記述内容は、なんとなく解るよねっ?
prototype ってのは、パッケージの一覧が記述されているファイルらしーです。
で、prototype の元を作ってくらさい。んで、prototype をチョコっと 書き換えます。 gzip-1.3_pkg の場合、こんな prptptype になりました。
d none bin 0755 hoge staff f none bin/gunzip 0755 hoge staff l none bin/gzip=gunzip f none bin/gzexe 0755 hoge staff f none bin/zdiff 0755 hoge staff ・ (途中省略) ・ f none man/man1/zmore.1 0644 hoge staff f none man/man1/znew.1 0644 hoge staff f none pkginfo 0644 hoge staff f none prototype 0644 hoge staff |
ファイルのオーナーや、グループが Build した人のまんまっつーのも マズイと思うので、root と bin アタリに変更しておきましょう。 変更後はこんなかんぢね。あと、削除しておくエントリもあります。
d none bin 0755 root bin f none bin/gunzip 0755 root bin l none bin/gzip=gunzip f none bin/gzexe 0755 root bin f none bin/zdiff 0755 root bin ・ (途中省略) ・ f none man/man1/zmore.1 0644 root bin f none man/man1/znew.1 0644 root bin f none pkginfo 0644 root bin ←削除 f none prototype 0644 root bin ←削除 |
ってなかんじです。この他、インストール後に手作業で設定しないと マズイ ことがある場合なんかには、その設定方法を記述したスクリプトを書いてお きましょう。このスクリプトの名前は、一般に postinstall ってしておくよ うです。んで、この postinstall のエントリを prototype に追加します。
d none bin 0755 root bin f none bin/gunzip 0755 root bin l none bin/gzip=gunzip f none bin/gzexe 0755 root bin f none bin/zdiff 0755 root bin ・ (途中省略) ・ f none man/man1/zmore.1 0644 root bin f none man/man1/znew.1 0644 root bin i postinstall=postinstall |
です。モチロン、 postinstall を使わない場合は、prototype には追加 しないんだよ。
./prototype ファイルに必ず追加しなくっちゃいけないエントリがあります。 pkginfo のエントリっす。追加の仕方は、カンタンで、
i pkginfo=pkginfo ←追加 d none bin 0755 root bin f none bin/gunzip 0755 root bin l none bin/gzip=gunzip f none bin/gzexe 0755 root bin f none bin/zdiff 0755 root bin ・ (途中省略) ・ f none man/man1/zmore.1 0644 root bin f none man/man1/znew.1 0644 root bin |
で、おっけーです。postinstall を使う場合は、
i pkginfo=pkginfo i postinstall=postinstall ←必要に応じて f none bin/gunzip 0755 root bin l none bin/gzip=gunzip f none bin/gzexe 0755 root bin f none bin/zdiff 0755 root bin ・ (途中省略) |
と、ゆーふーに、 postinstall のエントリも追加してくらさい。
とかやると、 /tmp/gzip ってディレクトリができてませんかっ? これがパッケージの実体になります。さらに、 cpio フォーマット のファイルに変換します。
そーすると、 /tmp/gzip-1.3.pkg ってパッケージファイルができて ないかなー?あとは、compress gzip-1.3.pkg とかして、さらに ファイルサイズを小さくするもよし。あ、パッケージの追加は、 pkgadd -d gzip-1.3.pkg だよ。