ホーム 主筆 その他ソフト その他情報 Syuhitu.org English

Windows関連

スクリーンセーバー作成法

半透明ウインドウの性能

bootfont.bin

キャビネット形式

ウインドウスタイルをいじる

Java製ソフトをServiceに登録する

イベントログにメッセージを出力する

コントロールパネルにアイコンを追加する

Solaris関連

OpenGL

Solaris設定

ディレクトリの読み込み

主筆プラグイン開発

Sun Studio 11

マルチスレッドでの開発

door

音を出す

Blade100の正しい虐め方

パッケージの作成

画像入出力

BMPファイル

ICOファイル

ANIファイル

JPEGファイル

減色アルゴリズム

減色アルゴリズムの並列化

その他アルゴリズムなど

自由軸回転

Base64

文字列操作

CPU利用率の取得

正規表現ライブラリ

メタボールを作る

メタボールを作る2

正規表現とNFA・DFA

C言語の構文解析

マルチスレッド開発の傾向と対策

パッケージの作成

[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というコマンドを使用する。

pkgmk -r / -d .

特に指定しないと、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権限で

pkgadd -d .

とすればインストールする事ができる。

[20] 主筆嬢 06/05/20 15:43

ふーん。

だけどさ、これディレクトリになってるじゃん。よく単一のファイルになってるパッケージを見るんだけど、あれはどうやって作るの?

[21] nabiki_t 06/05/20 15:45

一個のファイルにまとめるにはpkgtransというコマンドを使う。

pkgtrans . APHG.pkg

このコマンドを入力すると、変換するパッケージを聞かれるから、それに答えてやると単一のファイルにまとまったパッケージが作成される。

[22] 主筆嬢 06/05/20 15:46

あっ、そう。

[23] nabiki_t 06/05/20 15:49

「あっそう」って……それで終わりかよ。

[24] nabiki_t 06/05/20 15:52

あと一応、できたパッケージはroot権限で

pkgadd -d APKG.pkg

とすればインストールできるし、pkgrmコマンドを使えば削除できる。

……って、もう聞いてねぇし。