EBUILD(5)

名前
ebuild - ebuild スクリプトの内部フォーマット・変数・関数

説明
ebuild(1) プログラムは ebuild スクリプトを1つ引数に取る。 このスクリプトには変数とコマンドが書かれており、 オリジナルソースから特定のソフトウェアパッケージを ダウンロード、展開、パッチ、コンパイル、インストール そしてマージする手順を指定している。 これらの手順に加え、必要であれば ebuild スクリプトにインストール前後/ アンインストール前後のコマンドを書くこともできる。

サンプル
簡単な ebuild のサンプルを示す:
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header:
inherit some_eclass another_eclass
DESCRIPTION="Super-useful stream editor (sed)"
HOMEPAGE="http://www.gnu.org/software/sed/sed.html"
SRC_URI="ftp://alpha.gnu.org/pub/gnu/sed/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86"
IUSE=""
DEPEND="virtual/libc"
RDEPEND="virtual/libc"
src_compile() {
	econf || die "could not configure"
	emake || die "emake failed"
}
src_install() {
	into /usr
	doinfo doc/sed.info
	doman doc/sed.1
	into /
	dobin sed/sed
	dodir /usr/bin
	dosym /bin/sed /usr/bin/sed
	dodoc NEWS README* THANKS TODO AUTHORS BUGS ANNOUNCE
}

変数

使用方法
    - PORTAGE* と PORTDIR* 変数は make.conf(5) に書かれている。
    - ebuild で変数に値を割り当てるときは、 変数名と等号の間に スペースを含めることはできない。

P   この変数には ebuild のリビジョンを除いたパッケージ名が入っている。 この変数は 絶対に 変更してはいけない。
    xfree-4.2.1-r2.ebuild --> $P=='xfree-4.2.1'

PN  この変数にはバージョン番号を除いた ebuild スクリプト名が入っている。
    xfree-4.2.1-r2.ebuild --> $PN=='xfree'

PV  この変数にはリビジョンを除いたバージョン番号が入っている。
    xfree-4.2.1-r2.ebuild --> $PV=='4.2.1'

PR  この変数にはリビジョン番号、もしくはリビジョン番号が存在しない場合 は「r0」が入っている。
    xfree-4.2.1-r2.ebuild --> $PR=='r2'

PVR この変数にはリビジョン番号つきのバージョン番号が入っている。
    xfree-4.2.1-r2.ebuild --> $PVR=='4.2.1-r2'

PF  この変数には完全なパッケージ名 [PN]-[PVR] が入っている。
    xfree-4.2.1-r2.ebuild --> $PF=='xfree-4.2.1-r2'

A   この変数にはパッケージに必要なソースファイル名全てが入っている。 ebuild 内でこの変数を定義してはいけない。この変数は SRC_URI 変数から自動生成される。

WORKDIR = "${PORTAGE_TMPDIR}/portage/${PF}/work"
    この変数にはパッケージビルドルートのパスが入っている。 この変数を変更しないこと。

FILESDIR = "${PORTDIR}/${CATEGORY}/${PN}/files"
    この変数には Portage ツリーの中のパッケージごとの「files」 サブフォルダへのパスが入っている。 この変数を変更しないこと。

S = "${WORKDIR}/${P}"
    この変数には一時 ビルドディレクトリ のパスが入っている。 この変数は src_compile と src_install 関数で使われる。 いずれの関数も S をカレントディレクトリとして実行される。 この変数はパッケージの tar アーカイブを展開したときにできる ディレクトリ名に合うように変更してもよい。

T = "${PORTAGE_TMPDIR}/portage/${PF}/temp"
    この変数には 一時ディレクトリ のパスが入っている。 この変数は好きなように使ってよい。

D = "${PORTAGE_TMPDIR}/portage/${PF}/image"
    この変数には一時 インストールディレクトリ のパスが入っている。 補助ツールと補助関数(下で述べる)を使わずに書き込む操作は ${D} という接頭辞をつけなければならない。 この変数を変更しないこと。

DESCRIPTION = "A happy little package"
    この変数にはパッケージの簡単な説明が入っていなければならない。

SRC_URI = "http://happy.com/little/${P}.tar.gz"
    この変数には必要なソースファイルへの URI のリストが入っている。 1つのソースファイルへの複数の URI が入っていてもよい。 GENTOO_MIRRORS にファイルが見つからなかった場合、 最も速い場所が選ばれる。

