Messages in cipher reflected in the looking glass

http://blogs.sun.com/thaniwa/date/20060619 2006年 6月 19日 月曜日

(JA) Solaris pkg (Part 2) : mkpkg

ということで第2回目です。

1回目ではSolaris用pkgの作り方を簡単にまとめたわけですが、やはり面倒だなぁ… ということでシェルスクリプトを書きました。 今回はそのお話です。^-^;
作成したシェルスクリプト群は以下からダウンロードできます。 mkpkg.zip は mkpkg, mkpinfo, mkproto の 3つのシェルスクリプトから構成されます。 それぞれの詳細は後半にありますので、そちらを参照してください。


基本的にフリーです。 たいしたシェルスクリプトでもないし、バイナリでもないので、ライセンスは不要だと思いますが、 敢えて必要というのなら、GPL(V2以降) or CDDL のメタライセンスということにでもしておいてください。^^;

mkpkgコマンドを利用することにより、第1回目で解説したパッケージの作成方法が以下のように簡単化することができます。

  • バイナリの作成、(テンポラリディレクトリへの)インストール
  • テンポラリディレクトリへの移動
  • mkpkg コマンドの実行

たとえば、第1回目で作成した LG3D のパッケージ化はこのような感じになります。 これで lg3d-0.8.0-x86-pkg.gz というファイルが作られます。

# mkdir /tmp/work
# cd /tmp/work
# gunzip -c lg3d-fcs-rel-0-8-0-solaris-i86pc-0605121113.tar.gz | tar xvf -
#
# mkpkg lg3d-0.8.0-x86-pkg -p LG3D -n "Project Looking Glass" -v "0.8.0" \
# -a "i86pc" -b "/opt" -vd "lg3d-core team" -g

Solaris用pkg は様々な情報を組み込んだりなど、カスタマイズができますが、 もし大幅にカスタマイズしたパッケージを作成したいのでしたら、このツールは向いていませんので、 自分でがんばって書きましょう。

一応、各コマンドの使い方を載せておきます。
これらは -h オプションを付けて各コマンドを実行した際に表示します。

mkpkg : Solaris用pkg一発作成コマンド。
パッケージングしたいバイナリをインストールしたディレクトリに移動し、 このコマンドを利用することで、1ファイル化したパッケージの作成が行えます。


Usage of mkpkg
> 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"


mkpinfo : pkginfo ファイル作成用コマンド。
mkpkg の内部から呼び出していますが、個別に使用することも可能です。 mkpkg が使えない場合に、pkginfoのひな形を作るという場合くらいでしょうが…。


Usage of mkpinfo
> mkpinfo -p <pkg> -n <name> -v <version> -a <arch> [-c <category>]
             [-b <basedir>] [-d <description>] [-vd <vendor>] [-o <flag>...]

[Details of Option]
-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"


mkproto : prototype ファイル作成用コマンド。
mkpkgが使えないケースでひな形を作る時くらいですね、使うとしても…。
これも mkpkg の内部から呼び出しています。


Usage of mkproto
> mkproto [Option]

[Details of Option]
Default    : User = root, Group = other
-u <user>  : set user
-g <group> : set group


投稿されたコメント:

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