各ステップは異なることをするので
ビルドのための環境を準備(セットアップ)します
./configure
このスクリプトには、変更する必要がある多くのオプションがあります。同様--prefix
か--with-dir=/foo
。つまり、システムごとに構成が異なります。また./configure
、インストールする必要のあるライブラリがないかどうかを確認します。ここで問題が発生すると、アプリケーションがビルドされません。すべてのディストリビューションが特定のライブラリとファイルを特定のディレクトリにインストールする方が良いと考えているため、ディストリビューションにはさまざまな場所にインストールされるパッケージがあります。実行すると言われています./configure
が、実際には常に変更する必要があります。
たとえば、Arch Linuxパッケージサイトをご覧ください。ここで、すべてのパッケージが異なるconfigureパラメーターを使用していることがわかります(ビルドシステムにautotoolsを使用していると仮定します)。
システムの構築
make
これは実際にmake all
はデフォルトです。そして、すべてのメイクには、実行するさまざまなアクションがあります。ビルドを行うもの、ビルド後にテストを行うもの、外部SCMリポジトリからのチェックアウトを行うものもあります。通常、パラメーターを指定する必要はありませんが、一部のパッケージではパラメーターの実行方法が異なります。
システムにインストールする
make install
これにより、configureで指定された場所にパッケージがインストールされます。必要に応じ./configure
て、ホームディレクトリを指すように指定できます。ただし、多くの設定オプションが/usr
またはを指しています/usr/local
。つまり、sudo make install
rootだけが/ usrおよび/ usr / localにファイルをコピーできるため、実際に使用する必要があります。
これで、各ステップが次のステップの事前要件であることがわかります。各ステップは、問題のないフローで物事を機能させるための準備です。ディストリビューションはこのメタファーを使用してパッケージ(RPM、debなど)をビルドします。
ここでは、各ステップが実際には異なる状態であることがわかります。そのため、パッケージマネージャーには異なるラッパーがあります。以下は、パッケージ全体を1つのステップでビルドできるラッパーの例です。ただし、アプリケーションごとに異なるラッパーがあることに注意してください(実際、これらのラッパーには、spec、PKGBUILDなどの名前が付いています)。
def setup:
... #use ./configure if autotools is used
def build:
... #use make if autotools is used
def install:
... #use make all if autotools is used
ここではautotoolsを使用できます。つまり./configure
、make
とmake install
です。しかし、もう1つはSCons、Python関連のセットアップまたは別のものを使用できます。
ご覧のように、各状態を分割すると、特にパッケージのメンテナやディストリビューションにとって、保守と展開がはるかに簡単になります。