ナレッジベース: 特定のパッケージに対してキーワードを許可する
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
Gentoo リポジトリ内に存在するすべてのソフトウェアが、emerge コマンドですぐにインストールできるということはありません。まだテスト (安定化とも呼ばれます) の最中にあるソフトウェアはキーワードによって隠されていて、インストールするためには明示的に許可する必要があります (testing ブランチをシステム全体で使用している場合を除く)。testing ブランチのソフトウェアを使用すると安定性の問題を引き起こすことがあり、経験の浅いユーザーには推奨されないことに注意してください。
このガイドはひとつのテーマのみに着目しています。Portage での作業についての完全で正確な情報は、emerge man ページおよびGentoo ハンドブックを参照してください。
/etc/portage/package.accept_keywords も参照してください。
testing ブランチのパッケージを emerge してみる
Gentoo リポジトリの testing ブランチのパッケージをインストールしようとすると、Portage emerge コマンドは警告を発して終了するでしょう。例えば、現在 testing ブランチのバージョンしか存在しない games-kids/gcompris
を emerge しようとすると:
root #
emerge --ask games-kids/gcompris
These are the packages that would be merged, in order: Calculating dependencies... done! !!! All ebuilds that could satisfy "games-kids/gcompris" have been masked. !!! One of the following masked packages is required to complete your request: - games-kids/gcompris-1.0::gentoo (masked by: ~amd64 keyword) For more information, see the MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
Portage は、リクエストに応えられる唯一の方法は、リクエストされたパッケージの testing ブランチ ("~<arch>") バージョンをインストールすることだと理解しました。上の例では、システムは amd64 アーキテクチャ (x86_64) を使用しているので、testing ブランチは ~amd64 というキーワードを使用しています。
Gentoo リポジトリ内に stable ブランチバージョンが存在しないが testing ブランチバージョンは存在するパッケージを emerge しようとすると、Portage は testing ブランチパッケージがリクエストされていることを警告するでしょう。パッケージの特定のバージョンがリクエストされたが、そのバージョンは testing ブランチ内にあるという場合にも、警告するでしょう。
リクエストされたパッケージの依存が testing ブランチ内でのみ利用可能な場合も、同じエラーが発せられるでしょう。
testing ブランチのパッケージを利用できるようにするには
使えるならいつでも stable ブランチのパッケージが好ましいです。testing ブランチのパッケージを使用する場合は、ユーザーはシステムが不安定になるリスクに備えるべきであり、そのため新規ユーザーが testing のパッケージをインストールするのはおすすめされません。
バグに遭遇したら、正しい場所で適切に報告することが推奨されます。
--autounmask-write emerge コマンドオプションを使用する
testing ブランチのパッケージをインストールするためのおそらく最も簡単な方法。
testing ブランチのパッケージの隠しを解除するのに必要なテキストファイルの変更をキューに入れるには、emerge コマンドを --autounmask=y --autounmask-write
付きで実行してください。例えば:
root #
emerge --ask --autounmask=y --autounmask-write games-kids/gcompris
These are the packages that would be merged, in order: Calculating dependencies... done! [...] [ebuild N ~] games-kids/gcompris-1.0 USE="handbook -debug -kiosk -test" The following keyword changes are necessary to proceed: (see "package.accept_keywords" in the portage(5) man page for more details) # required by games-kids/gcompris (argument) =games-kids/gcompris-1.0 ~amd64 Would you like to add these changes to your config files? [Yes/No] y Autounmask changes successfully written. * IMPORTANT: 2 config files in '/etc/portage' need updating. * See the CONFIGURATION FILES and CONFIGURATION FILES UPDATE TOOLS * sections of the emerge man page to learn how to update config files.
パッケージ名の前の部分にあるチルダ ("~") は、パッケージが testing ブランチ内にあることを示しています。
先のコマンドが変更した、保護されたファイルへの変更を確認してマージするには、dispatch-conf (または etc-update) を実行してください:
root #
dispatch-conf
--- /etc/portage/package.accept_keywords 2021-04-01 09:12 +0200 +++ /etc/portage/._cfg0000_package.accept_keywords 2021-04-24 00:29 +0200 @@ -11,3 +11,5 @@ [...] +# required by games-kids/gcompris (argument) +=games-kids/gcompris-1.0 ~amd64 >> (1 of 2) -- /etc/portage/package.accept_keywords >> q quit, h help, n next, e edit-new, z zap-new, u use-new m merge, t toggle-merge, l look-merge:
システムの設定によっては、変更は自動でコミットされるかもしれませんし、ページャーの画面が表示されて、続けるには閉じる (デフォルトのページャーの less では q) 必要があるかもしれません。変更が自動でコミットされない場合は、dispatch-conf が操作を求めるでしょう。提案された変更は正しいなら、u を押して変更をコミットしてください。
詳しい情報は dispatch-conf についてのハンドブックの項目を参照してください。
autounmask の変更を確認してマージしたら、パッケージが Portage から利用できるようになり、インストールできるはずです:
root #
emerge --ask games-kids/gcompris
These are the packages that would be merged, in order: Calculating dependencies... done! [...] [ebuild N ~] games-kids/gcompris-1.0 USE="handbook -debug -kiosk -test" Would you like to merge these packages? [Yes/No]
手動設定
パッケージは、Portage 設定ファイルに書き出すことで利用できるようになります。ユーザの望みに応じて、testing ブランチのパッケージは、上で見たように emerge コマンドの autounmask オプションを使うことで、または設定オプションを書くことによって、インストールするために利用できるようになります。設定オプションは Portage 設定ディレクトリ内の単一ファイルに書くか、そのファイルを代わりにディレクトリとして、個別のファイルに分けて設定を整理して書くことができます。
単一ファイル
ユーザによっては、autounmask オプションを使用するより、1 つのファイルにパッケージごとの複数のエントリを持たせたほうがより高い柔軟性が得られるかもしれません。
/etc/portage ディレクトリがまだ存在しない場合は、まずそれを作成する必要があるかもしれません:
root #
mkdir --parents /etc/portage
希望するパッケージを利用できるようにするために、適切な行を追加してください。例えば、不安定版ブランチから games-kids/gcompris パッケージをインストールするには:
root #
echo "games-kids/gcompris ~amd64" >> /etc/portage/package.accept_keywords
パッケージの特定のバージョンをインストールするには:
root #
echo "=games-kids/gcompris-1.0 ~amd64" >> /etc/portage/package.accept_keywords
ディレクトリを使う
例えば、設定を整理するためのディレクトリを作ることで、別の柔軟性が得られるかもしれません。
設定を個別のファイルに分けて整理するためには、/etc/portage/package.accept_keywords をファイルとしてではなく、ディレクトリとして作成してください。まだ存在しない場合は:
root #
mkdir --parents /etc/portage/package.accept_keywords
設定を整理するためにディレクトリ構造を使用する例として、Term-ScreenColor パッケージをインストールしたいが、これが依存として Term-Screen パッケージを持っていて、Term-Screen パッケージは testing リポジトリでのみ利用可能であるとします。
Term-Screen を testing からインストールできるようにした理由への参照として、Term-Screen パッケージを利用できるようにする設定ディレクティブを含む Term-ScreenColor という名前のファイルを使います:
root #
echo "=dev-perl/Term-Screen-1.30.0 ~amd64" >> /etc/portage/package.accept_keywords/Term-ScreenColor
付記
すぐに役立つ更新を含むことがある -r#
パッケージリビジョンも受け入れるには、先頭の =
(等号) を ~
(チルダ) で置き換えてください:
~dev-perl/Term-Screen-1.30.0 ~amd64
キーワード自体は通常は省略できます:
~dev-perl/Term-Screen-1.30.0
常に最新の testing バージョンをインストールするには、先頭の =
または ~
と末尾のバージョンを消してください:
dev-perl/Term-Screen
KEYWORDS が定義されていないことによるマスクの場合は、**
記法を使ってください:
~sys-apps/portage-9999 **
パッケージはどのように testing ブランチにあるものとしてマークされますか
すべての Gentoo ebuild (パッケージ) はコンパイル時に参照される、 KEYWORDS 値集合を持っています。キーワードは、その ebuild はどのアーキテクチャでインストールできるのか、そして ebuild が安定版 (接頭辞なし) なのか、まだテスト中 (~
接頭辞付き) なのかを判別します。
場合によっては、KEYWORDS の内容が空でパッケージが定義されることもあります。この特殊なケースでは、Portage は特別な **
キーワード値を使って上書きするよう、提案するでしょう。
関連項目
- ACCEPT_KEYWORDS — パッケージマネージャーにebuildのどの KEYWORDS 値を受け入れさせるかを設定します。
- KEYWORDS — KEYWORDS 変数は、その ebuild がどのアーキテクチャ上で安定しているか、あるいはまだテスト段階にあるかを表します。
- Knowledge Base:Accepting a keyword for all packages