――――ダミーのディレクトリにインストール 通常のインストール手順ではコンパイル後に「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
(続く) [大津真] |