HOMEPAGE = "http://happy.com/"
    この変数にはソースのメインサイトと、パッケージについてのもっと詳しい 情報を得るための URL のリストを入れなければならない。

KEYWORDS = [-~][x86,ppc,sparc,mips,alpha,arm,hppa]
    この変数にはその ebuild が動作する/しないことが分かっている アーキテクチャ(arch)の適切なリストを入れなければならない。 デフォルトでは、特定の arch で ebuild が動作するかどうか 分からない場合、単にその arch を KEYWORD から除く。 特定の arch でその ebuild が動作しない場合、 それをたとえば -ppc のようにして KEYWORD に含める。 Portage ツリーに取り込むための ebuild が提出されたとき、 その ebuild が 動作することが証明されている 場合、 証明された arch に対する ~arch セットが KEYWORD になければならない (このように KEYWORD がついているパッケージは コマンドラインから ACCEPT_KEYWORDS="~arch" と指定したり make.conf(5) の中で設定することによって、 テストのためにマスクを解除することができる)。 指定するべき arch についての信頼できるリストは /usr/portage/profiles/arch.list を見てください。

SLOT
    この変数は、複数パージョンのパッケージが共存するために必要な SLOT を指定する。 なにをしているのか分かっており、SLOT を変更しなければどうにもならない 場合を除き、デフォルトでは、SLOT="0" を指定しなければならない。 この変数は 絶対 未定義のままであってはいけない。

LICENSE
    この変数はパッケージが該当するライセンスのスペースで区切られた リストを入れなければならない。この変数には /usr/portage/licenses/ にあるライセンスと _必ず_ マッチしなければならない。 Portage にマッチするライセンスが存在しないのだとしても、 まずそのライセンスを Portage に追加しなければならない。

IUSE
    この変数にはそのビルドスクリプトの中で使われている全ての USE フラグの リストが入っていなければならない。 ここに列記してはいけない唯一の USE フラグは arch 関連のフラグである (KEYWORDS 参照)。

