ebuildは、
Gentoo Linuxのパッケージ管理システムである
Portageで使用される、パッケージ管理用の
Bashスクリプトです。
Portageには同名のコマンドも存在しますが、ここではebuildスクリプトに焦点を当てて説明します。
概要
ebuildスクリプトは、「(パッケージ名)-(バージョン)-(リビジョン).ebuild」という命名規則に従ったファイル名を持ち、
Portageツリー内の「(カテゴリー名)/(パッケージ名)」
ディレクトリに格納されます。このファイルには、パッケージの依存関係、ライセンスなどのメタデータ、そして実際のソフトウェアを構築するための手順が記述されています。
Portageは、ソフトウェアの構築時に使用されているアーキテクチャや事前に設定されたUSEフラグに基づいて、詳細な構成を選択します。この仕組みによって、バイナリパッケージでは実現できない柔軟な構成が可能となり、また、システムに合わせて最適化されたバイナリの構築も行えます。
Gentoo
Portageリポジトリに存在するほとんどのebuildは、ソースコードからプログラムをコンパイルするために用いられます。しかし、中には`mozilla-firefox-bin`のようにバイナリパッケージをインストールするものや、ドキュメントやフォントといったデータをインストールするものも存在します。
eclass
多くのebuildに共通する処理は、eclassというファイルにまとめられています。ebuildはこのeclassを継承(inherit)することで、記述量を大幅に削減できます。例えば、
Pythonで記述されたソフトウェアのパッケージは、`distutils`という標準モジュールを利用してインストールされることが多いですが、このようなパッケージのために`distutils.eclass`が用意されています。このeclassを利用することで、ebuildスクリプトに具体的なインストール手順をほとんど記述する必要がなくなります。
メタデータ
全てのebuildで必須となるメタデータは以下の通りです。
`DESCRIPTION`: パッケージの概要
`SRC_URI`: ソフトウェアの配布元
`LICENSE`: ソフトウェアライセンス
`DEPEND`: 依存関係
依存関係は直接的なものだけを記述すれば、間接的に依存するパッケージは
Portageが自動的に追跡します。
構築手順
ソースコードから手動でインストールする際の手順とほぼ同様の処理が自動的に実行されます。多くのパッケージでは、ソフトウェアの構築は大きく分けて「展開」「コンパイル」「インストール」の3つの段階で進められます。
1.
展開: ダウンロードしたソースコードのtarballなどを展開します。
2.
コンパイル: `configure`を実行し、その後`make`を実行します。
3.
インストール: `make install`を実行します。
また、
Portageではsandbagと呼ばれる保護機能が標準で動作しており、全ての手順が完了するまで、稼働中のルートファイルシステムには変更が及ばないようになっています。
関連項目
Gentoo Linux
Portage
外部リンク
Ebuild HOWTO
ebuildの登録ガイド
*
Gentoo Development Guide