タイトル大津真=XはUNIXでサーバで》Mac OS X用パッケージの作り方(4)カテゴリー開発情報, 大津真=XはUNIXでサーバで
作成日2001/9/25 17:38:24作成者新居雅行
――――Package Makerでパッケージを作成
ダミーのディレクトリへのインストールが完了したところで、いよいよパッケージの作成に移りましょう。パッケージの作成は、Terminal上でpackageコマンドで行うことも可能ですがオプションの指定が面倒なので、ここではPackage MakerというGUIツールを使用する方法を説明します。Package Makerを利用するにはDeveloper ToolsをMac OS Xにインストールしておく必要があります。
Package Makerは、Finder上ではDeveloperフォルダ下のApplicationフォルダに置かれていますので、ダブルクリックして立ち上げます。

 

次の図を参考に各項目を設定します。

 

詳しくはオンラインマニュアルを参照していただくことにして、ここでは重要な項目について説明しましょう。なお、パッケージ自体は国際化に対応していますが、Package Makerは対応していないため、タイトルや説明に日本語を入力しないでください。

  • Package Root Directory:パッケージ作成の基準となるディレクトリです。
  • Package Resources Directory:ライセンスファイルや、前処理用起動スクリプトが必要な場合にそれらを置いたディレクトリを指定します。今回は何も入力しません。
  • Package Title:パッケージのタイトルです。
  • Package Version:バージョンです。
  • Package Description:パッケージの説明です。
  • Default Location:インストール先のディレクトリです。
  • Needs Authorization:チェックを付けると、インストール時に管理者のパスワードの入力が必要になります。チェックします。
  • Relocatable:「Default Location」で指定したディレクトリを変更可能にするかどうかの指定です。チェックしません。
  • Compress package:パッケージを圧縮するかどうかの指定です。チェックします。

設定が完了したら[Create Package]ボタンをクリックします。すると保存先を指定するダイアログボックスが表示されるので名前を入力して[Save]ボタンをクリックします。このとき必ず拡張子を「.pkg」に設定してください。

 

以上でパッケージの作成が完了です。
ダブルクリックすればInstallerが起動し、その指示に従っていけばbzip2が/usr/localディレクトリにインストールされます。

 

bzip2の使い方については付録の を参照してください。なお、インストールが完了すると/Library/Receipts/ディレクトリにパッケージがコピーされます。

――――パッケージの中身を覗いてみよう
せっかくですから作成したパッケージの構造を見てみましょう。前に述べたようにパッケージはFinder上では単一のファイルのように見えますが、Terminal上ではディレクトリです。したがってlsコマンドで一覧を表示できます。

% ls -l bzip2-1.0.1.pkg <return>
total 0
drwxr-xr-x 4 o2 staff 92 Sep 20 22:02 Contents

このように、パッケージの直下にはContentsというディレクトリがあり、その下のResourcesディレクトリに必要なファイルがまとめられています。

% ls -l bzip2-1.0.1.pkg/Contents/Resources/ <return>
total 360
drwxr-xr-x 3 o2 staff 264 Sep 20 22:02 English.lproj
-r--r--r-- 1 o2 staff 35652 Sep 20 22:03 bzip2-1.0.1.bom
-r--r--r-- 1 o2 staff 142667 Sep 20 22:02 bzip2-1.0.1.pax.gz
-r--r--r-- 1 o2 staff 49 Sep 20 22:02 bzip2-1.0.1.sizes

パッケージは国際化に対応しています。言語ごとのリソースは「言語.lproj」ディレクトリに置かれます。初期状態では英語用のEnglish.lprojディレクトリのみが用意されパッケージの情報が記述された「パッケージ名.info」ファイルが入れられています。

% ls -l bzip2-1.0.1.pkg/Contents/Resources/English.lproj/ <return>
total 8
-r--r--r-- 1 o2 staff 305 Sep 20 22:02 bzip2-1.0.1.info

これらのファイルについて説明しておきましょう。

>>>パッケージ名.bom
インストールされるファイルに関する情報が入れられています。lsbomコマンドで一覧を表示できます。

% lsbom bzip2-1.0.1.pkg/Contents/Resources/bzip2-1.0.1.bom <return>
. 40755 501/20
./bin 40755 501/20
./bin/bunzip2 100755 501/20 92152 120929931
./bin/bzcat 100755 501/20 92152 120929931
./bin/bzip2 100755 501/20 92152 120929931
./bin/bzip2recover 100755 501/20 14576 2719264553
./include 40755 501/20
./include/bzlib.h 100644 501/20 7800 270631979
./lib 40755 501/20
./lib/libbz2.a 100644 501/20 72240 4020666249
./man 40755 501/20
./man/man1 40755 501/20
./man/man1/bzip2.1 100644 501/20 15391 1268110083

>>>パッケージ名.pax.gz
インストールされるファイルをpaxでアーカイブしgzipで圧縮したものです。

>>>パッケージ名.sizes
インストールされるファイルの数やサイズが入れられているテキストファイルです。

>>>パッケージ名.info
Package Makerで設定した、パッケージの名前やインストール先などの情報が入っているテキストファイルです。

このようにFinder上ではファイルに見えるディレクトリにまとめておくという仕組みはラッパーなどと呼ばれ、Mac OS X用のアプリケーションでも採用されています。/Applicationsディレクトリをlsコマンドで見てみると確認できます。バイナリーやリソースファイルをまとめて管理しながら、リソースファイルを追加したり編集したりといったことが簡単に行えるので便利でしょう。

――――まとめ
さて、今回はOS X用パッケージの作成方法について説明しましたがいかがでしたでしょうか。コンパイルさえうまくいけばPackage Makerを使用して簡単にパッケージが作成できることがおわかりいただけたと思います。なお、残念ながらMac OS XのInstallerにはインストール済みのパッケージを削除するような機能は用意されていません(Mac OS X Server 1.2にはあったのですが...)。早急に実装してほしいものですね。

(この記事には「付録」があります)
[大津真]
関連リンクhttp://www.o2-m.com/