This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
ebuild リポジトリ
ebuild リポジトリ(いわゆるオーバーレイとしても知られています)は Gentoo ベースのシステムのパッケージマネージャーにパッケージを追加・拡張するために使われるディレクトリー構造およびファイルです。ebuild リポジトリは1つ、あるいは複数の ebuild API に合致する ebuild を含むことができます。
Gentoo システムのメインリポジトリは Gentoo ebuild リポジトリとして知られています。これは Gentoo の公式開発者たちおよび(Proxy Maintainers プロジェクトを通じて)コミュニティーメンバーによって維持管理されている ebuild で構成されています。システム管理者は以下で説明するさまざまなユーティリティーや方法を使用して追加のリポジトリをシステムに追加することができます。
リポジトリ
ebuild リポジトリは単なるファイルの集合(ebuild、メタデータファイル ...)です。これらは公開リポジトリ(git, CVS, SVN ...)から取り寄せたり、tarballとしてダウンロードして手動でシステム上に展開したりすることで利用できます。信用できる第三者よって管理されているリポジトリを利用することをおすすめします。すべてのebuildリポジトリはインストールされると、Portageがどのソフトウェアをインストールするか決定するときに、ebuildリポジトリ内のファイルに目を通すようになります。もしもセキュリティ上の危険があるコードがオーバーレイに存在すれば、セキュリティ上の危険があるパッケージがシステムにインストールされるかもしれないからです。
リポジトリを扱うための現時点におけるデフォルトのアプローチは /etc/portage/repos.conf を使うものです。この場所は、他の多くの Portage 関連の場所と同様にディレクトリーでも構いません。
/etc/portage/repos.conf/ 内のリポジトリ定義は、Portage に対してリポジトリが更新可能かどうか、またどのように更新するかという情報も提供します。これにより emerge --sync を実行することでリポジトリを同様に更新することができます。
非推奨ではあるものの、/etc/portage/make.conf 内の PORTDIR_OVERLAY 変数を使う方法もまだサポートされています。この変数にはリポジトリがある1つまたはそれ以上のファイルシステム上の場所を追加指定できます。/etc/portage/repos.conf/ ディレクトリーを使うことを強くお勧めします。
より詳しくは、 /etc/portage/repos.conf 及び Portage/Sync の記事を参照してください
優先順位について
それぞれの ebuild リポジトリは、パッケージマネージャーに対する固有の優先度を保持します。特定のバージョンが複数の ebuild リポジトリ内に見つかって処理方法が不明確になった場合に備えるための仕様です。優先度値のより高い(たとえば60)リポジトリ内の ebuild が、優先度の低い(たとえば50)リポジトリ内の ebuild に先んじて処理されます。
優先度を含んだebuildリポジトリのリストは、以下のコマンドの出力で得られます("Repositories"の欄を探してください):
user $
emerge --info --verbose
user $
portageq repos_config /
Gentoo ebuild リポジトリには -1000 という優先度が設定されます。すなわち、より高い優先度が割り当てられていれば、他のすべてのリポジトリが先んじて処理されます。この挙動は既定の仕様です。なぜなら、ebuild リポジトリとは、Gentooリポジトリの上に覆い被せる (lay over/on top) ように設計されたものなのですから。
各種ソフトウェア
多くのツールがebuildリポジトリをサポート、または統合的に扱っています。
Layman
laymanアプリケーションは、複数の追加ebuildリポジトリを更新・管理することを容易にします。laymanはコマンドラインアプリケーションで、laymanを通じて公に利用可能なebuildリポジトリを一覧表示、購読、購読解除、更新することができます。
repos.conf と make.conf の両方がサポートされています。
- make.conf を使う方法では、layman は make.conf によって読み込まれる専用の設定ファイルを管理します。
- repos.conf を使用する場合、layman は /etc/portage/repos.conf/layman.conf ファイルを直接管理します。
より詳しくは Layman の記事及びProject:Portage/Sync#Layman_configuration を参照してください。
emaint
Sync (Portage project) 記事および man 1 emaint を参照してください。
eix
eix-sync は emerge --sync(これは続いて emaint sync --auto を実行します) を起動し、それから eix-update を行うラッパーです。詳細については Eix の記事や man 1 eix を参照してください。
eselect-repository
eselect repository は Portage がアクセスし同期する /etc/portage/repos.conf の項目を管理します。詳細については Eselect/Repository の記事を参照してください。
使い方
重複しているパッケージを emerge する
ebuild リポジトリを使用していると、同じパッケージの複数のバージョンが異なる ebuild リポジトリから提供される状況に出くわすことがあります。::
の記法を使って特定の ebuild リポジトリからの特定のパッケージをインストールするよう Portage に指示しましょう:
root #
emerge --ask category/atom::repository-name
同様の記法は、--depclean
を通じたパッケージのアンインストールなど、上記とは異なる emerge への指示でも使用できます。
ベストプラクティス
キャッシュの生成について
portage は、ebuildリポジトリが多量にインストールされている場合には、パッケージの前提関係を解決するような処理に長い時間を要するかもしれません。これは、ebuildリポジトリには一般的に、メタデータキャッシュが含まれていないためです。
ローカルのメタデータキャッシュを生成するには、ebuildリポジトリとの同期後に emerge --regen を実行してください:
root #
layman -S
root #
( ulimit -n 4096 && emerge --regen )
注意が必要なことがあります。emerge --regen には多くの時間がかかります。また、rsync はサーバー側のキャッシュを使ってキャッシュを更新するため、rsync を使っている場合にはこれは推奨されません(portage ユーザーのほとんどは rsync を使用しています)。rsync のユーザーは、キャッシュを再生成したい場合は単に emerge --sync (または eix-sync) を実行してください。おそらく、emerge --regen を試す必要があるのは非常に巨大な ebuild リポジトリのユーザーだけです。
安全性が確認されていないインストール済み ebuild リポジトリのマスキング
巨大なebuildリポジトリや、よく知らない・低品質なebuildリポジトリを利用するなら、そのebuildリポジトリ全体に対してハードマスクをかけ、ケースバイケースの原則で特定の ebuild のみを許可するのが最善でしょう:
/etc/portage/package.mask
*/*::ebuild repository-name
その後に、インストールするパッケージのマスクを外します。
/etc/portage/package.unmask
foo/bar::ebuild repository-name
参考
- Overlays project - ebuild リポジトリサポートのためのGentoo公式プロジェクト
- Overlays guide (Overlay project) - オーバーレイプロジェクトによって書かれたユーザーガイド
- Developer's guide to Gentoo overlays - このドキュメントは歴史的な目的のために保存されています。最新のガイドは Project:Overlays/Overlays guide にあります。
- カスタムリポジトリを定義する - Gentoo ハンドブックの一節