パッケージの作成
[1] 主筆嬢 06/05/20 15:13
主筆の配布ファイルをパッケージにしたい。
パッケージ化のやり方を教えろ。
[2] nabiki_t 06/05/20 15:15
……へいへい
じゃ、とりあえず基本的なやり方からな。
[3] 主筆嬢 06/05/20 15:16
基本的じゃないやり方の方からじゃ、だめ?
[4] nabiki_t 06/05/20 15:17
それじゃ分かりにくいし、というか、説明しづらいだろうが。
[5] nabiki_t 06/05/20 15:19
この説明では、下記のソフトウェアをインストールする事を考えてみる。
| パッケージ名 |
APKG |
| ファイル |
/usr/apkg/a.txt |
/usrの下にapkgというディレクトリを作って、その中にa.txtというファイルを格納する。
a.txtの所有者はroot、0644というパーミッションを割り当てる事にする。
[6] 主筆嬢 06/05/20 15:20
ただのテキストファイルじゃん。
"ソフトウェア"と言える代物じゃないじゃん。
[7] nabiki_t 06/05/20 15:22
説明用なんだから、どうだっていいじゃねぇか。
それとあと、作業用ディレクトリには「/export/home/nabiki/projects/testpkg」を使う事にする。
[8] nabiki_t 06/05/20 15:26
まずしなければならないのは、パッケージ化対象のソフトウェアを「インストールされた後の状態」になるよう、ファイルを配置する事だ。
ここでは、「/usr/apkg/a.txt」というファイルを作成する事になる。
[9] nabiki_t 06/05/20 15:27
次は、Prototypeファイルの作成だ。
Prototypeファイルを作成するためには、まず一旦下記のような内容のファイルを作成して、適当な名前で保存する。
/usr/apkg
/usr/apkg/a.txt
|
とりあえず、b.txtという名前にしておいた。
このファイルには、パッケージに含めるファイルとディレクトリを1行に一つずつ記述する。
[10] nabiki_t 06/05/20 15:28
ここで本チャンのPrototypeファイルを生成する。
Prototypeファイルは下記のコマンドで生成する事ができる。
pkgproto < b.txt > Prototype
|
Prototypeファイルには、下記のような内容が記述されている。
d none /usr/apkg 0755 root root
f none /usr/apkg/a.txt 0644 root root
|
五つのカラムはそれぞれ、行の書かれた情報の種別、ファイル・ディレクトリの種別、パス名、パーミッション、UID、GIDを示している。
パーミッションやユーザは必要に応じて修正する必要がある。
[11] nabiki_t 06/05/20 15:30
ここでもう一つ、Prototypeファイルに"i pkginfo"という一文を記述する必要がある。
i pkginfo
d none /usr/apkg 0755 root root
f none /usr/apkg/a.txt 0644 root root
|
これはパッケージ化に際してpkginfoというファイルを使用する為だ。
[12] 主筆嬢 06/05/20 15:32
端から>>11のファイルを自分で記述したっていいんじゃない?
[13] nabiki_t 06/05/20 15:33
まぁ、それもそうなんだけど。
ファイル数が多い場合は手書きじゃ無理だろう。
[14] nabiki_t 06/05/20 15:33
次にpkginfoファイルを作成する。
pkginfoファイルのファイル名は"pkginfo"で、下記のような内容を記述する。
PKG="APKG"
NAME="A Test Package"
VERSION="1.0"
ARCH="sparc"
CLASSES="none"
CATEGORY="utility"
VENDOR="nabiki_t"
PSTAMP="060520"
EMAIL="nabiki_t@XXXXXX"
ISTATES="S s 1 2 3"
RSTATES="S s 1 2 3"
BASEDIR="/"
|
記述する内容は大体分かるだろうが、詳細はこのページに書いてある。
[15] 広告 06/05/20 15:37
[16] nabiki_t 06/05/20 15:38
ここでようやくパッケージを作成することができる。
パッケージを作成するにはpkgmkというコマンドを使用する。
特に指定しないと、Prototypeファイルはカレントディレクトリにある"Prototype"という名前のファイルを参照し、pkginfoファイルはカレントディレクトリの"pkginfo"ファイルを参照する。
[17] nabiki_t 06/05/20 15:40
そうすると、下記のようなメッセージが表示されて、カレントディレクトリに"APKG"というディレクトリが作成される。
## prototype ファイルから pkgmap を作成中です。
## pkginfo ファイルを処理中です。
警告: </usr> のディレクトリ項目がありません。
## pkgmap の 2 個の項目をボリューム単位で分割しようとしています。
第 1 部-- 13 ブロック, 7 エントリ
## 1 部をパッケージ処理中です。
/export/home/nabiki/projects/testpkg/APKG/pkgmap
/export/home/nabiki/projects/testpkg/APKG/pkginfo
/export/home/nabiki/projects/testpkg/APKG/root/usr/apkg/a.txt
## 制御スクリプトの妥当性検査中です。
## パッケージ処理は完了しました。
|
Prototypeファイルに/usrというディレクトリに関する記述がないから警告が表示されるが、これは無視しても構わないらしい。
[18] 主筆嬢 06/05/20 15:41
それで、とりあえずはパッケージはできたの?
[19] nabiki_t 06/05/20 15:42
あぁ、まぁな。APKGというディレクトリがパッケージだ。
root権限で
とすればインストールする事ができる。
[20] 主筆嬢 06/05/20 15:43
ふーん。
だけどさ、これディレクトリになってるじゃん。よく単一のファイルになってるパッケージを見るんだけど、あれはどうやって作るの?
[21] nabiki_t 06/05/20 15:45
一個のファイルにまとめるにはpkgtransというコマンドを使う。
このコマンドを入力すると、変換するパッケージを聞かれるから、それに答えてやると単一のファイルにまとまったパッケージが作成される。
[22] 主筆嬢 06/05/20 15:46
あっ、そう。
[23] nabiki_t 06/05/20 15:49
「あっそう」って……それで終わりかよ。
[24] nabiki_t 06/05/20 15:52
あと一応、できたパッケージはroot権限で
とすればインストールできるし、pkgrmコマンドを使えば削除できる。
……って、もう聞いてねぇし。
|