ebuild リポジトリ

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Ebuild repository and the translation is 82% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources
Resources

ebuild リポジトリ(いわゆるオーバーレイとしても知られています)は Gentoo ベースのシステムのパッケージマネージャーにパッケージを追加・拡張するために使われるディレクトリー構造およびファイルです。ebuild リポジトリは1つ、あるいは複数の ebuild API に合致する ebuild を含むことができます。

Gentoo システムのメインリポジトリは Gentoo ebuild リポジトリとして知られています。これは Gentoo の公式開発者たちおよび(Proxy Maintainers プロジェクトを通じて)コミュニティーメンバーによって維持管理されている ebuild で構成されています。システム管理者は以下で説明するさまざまなユーティリティーや方法を使用して追加のリポジトリをシステムに追加することができます。

Gentoo system administrators can add additional ebuild repositories by using various utilities and methods described below.

リポジトリ

ebuild リポジトリは単なるファイルの集合(ebuild、メタデータファイル ...)です。これらは公開リポジトリ(git, CVS, SVN ...)から取り寄せたり、tarballとしてダウンロードして手動でシステム上に展開したりすることで利用できます。信用できる第三者よって管理されているリポジトリを利用することをおすすめします。すべてのebuildリポジトリはインストールされると、Portageがどのソフトウェアをインストールするか決定するときに、ebuildリポジトリ内のファイルに目を通すようになります。もしもセキュリティ上の危険があるコードがオーバーレイに存在すれば、セキュリティ上の危険があるパッケージがシステムにインストールされるかもしれないからです。

Important
It is advised to use managed repositories by trusted third parties; any installed ebuild repository will cause Portage to look through the overlaid files when deciding which software to install. If compromised code is in the ebuild repository, then compromised packages could be installed on the system.

リポジトリを扱うための現時点におけるデフォルトのアプローチは /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.confmake.conf の両方がサポートされています。

より詳しくは Layman の記事及びProject:Portage/Sync#Layman_configuration を参照してください。

emaint

Sync (Portage project) 記事および man 1 emaint を参照してください。

eix

eix-syncemerge --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 のみを許可するのが最善でしょう:

FILE /etc/portage/package.mask
*/*::ebuild repository-name

その後に、インストールするパッケージのマスクを外します。

FILE /etc/portage/package.unmask
foo/bar::ebuild repository-name

参考

外部の情報