Messages in cipher reflected in the looking glass

http://blogs.sun.com/thaniwa/date/20060617 2006年 6月 17日 土曜日

(JA) Solaris pkg (Part 1) : How to build

これから3回に渡って、Solaris の pkg のことを書きたいと思います。 次回以降は順次書いていきますが、公開日は未定です。^-^;
まず1回目は Solaris の pkg の作り方を簡単にまとめます。 簡単にまとめてますので多少物足りないかもしれませんが、そういう方は http://docs.sun.com/で補完してください。m(._.)m


Solaris の pkg を作る方法は次の様になります。

  • アプリケーションのコンパイル、(テンポラリディレクトリに)インストールする。
  • pkginfo ファイルを作成する
  • prototype ファイルを作成する
  • pkgmk コマンドでパッケージを作成
  • pkgtrans で 1ファイル化 (オプション)
  • gzip で圧縮(オプション)


1. アプリケーションのコンパイル、インストール


これは、ソース公開されているアプリケーションは、アプリケーションの指定方法でコンパイルします。よくあるのは ./configure ; make です。 ただ、インストール先を通常とは違うディレクトリにします。 このディレクトリは空の方が良いです。(その方が作業が簡単)
PREFIX=/tmp/work; make install として /tmp/work にインストールしたとしましょう。
単に pkg 作成を試してみるのならバイナリで提供されたものを利用するというのも手の1つです。 ここでは例として、LG3DのSolaris用 tar.gz ファイルを利用したとします。
https://lg3d-core.dev.java.net/binary-builds.html

# cd /tmp/work
# gunzip -c lg3d-fcs-rel-0-8-0-solaris-i86pc-0605121113.tar.gz | tar xvf -

これで、/tmp/work/lg3d 以下に展開されます。

2. pkginfo ファイルの作成


次は pkginfo ファイルです。このファイルはパッケージ情報を記述します。
簡単に言うと、パッケージの名前、バージョン、アーキテクチャ等の情報をまとめたファイルになります。
このファイルで定義できる内容は非常に多いのですが、必須項目は PKG(パッケージ名), NAME(アプリケーションの名前), VERSION(バージョン), ARCH(アーキテクチャ), CATEGORY(カテゴリ) の 5つです。
詳細は http://docs.sun.com/app/docs/doc/816-5174/6mbb98uic?a=view を見てください。
ちなみに、LG3D 0.8.0の pkginfoファイルの中身は大体このような感じです。

PKG=LG3D
NAME=Project Looking Glass
VERSION=0.8.0
ARCH=i86pc
DESC=
BASEDIR=/opt
CATEGORY=application
VENDOR=lg3d-core team

BASEDIRはパッケージにインストールする先を指定します。今回、/tmp/workにLG3Dを展開していますが、それディレクトリの lg3d 以下をパッケージングします。 そのままパッケージングした場合 /lg3d にインストールされるようになりますので、 /opt を指定し、/opt/lg3d 以下にインストールされるようにしています。

3. prototype ファイルの作成


pkginfo の作成が終わったら、prototype ファイルを作成します。 このファイルはパッケージに含めるファイルリストを定義するためのものです。 このファイルの作成を簡略化するために、本体を空のディレクトリにインストールすることを推奨します。
作成には pkgproto

# cd /tmp/work
# pkgproto . > prototype
# vi prototype

ファイルは次のような感じになります。
pkgprotoの出力結果では、pkginfoの辺りがおかしいので編集して直します。
このファイルに prototype は書きません。

i pkginfo
d none lg3d 0755 root other
d none lg3d/bin 0755 root other
f none lg3d/bin/HelloUniverse 0755 root other
f none lg3d/bin/README 0755 root other
f none lg3d/bin/add-lg-to-gdm 0755 root other
f none lg3d/bin/check_no_x 0755 root other
f none lg3d/bin/displayserver 0755 root other
f none lg3d/bin/get-xorg-modulepath 0755 root other
f none lg3d/bin/lg3d-app 0755 root other

形式は man pkgproto で。^-^;
重要な部分はこのファイルの後半のファイルの所有者です。 これは一般ユーザで実行した場合実行した人の名前になりますので、 通常 root other に直す必要があります。

4. pkgmk でパッケージの作成


ここまできたらあとちょっとです。
次はパッケージの作成です。

# cd /tmp/work
# pkgmk -r . -d .

これだけです。-r はパッケージの元となるファイル群があるディレクトリの指定、 -d はパッケージの出力先です。 面倒なので同じディレクトリで処理しています。^-^; 実行が完了すると、pkginfo ファイルの PKG で指定したディレクトリが出来ています。 この中身が Solaris 用 pkg になります。

5. pkgtrans でパッケージを1つのファイルにまとめる。


pkgmkの状態では扱いにくいので1ファイル化します。 方法は簡単で、以下の通りです。

# cd /tmp/work
# pkgtrans -s . lg3d-0.8.0-pkg LG3D

オプション -s はお約束で。^-^; 2つ目が1ファイル化したいパッケージがあるディレクトリ、3つ目がパッケージファイル、4つ目がパッケージ名です。

6. gzip で固める。


説明要りませんよね。^-^; これで sunfreeware.comなどで提供されているパッケージとほぼ同じものになります。

もっと色々なカスタマイズが可能ですが、それは docs.sun.comで補完してください。

投稿されたコメント:

コメント
コメントは無効になっています。