ハンドブック:X86/Portage/カスタムツリー
Gentoo リポジトリのサブセットを使用する
パッケージやカテゴリを除外する
あるカテゴリ/パッケージを選択的にアップデートし、他のカテゴリ/パッケージを無視することができます。これは emerge --sync ステップの間に rsync にカテゴリ/パッケージを除外させることによって達成できます。
この方法を動作させるためには、マニフェスト検証を無効化する必要があります。これはリポジトリのセキュリティを低下させるでしょう。検証を無効化するには、sys-apps/portage パッケージの
rsync-verify
USE フラグを無効化するか、Gentoo ebuild リポジトリの repos.conf エントリで sync-rsync-verify-metamanifest=no
(man 5 portage を参照) を設定してください。除外パターンを含むファイルの名前を /etc/portage/make.conf の PORTAGE_RSYNC_EXTRA_OPTS 変数で定義します:
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
games-*/*
ebuild リポジトリの一部を除外することは、特に Gentoo ebuild リポジトリに関しては、依存関係の問題につながることがあります! 新しい許可されたパッケージは、新しい除外されたパッケージに依存していることがあります。除外はサポート対象外ですので、このリスクを念頭に入れた上で進めてください。
非公式の ebuild を追加する
カスタム ebuild リポジトリを作成する
手動作成
Gentoo ebuild リポジトリを通じて公式に利用可能でない ebuild を、Portage に使用させることができます。このためには、サードパーティーの ebuild を格納する新しいディレクトリ(たとえば /var/db/repos/localrepo)を作成してください。この新しいリポジトリは Gentoo の公式リポジトリと同じディレクトリ構造である必要があります。
root #
mkdir -p /var/db/repos/localrepo/{metadata,profiles}
root #
chown -R portage:portage /var/db/repos/localrepo
次に、リポジトリ用に実用的な名前を選びましょう。次の例では "localrepo" を名前に使っています:
root #
echo 'localrepo' > /var/db/repos/localrepo/profiles/repo_name
そして、リポジトリ内のプロファイルのために使用される EAPI を定義してください:
root #
echo '8' > /var/db/repos/localrepo/profiles/eapi
Portage に、リポジトリマスターが Gentoo のメイン ebuild リポジトリであること、(このリポジトリはrsync サーバー、git ミラー、あるいはその他のリポジトリの種類などの、外部のソースで裏付けられているわけではないので)ローカルリポジトリを自動的に同期しないことを通知します:
masters = gentoo
auto-sync = false
thin-manifests = true
sign-manifests = false
最後に、/etc/portage/repos.conf の中にリポジトリ設定ファイルを作成してローカルシステムのリポジトリを有効にします。このファイルは Portage にカスタムローカルリポジトリが見つけられる場所を通知します:
[localrepo]
location = /var/db/repos/localrepo
省略可能: eselect repository を使ってリポジトリを作成する
別の方法として、カスタム ebuild リポジトリは eselect repository モジュール (app-eselect/eselect-repository に含まれます) を使用してすぐに作成することができます。次の例で、localrepo
は選択した名前に置き換えてください:
root #
eselect repository create localrepo
Adding localrepo to /etc/portage/repos.conf/eselect-repo.conf ... Repository <ebuild_repository_name> created and added
"localrepo" という名前の空のリポジトリが /var/db/repos/localrepo で利用可能になるでしょう。
複数のリポジトリを扱う
複数の ebuild リポジトリを開発したり、Gentoo リポジトリに送る前にパッケージをテストしたり、あるいはさまざまなソースからの非公式 ebuild を使用したい人のために、app-eselect/eselect-repository パッケージはリポジトリを最新の状態に保つのを助けるツールも提供しています。eselect repository の記事も参照してください。
eselect repository を使ってリポジトリを追加する
たとえば、GURU リポジトリを有効にするには:
root #
eselect repository enable guru
この方法で追加されたリポジトリの更新は、同期のたびに自動で行われるでしょう:
root #
emerge --sync
Portage で管理されていないソフトウェア
Portage を自分で管理しているソフトウェアと共に使用する
時々、Portage でソフトウェアタイトルを提供できるにも関わらず、Portage にプロセスを自動化させることなくソフトウェアを個別に設定、インストール、メンテナンスしたい場合があります。既知の例はカーネルソースや Nvidia ドライバーなどのパッケージです。Portage に特定のパッケージがシステムに手動でインストールされていることを知らせる(したがって、依存関係の計算の際にこの情報が考慮される)よう設定できます。このプロセスは injecting と呼ばれており、/etc/portage/profile/package.provided ファイルを通じて Portage によりサポートされています。
たとえば、手動でインストールされた gentoo-sources-6.6.21 について Portage に知らせるには以下の行を /etc/portage/profile/package.provided に追加します:
sys-kernel/gentoo-sources-6.6.21
このファイルはバージョンを
=
演算子なしで使用します。