ebuild
1. ebuild.1.man
Manpage of EBUILD
EBUILD
Section: Portage (1)Updated: Nov 2002
Index Return to Main Contents
名前
ebuild - Portage システムへの低レベルインタフェース、ebuild プログラム書式
ebuild file command [command]...説明
ebuild プログラムは Portage システムへの直接のインタフェースである。 このプログラムによって、ebuild を特定のサブコマンドやグループコマンド で直接操作し、特定の環境や機能で実行することができる。ebuild プログラム は ebuild スクリプトと1つ以上のコマンドを引数として取り、ebuild スクリプトを解析して指定されたコマンドを実行する。ソースを取得する、 ソースを展開する、ソースをコンパイルする、「image」という一時ディレクトリ にオブジェクトファイルをインストールする、一時ディレクトリにインストール されたイメージを実際にローカルファイルシステムにインストールする、その イメージから bzip 圧縮された tar アーカイブパッケージを作成する、 などのコマンドがある。ファイル
正しい ebuild スクリプトでなければならない。詳しい情報は ebuild(5) を参照。コマンド
- help
- パッケージ固有の情報とともにこのマニュアルページの簡略版を表示する。
- setup
- パッケージ固有のセットアップとさまざまなシステムチェックを行なう。
- clean
-
その特定の ebuild ファイルのために作られた Portage の一時ビルド
ディレクトリを消去する。通常一時ビルドディレクトリは展開された
ソースコードと "インストールイメージ" (ローカルファイルシステムに
インストールされるファイル、もしくはバイナリパッケージに保存される
ファイル全て)を含む。ビルドディレクトリは BUILD_PREFIX 変数によって
設定される。この変数がなにか知りたい場合は emerge [-v] info
を実行する。この変数を上書きしたい場合は make.conf(5) を参照。
註: FEATURES 変数に「noclean」が含まれていないかぎり、パッケージが 問題なくインストールされると Portage は一時ビルドディレクトリにある ものほとんど全てを消去する。FEATURES に noclean を追加するとたくさん のファイルが残りすぐに膨大な容量を消費してしまう結果になる。 インストール後にソースを使う必要がないのであれば、noclean を指定する ことはお奨めしない。一方、手動で rm -rf /var/tmp/portage として 一時ビルドディレクトリにあるファイル全てを消すという方法もある。
- fetch
- SRC_URI で指定されているソースが全て DISTDIR (詳細は make.conf(5) 参照)にあって使える状態になっているか、正しい md5 チェックサムであるか どうかを調べる。ソースが使えない状態なら SRC_URI で指定された場所から ダウンロードしようとする。1つのファイルに対し複数のダウンロード場所が 挙げられていた場合、Portage は各々の場所のうちどこがより近いか ping を 打って調べる(現在は間違っているかもしれないが)。Gentoo Linux のミラー サイトは GENTOO_MIRRORS で定義されており、常にこの場所が最初に調べられる。 もしなんらかの理由で現在のソースやダウンロードしたばかりのソースの md5 ダイジェストが files/digest-[パッケージ名]-[バージョン-リビジョン] に 記録されている値と一致しなかった場合、警告が出力され、ebuild はエラー コード 1 で終了する。
- digest
- /usr/portage/[カテゴリー]/[パッケージ名]/files/ にパッケージのダイジェスト ファイルを作成する。このダイジェストファイルには SRC_URI に書いてあるファイル 全ての md5sum が列挙されている。取得したパッケージのソースファイルが 壊れている、もしくは変な場合には、md5sum がそれを検出する。
- unpack
-
ebuild ファイルの src_unpack() 関数を実行し、
ビルドディレクトリ (BUILD_PREFIX) のサブディレクトリへと
ソースを展開する。 src_unpack() 関数が指定されていない場合、
デフォルトの src_unpack() 関数が使用され、SRC_URI で指定されている
全ファイルを展開する。ソースは普通
${BUILD_PREFIX}/[パッケージ名]-[バージョン-リビジョン]/work
に展開される。このディレクトリは ${WORKDIR} 変数で参照することが
できる。
ebuild を作成しているなら、ebuild スクリプトの先頭で定義されている ${S} 変数(ソースディレクトリ) が展開されたソースのあるディレクトリを 指していることを確認しよう。${S} はデフォルトでは ${WORKDIR}/${P} と定義されているので、あまり変更する必要はない。 src_unpack() 関数は そのままコンパイルに取りかかれるようソースに適切なパッチを当てる 関数でもある。
- compile
- ebuild ファイルの中で指定された src_compile() 関数を実行し、 展開したソースをコンパイルする。src_compile() の開始時には カレントディレクトリが ${S} に設定される。 src_compile() の 終了時にはソースは完全にコンパイルされていなければならない。
- test
- 全て正しくビルドされたかどうか検証するため、 パッケージ固有のテストケースを実行する。
- preinst
- 稼働中のファイルシステムにパッケージをインストールする前に実行 する必要があるパッケージ固有のアクションを実行する。
- install
- src_install() 関数を実行し、パッケージを一時 インストール ディレクトリ にインストールする。完了すると、 インストールディレクトリ (${BUILD_PREFIX}/[パッケージ名]-[バージョン-リビジョン]/image) にはローカルファイルシステムにインストールされるべきファイルか バイナリパッケージに含まれるべきファイル全てがインストールされる。
- postinst
- 稼働中のファイルシステムにパッケージをインストールしたあと実行 する必要があるパッケージ固有のアクションを実行する。有益なメッセージが 表示されることが多い。
- qmerge
- この関数は インストールディレクトリ の全てのファイルを稼働中の ファイルシステムにインストールする。そのプロセスは、まず(指定されて いれば) pkg_preinst() 関数が実行され、そしてファイルが稼働中の ファイルシステムにインストールされ、インストールされたファイルの md5 ダイジェストが /var/db/pkg/${CATEOGRY}/${PN}-[バージョン-リビジョン]/CONTENTS に記録される。全ファイルがインストールされると、pkg_postinst() 関数が(指定されていれば)実行される。
- merge
- 通常、ebuild をインストールするには、fetch、unpack、 compile、install そして qmerge する必要がある。 単に ebuild をインストールしたいだけならこのコマンドを使ってもよい。 このコマンドはこれら5つのステップ全てを実行し、ある特定のステップが 失敗したらそこで止まってくれる。
- unmerge
- この関数は(指定されていれば)まず pkg_prerm 関数を実行する。 次に現在のファイルシステムから、パッケージの内容が書かれているファイル に挙げられているもののうち、md5 チェックサムと更新時刻が記録と一致する ファイル全てを削除する。空のディレクトリは全て再帰的に削除される。 最後に(指定されていれば) pkg_postrm 関数が実行される。 パッケージの新しいバージョンを先にインストールし、それから古い バージョンを unmerge するのは安全である。実のところ、そうするのが 推奨パッケージアップグレード方法である。
- prerm
- ファイルシステムからパッケージが削除される前に実行されなければならない パッケージ固有のアクションを実行する。unmerge も参照。
- postrm
- ファイルシステムからパッケージが削除されたあとに実行されなければならない パッケージ固有のアクションを実行する。unmerge も参照。
- config
- emerge プロセスが完了したあとに実行が必要なパッケージ固有の設定を実行する。 設定ファイルのセットアップや、それと同じようにユーザが実行しておきたい セットアップなどが多い。
- package
- merge コマンドとよく似ているが、ソースを取得、展開、コンパイル、 そしてインストールしたあと、${PKGDIR}/All (${PKGDIR} はデフォルトでは /usr/portage/packages) に .tbz2 バイナリパッケージが作成される。 ${PKGDIR}/${CATEGORY} には ${PKGDIR}/All にあるパッケージ本体への シンボリックリンクが作成される。
- rpm
- 一時 インストールディレクトリ にあるファイルから RedHat RPM パッケージをビルドする。現時点では ebuild の依存情報は RPM には 反映されない。
バグ報告
バグ報告は http://bugs.gentoo.org/ 経由で行なってください。関連項目
emerge(1), ebuild(5), make.conf(5)- /usr/sbin/ebuild.sh スクリプト
- /usr/lib/portage/bin にある補助アプリケーション
ファイル
- /etc/make.conf
- ビルドプロセスのための変数が書かれており、make.globals で設定された 変数を上書きする。
著者
Achim Gottinger <achim@gentoo.org>Daniel Robbins <drobbins@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>
CVS ヘッダ
原文: ebuild.1,v 1.16
Index
This document was created by man2html using the manual pages.
Time: 17:38:33 GMT, May 11, 2012
2. ebuild.5.man
Manpage of EBUILD
EBUILD
Section: Portage (5)Updated: Feb 2003
Index Return to Main Contents
名前
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" 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_URIF
変数から自動生成される。
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 optioinsEXTRA_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 コマンドをハードリンクもしくはシンボリックリンクとして実行する。
- d [-a filetypes] [-r] [-x list-of-dirs-to-ignore] [list-of-files-and-dirs]
- ファイルの拡張子が 、.png、.js、.jpg か .css であった場合、 ファイルリスト(スペースで区切られたリスト)に挙げられたファイルを /usr/share/doc/${PF} にインストールする。 -a を設定すればでどのタイプのファイルを含めるか制限することができる。 -A を設定すればデフォルトのタイプリストに新たなタイプを追加することができる。 -x で除外するディレクトリを設定できる(CVS はデフォルトで除外される)。 -r を設定すれば再帰的に d を実行できる。
- 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
Index
- 名前
- 説明
- サンプル
- 変数
- Portage DECLARATIONS
- 関数
- 補助関数: 汎用
- 補助関数: 出力
- 補助関数: 展開
- 補助関数: コンパイル
- 補助関数: インストール
- バグ報告
- 関連項目
- ファイル
- 著者
- CVS ヘッダ
This document was created by man2html using the manual pages.
Time: 17:38:33 GMT, May 11, 2012