DEPEND
    この変数にはそのプログラムをコンパイルするために必要な全パッケージ のリストが入っていなければならない。

    DEPEND アトム
        DEPEND に含まれるアトム(それぞれのパッケージ名)は単に Portage がパッケージ同士の関係を計算するときに使う依存性のことである。 DEPEND アトムがまだ emerge されていない場合、 最新のバージョンがマッチすることに留意してください。

        ベースアトム
            ベースアトムとは完全な カテゴリー/パッケージ名 のことである。 したがって、以下に挙げるものはベースアトムである:
            sys-apps/sed
            sys-libs/zlib
            net-misc/dhcp

        アトムバージョン
            より詳細に特定のバージョンのアトムだけが使用可能であると言うのはいいことだ。 バージョンは接頭辞(下を参照)と一緒に使わねばならないことに注意。 よって、バージョン番号は接尾辞としてベースに加えるとよい:
            sys-apps/sed-4.0.5
            sys-libs/zlib-1.1.4-r1
            net-misc/dhcp-3.0_p2
            バージョン番号は 1.2 や 4.5.2 のように、通例ピリオドで区切られた2つか3 つの番号からなっている。この文字列には 1.2a や 4.5.2z のように1文字末 尾につけることもできる。この文字は alpha や beta などなどのリリース状態を 示すために使っては ならない ことに注意。リリース状態を示すためには、 補助的な接頭辞 _alpha, _beta, _pre (プリリリース、pre-release), _rc (リリース候補の状態、release candidate) もしくは _p (パッチ patch) を使うこと。つまり、あるパッケージの3度目もプリリリースには、1.2_pre3 のようなバージョンを使う、ということである。

        アトム接頭演算子 [> >= = <= <]
            いつも正確なバージョンを特定するのではなく、 広く使われているバージョンに依存させることができたらと 思うこともある。 そのため、普通のブール演算子を用意している:
            >media-libs/libgd-1.6
            >=media-libs/libgd-1.6
            =media-libs/libgd-1.6
            <=media-libs/libgd-1.6
            <media-libs/libgd-1.6

        拡張アトム接頭辞 [!~] と接尾辞 [*]
            もっとすごいこともできる。「!」と「*」を使えばパッケージのブロックや、 ある範囲のバージョンにマッチするパッケージを定義したりすることができる のだ。また、これらの拡張された接頭辞/接尾辞は上で定義されているアトム クラスとどのようにも組み合わせることができる。 Portage ツリーにあるありふれた例をいくつか挙げると:
            !app-text/dos2unix
            =dev-libs/glib-2*
            !net-fs/samba-2*
            ~net-libs/libnet-1.0.2a
            ! は同時にインストールされるパッケージのブロックを意味する。
            * は指定されたベースがマッチするのであれば、 パッケージのバージョンは問わないことを意味する。 したがって、バージョン「2*」と書けば、 「2.1」「2.2」「2.2.1」などにマッチし、 「1.0」「3.0」「4.1」などにはマッチしないようにすることができる。
            ~ は指定されたベースとなるバージョンのどのリビジョンにもマッチ することを意味する。よって、上の例では、「1.0.2a」「1.0.2a-r1」 「1.0.2a-r2」などにマッチする。

    動的な DEPEND
        プログラムは USE 変数に従って違うものに依存することがあるかもしれない。 Portage はこの依存関係を扱うために選択肢をいくつか用意している。 後述する構文を使う場合、ここの事例はそれが現れたスコープで1アトムとして 扱われることに注意。つまり、個々のアトムは条件節を使うことによって複数の アトムを含むこともできるし、無限の深さまで入れ子にすることもできる。

        usevar? ( DEPEND アトム )
            ユーザが USE に jpeg を指定しているときに jpeg のライブラリを 含めるには、単に下記の構文を使えばよい:
            jpeg? ( media-libs/jpeg )

        !usevar? ( アトム )
            ユーザが USE 変数にあるオプションを設定していないときにかぎり あるパッケージを含めるには、次の構文を使う:
            !nophysfs? ( dev-games/physfs )
            この構文はある機能の選択をサポートし、さらにデフォルトではその機能を 有効にしておきたいときに便利である。

        usevar? ( USE が真の場合のアトム ) : ( USE が偽の場合のアトム )
            これは C 言語での三項演算子と同じように働く。あるパッケージが GTK2 か GTK1 を使うが、両方同時には使えない場合、このように書けばそれを 扱うことができる:
            gtk2? ( =x11-libs/gtk+-2* ) : ( =x11-libs/gtk+-1* )
            こうすることでデフォルトは優れた GTK2 ライブラリになる。

        || ( アトム アトム ... )
            あるパッケージを複数の異なるパッケージと動かすことができるが、 バーチャルパッケージは適当でないとき、この構文を手軽に使うことができる。
            || (
            app-games/unreal-tournament
            app-games/unreal-tournament-goty
            )
            この例では unreal-tournament には通常版と goty 版があることが分かる。 これらは同じベースファイルを提供するため、これらに依存するパッケージは 通常版と goty 版のいずれに依存することもできる。バーチャルを追加するのは はこの例だと適用範囲が狭いので不適切である。
            別の好例は、パッケージが複数のビデオインタフェース向けにビルドできるが、 同時にはそのうちの1つにだけ対応し、それ以外には対応できない場合がある。
            || (
            sdl? ( media-libs/libsdl )
            svga? ( media-libs/svgalib )
            opengl? ( virtual/opengl )
            ggi? ( media-libs/libggi )
            virtual/x11
            )
            この例では列挙されたパッケージのうち1つだけが選択され、順番づけは現れる 順番によって決定される。したがって、sdl が選ばれる機会が最も高く、次に svga、その次に opengl、さらに ggi、そしてユーザがこれらの選択肢のいずれ も指定しなかった場合には X がデフォルトで使われる。

RDEPEND
    この変数にはこのプログラムを実行するために必要な全パッケージのリストが 入っていなければならない (つまり実行時の依存パッケージのリスト)。 この変数が設定されていなければ、DEPEND の値がデフォルトで設定 される。
    依存関係を変えるには上の DEPEND で示したのと同じ構文が使える。

PDEPEND
    この変数にはそのプログラムがマージされたあとにインストールされなければ ならない全パッケージのリストが入っていなければならない。
    依存性を変えるには上の DEPEND で示したのと同じ構文が使える。

