2018年以降の記事はGitHub Pagesに移行しました

Solarisのパッケージを作ってみる

もう少し学んだ。Solarisのパッケージを作ってみる もう少し学んだ版 - kk_Atakaの日記

あらすじ

  • Solarisのパッケージの作り方を学ぶ刻がきた

インストール後のファイルを作成する

作業用ディレクトリに移動する。

$ cd /tmp/kk_Ataka

次にインストール後のファイル構成を作る。今回はこんなパッケージを作る。

/home/kk_Ataka/testpkg
/home/kk_Ataka/testpkg/readme.txt

実際に作る。

$ mkdir /home/kk_Ataka/testpkg
$ touch /home/kk_Ataka/testpkg/readme.txt

あと、パッケージ名を考えておく。今回はTESTPKGでいいかな。

Prototypeファイルを作成する

以下のような内容のファイルを作成し保存する。名前は適当でよいので今回はtext.txtとした。これはまだPrototypeファイルではない。

/home/
/home/kk_Ataka/
/home/kk_Ataka/testpkg/
/home/kk_Ataka/testpkg/readme.txt

次に下記コマンドを実行する。

pkgproto < test.txt > Prototype

成功したら、カレントディレクトリにPrototypeというファイルが出来ている。中身はこんなもん。

d none /home 0755 root root
d none /home/kk_Ataka 0755 kk_Ataka users
d none /home/kk_Ataka/testpkg 0755 kk_Ataka users
f none /home/kk_Ataka/testpkg/readme.txt 0644 kk_Ataka users

左がファイルのタイプ?(d:ディレクトリ、f:ファイル) noneはなんだろう?作成するファイル、権限、ユーザ名、グループ名かな。
PrototypeファイルができたらPrototypeファイルの先頭に以下を追加する。

i pkginfo

なのでこうなる。

i pkginfo
d none /home 0755 root root
d none /home/kk_Ataka 0755 kk_Ataka users
d none /home/kk_Ataka/testpkg 0755 kk_Ataka users
f none /home/kk_Ataka/testpkg/readme.txt 0644 kk_Ataka users
どっちがいいのか?

ちなみに、test.txtを一番最下層のファイルのみにするとこうなるが、どっちの方がいいんだろう。後で試してみる。

/home/kk_Ataka/testpkg/readme.txt
f none /home/kk_Ataka/testpkg/readme.txt 0644 kk_Ataka users

pkginfoファイルを作成する

pkginfoファイルを作成する。中身はパッケージの情報。

PKG="TESTPKG"
NAME="This is a Test Package."
ARCH="sparc"
VERSION="1.0"
CATEGORY="system"
PKG 必須 パッケージ名称
NAME 必須 パッケージの名前
ARCH 必須 アーキテクチャ sparc, i386など
VERSION 必須 バージョン
CATEGORY 必須 カテゴリ application, systemなどがあるらしい

パッケージ作成

Prototypeファイルとpkginfoファイルを使いパッケージを作成する。

$ pkgmk -r / -d .
## prototype ファイルから pkgmap を作成中です。
## pkginfo ファイルを処理中です。
    警告: パラメータ <PSTAMP> の値は "xxx999999999999999999" に設定されます。
    警告: パラメータ <CLASSES> の値は "none" に設定されます。
## pkgmap の 4 個の項目をボリューム単位で分割しようとしています。
第  1 部-- 21 ブロック, 14 エントリ
## 1 部をパッケージ処理中です。
/tmp/kk_Ataka/TESTPKG/pkgmap
/tmp/kk_Ataka/TESTPKG/pkginfo
/tmp/kk_Ataka/TESTPKG/root/home/kk_Ataka/testpkg/readme.txt
## 制御スクリプトの妥当性検査中です。
## パッケージ処理は完了しました。

pkginfoに設定する項目が足りないせいか警告は出たが問題なさげ。ともかくこれでパッケージはできた!

$ pwd
/tmp/kk_Ataka
$ ls
Prototype   TESTPKG/    pkginfo     test.txt

パッケージを一つにまとめる

今のままではTESTPKGというディレクトリなので、これをパッケージ(.pkg)としてまとめる。以下のコマンドを使用する。

$ pkgtrans . TESTPKG.pkg
$ pkgtrans . TESTPKG.pkg

The following packages are available:
  1  TESTPKG     This is a Test Package.
                 (sparc) 1.0

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:

Transferring <TESTPKG> package instance
$ ls
Prototype     TESTPKG/      TESTPKG.pkg   pkginfo       test.txt

TESTPKGがTESTPKG.pkgにまとまった。

パッケージをインストールする

最後にインストール。root権限で。

# pkgadd -d TESTPKG.pkg

以上。