タイトル大津真=XはUNIXでサーバで》Mac OS X用パッケージの作り方(3)カテゴリー開発情報, 大津真=XはUNIXでサーバで
作成日2001/9/25 17:37:16作成者新居雅行
――――ダミーのディレクトリにインストール
通常のインストール手順ではコンパイル後に「make install」を実行するという流れですが、パッケージを作成する場合には、ダミーのディレクトリにインストールしておく必要があります。
ちょっと詳しく説明しましょう。自分でコンパイルしたUNIXコマンドは/usr/localディレクトリ以下に置くのが一般的です(システムを一人だけで使う場合にはホームディレクトリの下に置くというのもアリですが)。そのため、単に「make install」とするとたいていのコマンドは/usr/localディレクトリにインストールされます。通常の流れではそれでかまいませんが、パッケージ作成では仮のディレクトリにインストールして置いてパッケージを作成します。パッケージができあがったらInstallerアプリケーションを使用して/usr/localディレクトリにインストールさせるわけです。
この仮のディレクトリはどこでもかまいませんが、ホームディレクトリの下に「tmpLocal」といったディレクトリを作成するといいでしょう。

% mkdir ~/tmpLocal <return>

次に、作成した「~/tmpLocal」にbzip2をインストールします。このインストール先の指定方法はソフトによって異なります。bzip2のREADMEファイルを呼んでみるとわかりますが、bzip2の場合には「make install PREFIX=/xxx/yyy」とすることでディレクトリを指定できます。したがって、ホームディレクトリの下のtmpLocalにインストールするにはホームディレクトリを表す環境変数「$HOME」を使って、「PREFIX=$HOME/tmpLocal」と指定すればいいわけです。

まずは、「-n」オプションでインストールするふりをして動作を確認します。

% make -n install PREFIX=$HOME/tmpLocal <return>
if ( test ! -d /Users/o2/tmpLocal/bin ) ; then mkdir /Users/o2/tmpLocal/bin ; fi
if ( test ! -d /Users/o2/tmpLocal/lib ) ; then mkdir /Users/o2/tmpLocal/lib ; fi
if ( test ! -d /Users/o2/tmpLocal/man ) ; then mkdir /Users/o2/tmpLocal/man ; fi
if ( test ! -d /Users/o2/tmpLocal/man/man1 ) ; then mkdir /Users/o2/tmpLocal/man/man1 ; fi
if ( test ! -d /Users/o2/tmpLocal/include ) ; then mkdir /Users/o2/tmpLocal/include ; fi
cp -f bzip2 /Users/o2/tmpLocal/bin/bzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bunzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bzcat
cp -f bzip2recover /Users/o2/tmpLocal/bin/bzip2recover
chmod a+x /Users/o2/tmpLocal/bin/bzip2
chmod a+x /Users/o2/tmpLocal/bin/bunzip2
chmod a+x /Users/o2/tmpLocal/bin/bzcat
chmod a+x /Users/o2/tmpLocal/bin/bzip2recover
cp -f bzip2.1 /Users/o2/tmpLocal/man/man1
chmod a+r /Users/o2/tmpLocal/man/man1/bzip2.1
cp -f bzlib.h /Users/o2/tmpLocal/include
chmod a+r /Users/o2/tmpLocal/include/bzlib.h
cp -f libbz2.a /Users/o2/tmpLocal/lib
chmod a+r /Users/o2/tmpLocal/lib/libbz2.a

問題がなさそうだったら、次に「-n」オプションを付けずに実行し、実際にインストールを行います。

% make install PREFIX=$HOME/tmpLocal <return>
if ( test ! -d /Users/o2/tmpLocal/bin ) ; then mkdir /Users/o2/tmpLocal/bin ; fi
if ( test ! -d /Users/o2/tmpLocal/lib ) ; then mkdir /Users/o2/tmpLocal/lib ; fi
if ( test ! -d /Users/o2/tmpLocal/man ) ; then mkdir /Users/o2/tmpLocal/man ; fi
if ( test ! -d /Users/o2/tmpLocal/man/man1 ) ; then mkdir /Users/o2/tmpLocal/man/man1 ; fi
if ( test ! -d /Users/o2/tmpLocal/include ) ; then mkdir /Users/o2/tmpLocal/include ; fi
cp -f bzip2 /Users/o2/tmpLocal/bin/bzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bunzip2
cp -f bzip2 /Users/o2/tmpLocal/bin/bzcat
cp -f bzip2recover /Users/o2/tmpLocal/bin/bzip2recover
chmod a+x /Users/o2/tmpLocal/bin/bzip2
chmod a+x /Users/o2/tmpLocal/bin/bunzip2
chmod a+x /Users/o2/tmpLocal/bin/bzcat
chmod a+x /Users/o2/tmpLocal/bin/bzip2recover
cp -f bzip2.1 /Users/o2/tmpLocal/man/man1
chmod a+r /Users/o2/tmpLocal/man/man1/bzip2.1
cp -f bzlib.h /Users/o2/tmpLocal/include
chmod a+r /Users/o2/tmpLocal/include/bzlib.h
cp -f libbz2.a /Users/o2/tmpLocal/lib
chmod a+r /Users/o2/tmpLocal/lib/libbz2.a

以上で「~/tmpLocal」ディレクトリにbin、man、lib、includeといったディレクトリが作成されbzip2がインストールされます。

% ls ~/tmpLocal <return>
bin include lib man

それぞれのディレクトリについて説明しておきましょう。

  • bin:コマンドが置かれる
  • include:ヘッダファイルが置かれる
  • lib:ライブラリが置かれる
  • man:オンラインマニュアルが置かれる

試しにbinディレクトリを覗いてみると4つのコマンドが生成されていることがわかります。

% ls ~/tmpLocal/bin <return>
bunzip2 bzcat bzip2 bzip2recover


(続く)
[大津真]
関連リンクhttp://www.o2-m.com/