RESTRICT = [nostrip,nomirror,fetch]
    この変数には Portage FEATURE 機能のうち、制限するものをスペースで 区切って列挙する。
    nostrip
        最終的なバイナリ/ライブラリからデバッグシンボルを取り除かない。
    nomirror
        SRC_URI に書かれているファイルを GENTOO_MIRRORS からはダウンロードしない。
    fetch
        nomirror と同様だが、ファイルは SRC_URI 経由でも取得されない。

PROVIDE = "virtual/TARGET"
    この変数にはパッケージがバーチャルターゲットを提供するときのみ使う。 例えば、blackdown-jdk と sun-jdk は virtual/jdk を提供する。 この機能によってパッケージが blackdown や sun に特化して依存するのでは なく、virtual/jdk に依存することができる。

Portage DECLARATIONS

inherit
    inheritはPortageがebuildの外部の追加関数を定義するための特別なクラス (eclass)を保守するためのものであり、 機能やデータを継承することができるようになっている。 eclassでは、ビルドプロセスの効率を上げるために、 非常にありふれた作業のために、代替ルーチン、拡張ルーチン、 そして簡略化ルーチンとして関数が定義され、データの型が設定される。 inheritはebuildの中で1回だけ呼ぶことができ、いかなる 条件文の中に入れてもいけない。 eclassを指定するときは名前だけを指定し、拡張子.eclass を含めてはいけない。

関数

pkg_nofetch
    RESTRICT 変数に fetch を書いたにもかかわらず、 SRC_URI にあるファイルを見つけることができなかった場合、 この関数が実行される。 ユーザに *どうしたら* 言われたファイルを入手することができるのか の情報を表示するのに有用である。

pkg_setup
    この関数はなによりも先にパッケージ固有のセットアップアクションや チェックが必要な場合に使うことができる。
    初期作業ディレクトリは ${PORTAGE_TMPDIR}。

src_unpack
    この関数は A にある全ソースを WORKDIR に展開するために使う。 この関数が ebuild スクリプト で定義されていなかった場合、 unpack ${A} が実行される。 パッチ当てやその他ビルド設定やコンパイルの前に行なっておくべき 変更はこの関数で行なわなければならない。
    初期作業ディレクトリは $WORKDIR。

src_compile
    ビルド設定とコンパイルのために必要なステップ全ては この関数で行なわれなければならない。
    初期作業ディレクトリは $S。

src_test
    パッケージ固有のテストケースを全て実行する。 デフォルトは 'make test' のあとに 'make check' を実行する。
    初期作業ディレクトリは $S。

src_install
    一時 インストールディレクトリ にあるパッケージを インストールするために必要なこと全てが含まれていなければならない。
    初期作業ディレクトリは $S。

pkg_preinst pkg_postinst
    パッケージがインストールされる前と後で稼働中のファイルシステムに必要な 全ての変更はこの関数に置かなければならない。ユーザへのコメントも、 最後に表示されるようにここに列挙すること。
    初期作業ディレクトリは $PWD。

pkg_prerm pkg_postrm
    pkg_*inst 関数と同様だが、アンインストール用である。
    初期作業ディレクトリは $PWD。

pkg_config
    この関数には、必須ではないがパッケージを使うためには欠かせない 設定ステップを入れる。
    初期作業ディレクトリは $PWD。

補助関数: 汎用

die [reason]
    現在の emerge プロセスを中止させる。 最後の画面には reason が表示される。

use <USE item>
    もし USE item が USE 変数にあれば、USE item がエコーされて関数は 0 を返す。 もし USE item が USE 変数になければ、関数は 1 を返す。 useq はエコーを返さない use である。

    例:
        if useq gnome ; then
        	guiconf="--enable-gui=gnome --with-x"
        elif useq gtk ; then
        	guiconf="--enable-gui=gtk --with-x"
        elif useq X ; then
        	guiconf="--enable-gui=athena --with-x"
        else
        	# No gui version will be built
        	guiconf=""
        fi

use_with <USE item> [configure option]
    カスタムオプションを作成し、configure スクリプトに渡すのに便利である。 USE item が USE 変数にある場合、 --with-[configure option] という文字列がエコーされる。 USE item が USE 変数にない場合、 --without-[configure option] という文字列がエコーされる。 configure option が指定されていなければ、 USE item がその場所で使われる。

    例:
        USE="jpeg"
        myconf="$(use_with jpeg libjpeg)"
        (myconf は "--with-libjpeg" という値になる)
        USE=""
        myconf="$(use_with jpeg libjpeg)"
        (myconf は "--without-libjpeg" という値になる)
        USE="opengl"
        myconf="$(use_with opengl)`"
        (myconf は "--with-opengl" という値になる)

