マスクされたパッケージをインストールする方法
今回は TWiki のインストール方法をご紹介しようと思ったのですが、なぜか Portage の TWiki のパッケージは stable になっていないんですね。ちょうどいい機会なので、TWiki のインストールに先立って stable でないパッケージのインストール方法をまとめておこうと思い立ちました。
といっても、以前さかなさんに教えていただいた方法を記事にするだけなのですが(^^;。さかなさんのご指摘に感謝します。
基礎知識
まずは Portage システムがパッケージの安定性を管理する方法に関する基礎知識をご紹介します。とくに大規模なアプリケーションではパッケージがなかなか table にならないこともあるので、知っておくと便利です。
KEYWORDS について
Portage の個々のパッケージには KEYWORDS というパラメータがあり、そのパッケージがサポートしているアーキテクチャやテストが完了したアーキテクチャを表現しています。例えば、OpenOffice 2.0.1-r1 の ebuild (/usr/portage/app-office/openoffice/openoffice-2.0.1-r1.ebuild) をみると、 この記事を書いている時点では以下のように定義されています。
KEYWORDS="ppc sparc x86"
空白で区切られたそれぞれの単語がサポートされるアーキテクチャを表現しています。OpenOffice 2.0.1 は PowerPC、Sparc、x86 で動作が確認されているわけです。この状態を、OpenOffice 2.0.1 は ppc, sparc, x86 アーキテクチャでstable であると表現します。
これに対して、OpenOffice 2.0.2 の ebuild では以下のように定義されています。
KEYWORDS="~x86"
これは、現在 x86 アーキテクチャでのみ動作検証作業が始まっているが、それもまだ完全に動作確認がとれていないということを表現しています。この状態を x86 アーキテクチャで unstable であると呼びます。そのほかの ppc, sparc アーキテクチャでは検証作業自体が始まっていません。このような状態を表現する言葉を私は知りませんが、たぶん unstable との明確な線引きは行われていない気がします。
ちなみに、動作検証が行われたうえで動作しないことが確認された場合は、アーキテクチャ名の前に "-" が付きます。
unstable な場合の emerge の挙動
それでは、unstable なパッケージを emerge でインストールしようとすると、どうなるのでしょうか。試しに現在 unstable となっている TikiWiki の パッケージをインストールしてみましょう。
# emerge www-apps/twiki These are the packages that I would merge, in order: Calculating dependencies !!! All ebuilds that could satisfy "www-apps/twiki" have been masked. !!! One of the following masked packages is required to complete your request: - www-apps/twiki-4.0.1 (masked by: ~x86 keyword) For more information, see MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
「"www-apps/twiki" を満たす全ての ebuild がマスクされていました。要求を完了するには以下のマスクされたパッケージのいずれかがが必要です。」
というわけですね。注目はパッケージ名の右に表示されている"masked by: ??? keyword" という部分です。ここで示されているキーワードがインストールできない原因となっているので、そのキーワードを許容するように emerge を設定してやれば、インストールできるようになります。
許容するキーワードを設定する
許容するキーワードを設定する方法は、主に以下の 3 つがあります。
- "/etc/make.conf" で設定する方法
- 環境変数 ACCEPT_KEYWORDS に設定する方法
- "/etc/portage/package.keywords" に設定する方法
それぞれ影響範囲が違うので、場合によって使い分けると便利です。
/etc/make.conf
まず最も根本的な設定方法として、"/etc/make.conf" を使う方法があります。このファイルはグローバルなUSEフラグを設定するのにも使いましたね。このファイルに以下のような行を追加すると、"~x86" のキーワードが設定されたパッケージがインストールできるようになります。
ACCEPT_KEYWORDS="~x86"
許容したいキーワードが複数ある場合は、空白区切りで記述します。
ただし、"/etc/make.conf" で設定する方法はすべてのパッケージに影響してしまうため、使うことはほとんどないはずです。
環境変数
環境変数 ACCEPT_KEYWORDS に許容するキーワードを設定することでも、マスクを解除できます。記述方法は "/etc/make.conf" とほぼ同じです。
この方法は一時的に許容するキーワードを追加したいときに使うのに適していて、実際にパッケージをインストールする際に使用するのは推奨されていません。それではどういった時に使うかというと、例えばマスクされたパッケージが使うUSEフラグを確認したいときでしょうか。パッケージがマスクされていると "-v" オプションを付けてもUSEフラグが表示される前に前述のエラーになってしまいますが、以下のようにすることでそれを回避できます。
ACCEPT_KEYWORDS="~x86" emerge -v --pretend www-apps/twiki
/etc/portage/package.keywords
さあ、最後に本命です(^^;。GentooLinux では "/etc/portage" ディレクトリにあるファイルで個々のパッケージの設定を制御できますが、そのひとつに "package.keywords" があります。
"package.keywords" の各行は以下のような書式になっています。
<パッケージ名> <許容するキーワード>
- パッケージ名
- 設定するパッケージを指定します。カテゴリーも含めた完全なパッケージ名を指定する必要があります。
- 許容するキーワード
- 許容するキーワードを指定します。記述方法は他の方法と同じですが、ダブルクォーテーションはいりません。
たとえば、前述の TWiki のマスクを解除するには、以下のように記述します。
www-apps/twiki ~x86
これで TWiki がインストールできるようになります。
今回はマスクされたパッケージをインストールする方法をご紹介しました。本来はこのようなことはせずに stable になるのを待ったほうが良いのですが、規模の大きいアプリケーションなどはなかなか stable にならなかったりします。GentooLinux 側で確認が取れていなくても、そのアプリケーション自体のプロジェクトで Linux での動作を確認していれば、ほとんどの場合は動作すると思います。そのような時は、今回の方法を試してみましょう。あくまでも自己責任ですが(^^;
詳しくはこちらの記事をどうぞ!
この記事にコメントする