use_enable <USE item> [configure option]
    カスタムオプションを作成し、configure スクリプトに渡すのに便利である。 USE item が USE 変数にある場合、 --enable-[configure option] という文字列がエコーされる。 USE item が USE 変数にない場合、 --disable-[configure option] という文字列がエコーされる。 configure option が指定されていなければ、 USE item がその場所で使われる。
    使用例は use_with を参照。

has <item> <item list>
    item が item list にあった場合、 item がエコーされて has が 0 を返す。 なかった場合、なにもエコーされず 1 を返す。 use の項で示されているように、エコーを返さない hasq がある。 出力を無視してよいところ全てで hasq を使ってほしい。 出力を計算に使ってはならない。
    item list は IFS 変数によって区切られている。 この変数はデフォルトで「 」つまりスペースという値をもっている。 これは bash(1) の設定である。

has_version <category/package-version>
    category/package-version がシステムにインストール されているかどうか調べる。 このパラメータは DEPEND 変数で使用可能な全ての値を使うことができる。 この関数は category/package-version がインストール されていたら 0 を返し、インストールされていないなら 1 を返す。

best_version <package name>
    この関数は現在インストールされているプログラムのデータベースの中から package name を探し、現在インストールされているパッケージの 「いちばんいいバージョン」を返す。 もし package name にマッチするパッケージがなければこの関数は 0 を返す。マッチすれば 1 を返す。

    例:  VERINS="$(best_version net-ftp/glftpd)"
        (もし glftpd-1.27 がインストールされていれば、 VERINS は "net-ftp/glftpd-1.27" という値になる)

補助関数: 出力

einfo "informative message"
    もしメッセージを出力してユーザに読んでもらって注意を喚起したい場合は、 einfo を使う。こrは echo(1) と全く同じに働くが、出力にもう 少し手を加えてユーザの目を引くようにする。

ewarn "warning message"
    einfo と同様だが、ユーザに警告を示したいときに使う。

einfo と同様だが、ユーザにエラーを示したいときに使う。

補助関数: 展開

unpack <source> [list of more sources]
    この関数は列挙されたソースをカレントディレクトリに解凍/展開する。 この関数は ソース を DISTDIR 変数に追加する。

補助関数: コンパイル

econf [configure option]
    この関数は configure の代わりに使われる。以下のオプションが実行される:
    configure \
    	--prefix=/usr \
    	--host=${CHOST} \
    	--mandir=/usr/share/man \
    	--infodir=/usr/share/info \
    	--datadir=/usr/share \
    	--sysconfdir=/etc \
    	--localstatedir=/var/lib \
    	${EXTRA_ECONF} \
    	configure optioins
    EXTRA_ECONFはユーザのためだけにあり、ebuild 書きのためにあるわけではないことに注意せよ。 configureにもっとオプションを渡したければ、 econfに追加の引数を渡すだけでよい。 emake [make options] この関数は make の代わりに使われる。 (${MAKEOPTS} は /etc/make.globals で設定される) を実行する。デフォルトは MAKEOPTS="-j2"。 ***警告***
    emake を使おうとするのであれば、ビルド時に 並列 make (make -j2) を使って問題ないことを確認すること。 並列 make は _ときどき_ 失敗するが毎回失敗しないことで悪名高いので、 徹底的にテストしなければならない。

補助関数: インストール

einstall [make options]
    この関数は make install の代わりとして使われる。実行されるオプションは:
    make \
           prefix=${D}/usr \
           datadir=${D}/usr/share \
           infodir=${D}/usr/share/info \
           localstatedir=${D}/var/lib \
           mandir=${D}/usr/share/man \
           sysconfdir=${D}/etc \
           ${EXTRA_EINSTALL} \
           make options install
     'make install DESTDIR=${D}' が使える場所で einstall を使わないでほしい。 make ベースのパッケージをインストールするときは 'make install DESTDIR=${D}' とするほうが好まれる。また、EXTRA_EINSTALL変数を使わないこと。 この変数はユーザのためのものである。
prepall
prepalldocs
prepallinfo
prepallman
prepallstrip
    これらの関数はスクリプト(つまり Makefile など)経由で ${D} にパッケージをインストールするとき有用である。 もし確実にライブラリが実行可能、aclocal ファイルが適切な場所に インストールされていて、ドキュメント/info/man ファイルが 全部圧縮されており、実行バイナリからデバッグシンボルが全て strip されているようにしたければ、これらの関数一式を使う。
    prepall:
        この関数は prepallman、prepallinfo、prepallstrip を実行し、ライブラリを実行可能に設定し、aclocal ディレクトリをチェック する。この関数は prepalldocs を実行 *しない* ことに 注意すること。
    prepalldocs:
        ${D}/usr/share/doc にある全てのドキュメントファイルを圧縮する。
    prepallinfo:
        ${D}/usr/share/info にある全ての info ファイルを圧縮する。
    prepallman:
        ${D}/usr/share/man にある全ての man ファイルを圧縮する。
    prepallstrip:
        全実行バイナリからデバッグシンボルを strip する。 ライブラリも対象に含まれる。
prepinfo [dir]
preplib [dir]
preplib.so [dir]
prepman [dir]
prepstrip [dir]
    これらの関数も prepall 関数と似ており、違いも微妙である。
    prepinfo:
        dir が指定されなかった場合、prepinfo は dir を usr とみなす。そして prepinfo は ${D}/dir/info にある全てのファイルを圧縮する。
    preplib:
        dir が指定されなかった場合、preplib は dir を usr とみなす。そして preplib は ${D}/dir/lib で「ldconfig -n -N」を実行する。
    preplib.so:
        ${D}/dir にあり、ファイル名に「.so」を含むファイル全ての デバッグシンボルを strip する。複数のディレクトリを指定する こともできる。
    prepman:
        dir が指定されなかった場合、prepman は dir を usr とみなす。そして prepman は ${D}/dir/man/*/ にある全てのファイルを圧縮する。
    prepstrip:
        ${D}/dir にあるファイル全てを strip する。 複数のディレクトリを指定することもできる。

dopython <commands>
    python で commands を実行し、結果を返す。

dosed "s:orig:change:g" <filename>
    filename名 に対し (filename名 の cp/mv を含め) sed を実行する。
    'dosed "s:/usr/local:/usr:g" /usr/bin/some-script' ${D}/usr/bin/some-script に対し sed を実行

dodir <path>
    ${D} の中にディレクトリを作成する。
    'dodir /usr/lib/apache' ${D}/usr/lib/apache を作成。 他のdo*関数は、明示的に指定しなくてもdodirを実行してくれることに注意。

diropts [options for install(1)]
    dodir で使われる install 関数のオプションを定義するために使われる。 デフォルトは -m0755。

into <path>
    dobin、dosbin、doman、doinfo、dolib のような他の関数のためにルート (DESTTREE) を設定する。
    デフォルトルートは /usr。

keepdir <path>
    もし仮に空であってもディレクトリをそのままにしておくよう Portage に伝える。dodir と同じように機能する。

dobin <binary> [list of more binaries]
    binary や列挙されたバイナリを DESTTREE/bin にインストールする。必要なディレクトリは全て作成する。

dosbin <binary> [list of more binaries]
    binary や列挙されたバイナリを DESTTREE/sbin にインストールする。必要なディレクトリは全て作成する。

doinitd <init.d > [list of more init.d scripts]
    Gentoo init.d スクリプト をインストールする。 Gentoo init.d スクリプト用の正しい場所にインストールされなければならない(/etc/init.d/)。 必要なディレクトリは全て作成する。

doconfd <conf.d file> [list of more conf.d file]
    Gentoo conf.d ファイル をインストールする。 Gentoo conf.d ファイル用の正しい場所にインストールされなければならない(/etc/conf.d/)。 必要なディレクトリは全て作成する。

doenvd <env.d entry> [list of more env.d entries]
    Gentoo env.d エントリー をインストールする。 Gentoo env.d エントリー用の正しい場所にインストールされなければならない(/etc/env.d/)。 必要なディレクトリは全て作成する。
dolib <library> [list of more libraries]
dolib.a <library> [list of more libraries]
dolib.so <library> [list of more libraries]
    ライブラリや列挙されたライブラリを DESTTREE/lib にインストールする。必要なディレクトリは全て作成する。

libopts [options for install(1)]
    dolib で使われる install 関数のオプションを定義するために使われる。 デフォルトは -m0644。

doman <man-page> [list of more man-pages]
    man ファイルの拡張子に従って man ページを /usr/share/man/man[1-8n] にインストールする。ファイルが gzip されていなければ gzip する。 必要なディレクトリは全て作成する。

dohard <filename> <linkname>

dosym <filename> <linkname>
    ln コマンドをハードリンクもしくはシンボリックリンクとして実行する。

dohtml  [-a filetypes] [-r] [-x list-of-dirs-to-ignore] [list-of-files-and-dirs]
    ファイルの拡張子が .html、.png、.js、.jpg か .css であった場合、 ファイルリスト(スペースで区切られたリスト)に挙げられたファイルを /usr/share/doc/${PF}/html にインストールする。 -a を設定すればでどのタイプのファイルを含めるか制限することができる。 -A を設定すればデフォルトのタイプリストに新たなタイプを追加することができる。 -x で除外するディレクトリを設定できる(CVS はデフォルトで除外される)。 -r を設定すれば再帰的に dohtml を実行できる。

doinfo <info-file> [list of more info-files]
    info ページを DESTDIR/info にインストールする。 ファイルは自動的に gzip される。必要なディレクトリは全て作成する。

dojar <jar file> [list of more jar files]
    jar ファイルを /usr/share/${PN}/lib にインストールし、 /usr/share/${PN}/classpath.env に追加する。

domo <locale file> [list of more locale-files]
    locale ファイルを locale ファイルの拡張子に従って DESTDIR/usr/share/locale/[言語] に追加する。 必要なディレクトリは全て作成する。
fowners <permissions> <file> [files]
fperms <permissions> <file> [files]
    chown (fowners) か chmod (fperms) を実行し、 file に permissions を適用する。

insinto [path]
    doins 関数のルート (INSDESTTREE) を設定する。
    デフォルトルートは /。

insopts [options for install(1)]
    doins で使われる install に対するオプションを定義するために 使うことができる。デフォルトは -m0644。

doins <file> [list of more files]
    ファイルを INSDESTTREE にインストールする。 この関数は install(1) を使う。 必要なディレクトリは全て作成する。

exeinto [path]
    doexe 関数のルート (EXEDESTTREE) を設定する。
    デフォルトルートは /。

exeopts [options for install(1)]
    doexe で使われる install に対するオプションを定義するために 使うことができる。デフォルトは -m0755。

doexe <executable> [list of more executables]
    実行バイナリや列挙された実行バイナリを EXEDESTTREE にインストールする。この関数は install(1) を使う。 必要なディレクトリは全て作成する。

docinto [path]
    dodoc が使う相対サブディレクトリ (DOCDESTTREE) を設定する。

dodoc <document> [list of more documents]
    ドキュメントや列挙されたドキュメントを /usr/share/doc/${PV}/DOCDESTTREE にインストールする。ファイルは自動的に gzip される。 必要なディレクトリは全て作成する。
newbin <old file> <new filename>
newsbin <old file> <new filename>
newinitd <old file> <new filename>
newconfd <old file> <new filename>
newenvd <old file> <new filename>
newlib <old file> <new filename>
newlib.so <old file> <new filename>
newlib.a <old file> <new filename>
newman <old file> <new filename>
newinfo <old file> <new filename>
newins <old file> <new filename>
newexe <old file> <new filename>
newdoc <old file> <new filename>
    これらの関数は全て do* 関数と同じように使えるが、 これらの関数は1つのファイルだけに使うことができ、 そのファイルは [new filename] としてインストールされる。

バグ報告
バグ報告は http://bugs.gentoo.org/ 経由で行なってください。

関連項目
ebuild(1), make.conf(5)

/usr/sbin/ebuild.sh スクリプト。

/usr/lib/portage/bin にある補助アプリケーション。

ファイル

/etc/make.conf
    ビルドプロセスで使う変数が書かれており、make.defaults で設定されている 変数を上書きする。

/etc/make.globals
    ビルドプロセスで使うデフォルトの変数が書かれているが、 変数を変更したい場合はこのファイルではなく /etc/make.conf を編集すること。

著者
Achim Gottinger <achim@gentoo.org>
Mark Guertin <gerk@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>

CVS ヘッダ
原文: ebuild.5,v 1.73