Handbook:Parts/Working/Portage/ja

Portage へようこそ
portageはソフトウェア管理における、Gentooの最も特筆すべき技術革新のひとつです. その高い柔軟性と膨大な量の機能により、Linuxで利用可能な最高のソフトウェア管理ツールであると見なされることもしばしばです.

portageはすべてPythonとBashで書かれています. どちらもスクリプト言語なので、ユーザはそのすべてを見ることができます.

ほとんどのユーザはというツールを挟んでPortageを利用することになるでしょう. この章はemergeのmanページにある情報をすべて記述することを目的とはしていません. emergeのオプションの完全な概要については、manページを参照してください：

Ebuild
Gentooのドキュメントがパッケージという言葉を使うとき、それはGentooリポジトリ上でGentooユーザが利用可能なソフトウェア名のことを指します. Gentooリポジトリとは、Portageがソフトウェアを整備（インストール、検索、クエリ、など）するために必要なすべての情報を含む、ebuildというファイルの集合体です. これらのebuildはデフォルトではにあります.

ユーザがPortageを使ってソフトウェア名に関してなんらかの操作を行うとき、Portageはシステム上のebuildをベースとして使います. なので、Portageが新しいソフトウェアやセキュリティアップデートを知るために、定期的にシステム上のebuildを更新することが大切です.

Gentooリポジトリの更新
Gentooリポジトリは通常、高速な増分ファイル転送ユーティリティであるを使って更新されます. コマンドはのフロントエンドを提供しているので、更新はとても簡単です：

一部のファイアウォールは がミラーに接続するのを制限してしまいます. この場合は毎日生成されるスナップショットを使ってGentooリポジトリを更新しましょう. ツールは最新のスナップショットを自動的に取得し、システムにインストールします.

システム管理者にとっては、GentooリリースエンジニアリングGPG鍵によって署名されたスナップショットだけを取得したい時にも が役に立つことでしょう. これに関する詳細は "Portageの機能" 記事の検証済みのGentooリポジトリスナップショットで読むことができます.

ソフトウェアの検索
Gentooリポジトリでソフトウェアを探す方法は色々あります. そのひとつは 自身を使う方法です. デフォルトでは は与えた検索キーワードをタイトル (の一部または全体) に含むパッケージの名前を出力します.

例えば、名前に "pdf" を含むパッケージを探してみましょう:

パッケージの説明文も検索対象にするには、 (か  ) オプションを使います:

この出力には様々な情報が含まれています. 各項目にはわかりやすいラベルがついているので、ここでその意味を説明する必要はないですね:

ソフトウェアのインストール
ソフトウェアの名前がわかったら、インストールは コマンドを実行するだけです. 例えば gnumeric をインストールするにはこうします:

多くのアプリケーションは互いに依存しあっているので、あるソフトウェアパッケージのインストールにはいくつかの依存パッケージのインストールを伴う場合があります. でも大丈夫、Portageがちゃんと依存関係を見ています. Portageがインストールしようとしているものを確認するには、 オプションを付けます. 例えば:

パッケージのインストールの過程で、Portageは(必要なら)ソースコードをインターネット上からダウンロードし、デフォルトでは に保存します. インストールせずにダウンロードだけさせたい時は、 オプションを emerge コマンドにつけます.

インストールしたパッケージのドキュメントを探す
多くのパッケージにはドキュメントが付属しています. そしてドキュメントをインストールするかどうかを選択する  USEフラグが用意されていることがあります. パッケージで  USEフラグが使われるかどうかは、 で調べることができます:

ドキュメントはそれをインストールしたいパッケージにのみインストールしたいでしょうから、 USEフラグは  でパッケージごとに指定することをお勧めします. 詳しくは USE フラグの節 をご覧ください.

パッケージをインストールすると、ドキュメントはたいてい 内のパッケージ名のディレクトリで見つけることができます:

ドキュメントファイルを一覧表示するもっと確実な方法は、 の  オプションを使うことです. は Portage のデータベースを検索するために使われるもので、 パッケージの一部としてインストールされます:

オプションを他のルールとともに使えば、他の種類のファイルのインストール場所を見るためにも使えます. 他の機能については の man ページで確認できます:.

ソフトウェアの削除
ソフトウェアをシステムから削除するには、 を使います. これはそのパッケージによってインストールされたすべてのファイルを削除するようPortageに指示しますが、ひとつ例外があります. アプリケーションの設定ファイルのうち、ユーザーが変更したものは削除されません. これは後で同じパッケージをインストールしなおした時に再設定する手間を省くためです.

パッケージがシステムから削除されても、そのパッケージが必要としたために自動的にインストールしたパッケージはまだ残っています. このような削除可能なパッケージを洗い出すには、emergeの  機能を使いますが、これは後ほど説明します.

システムの更新
システムをきれいに保つため (そしてもちろん最新のセキュリティアップデートを適用するため) には、日常的にシステムを更新する必要があります. PortageはGentooリポジトリに入っているebuildしか確認しませんから、最初にすることはリポジトリの更新です. Gentooリポジトリが更新できたら、 でシステムを更新することができます. 次の例では、Portageが更新したいパッケージを表示してユーザーの確認を待つよう、 オプションも指定しています.

Portageはインストール済みのアプリケーションに新しいバージョンがあるかどうかを調べます. しかし、これは明示的にインストールされたアプリケーション ( に記載されているもの) のみが対象であって、それらの依存パッケージはチェックされません. それら依存パッケージも更新するには、 オプションを指定します:

これでも全てのパッケージが対象というわけではありません. 中にはパッケージのコンパイルやビルドに必要なだけで、パッケージのインストール後には不要になる依存パッケージがあります. Portageはこれを "ビルド時依存" と呼びます. これも更新に含めるには  を付けます:

セキュリティアップデートは明示的にインストールしていない (他のプログラムが依存している) パッケージにも配信されることがあるので、時々はこのコマンドを実行するとよいでしょう.

システムのUSE設定を変更したときは、 も指定することをお勧めします. こうすると、その変更に新しいパッケージのインストールや既存パッケージの再コンパイルが必要でないかどうか、Portageが調べてくれます.

メタパッケージ
Gentooリポジトリの中には、それ自体は中身を持たず、パッケージの集合をインストールするためだけに用意されたパッケージが存在します. 例えば パッケージは、Plasma関連の様々なパッケージを依存に持つことで、KDE Plasmaデスクトップをインストールします.

このようなパッケージをシステムから削除しようと を実行しても、その依存パッケージはシステムに残っているため、あまり効果がありません.

Portage has the functionality to remove orphaned dependencies as well, but since the availability of software is dynamically dependent it is important to first update the entire system fully, including the new changes applied when changing USE flags. After this one can run to remove the orphaned dependencies. When this is done, it might be necessary to rebuild the applications that were dynamically linked to the now-removed software titles but don't require them anymore, although recently support for this has been added to Portage.

以上のことのすべては3コマンドで行われます:

は パッケージによって提供されているので、忘れずに emerge しておいてください:

ライセンス
Portage バージョン 2.1.7 以降、ライセンスを基準にソフトウェアのインストールを許可または拒否することができます. ツリー内のすべてのパッケージは LICENSE エントリを含みます. を実行するとパッケージのライセンスが表示されます.

Portage はデフォルトでは、読んだ上で契約に同意する必要のあるソフトウェア利用許諾契約 (EULA) を除き、すべてのライセンスを許可します.

許可するライセンスを制限する変数は ACCEPT_LICENSE と呼ばれ、 ファイル内で設定できます. 次の例はデフォルト値を示しています:

この設定の下では、インストール中に EULA に同意するための操作を求めるパッケージをインストールすることはできません. EULA の無いパッケージはインストールすることができます.

ACCEPT_LICENSE は 内でグローバルに設定することもできますし、 ファイル内でパッケージ毎に定義することもできます.

たとえば、 ライセンスを パッケージのために許可するには、 に次の内容を追加してください:

これにより パッケージのインストールは許可しますが、同じライセンスを持っていたとしても  パッケージのインストールは禁止されます.

License groups defined in the ACCEPT_LICENSE variable are prefixed with an  sign. A commonly requested setting is to only allow the installation of free software and documentation. To accomplish this, remove all currently accepted licenses (using ) and then only allow the licenses in the FREE group as follows:

In this case, "free" is mostly defined by the FSF and OSI. Any package whose license does not meet these requirements will not be installable on the system.

用語について
前述の通り、Portage は非常に強力で、他のソフトウェア管理ツールにはない多くの機能をサポートしています. これを理解するために、Portage のいくつかの観点について、深追いしすぎない程度に説明していきます.

Portage を使うと、ひとつのパッケージの異なる複数のバージョンをシステム上に共存させることができます. 他のディストリビューションはパッケージ名をバージョンにちなんで命名する（例えば freetype と freetype2 のように）ことが多いですが、Portage はスロット（SLOT）という技術を使用します. 各 ebuild はそのバージョンに応じてひとつのスロットを宣言します. 異なるスロットを持つ ebuild は同一システム上に共存できます. 例えば、freetype パッケージの ebuild には SLOT="1" のものと SLOT="2" のものが存在します.

同じ機能を提供するものの、実装の異なる複数のパッケージというものもあります. 例えば、metalogd、sysklogd、syslog-ng はすべてシステムロガーです. "システムロガー"の利用を前提とするアプリケーションは、例えば、metalogd に依存するわけにはいきません. 他のシステムロガーも同じくらい良い選択肢でありうるからです. そこで Portage は仮想（virtual）パッケージというものを許容しています. 各システムロガーは、virtual カテゴリの logger 仮想パッケージの"排他的な"依存パッケージとしてリストされていて、アプリケーションは パッケージに依存すればいいようになっています. このパッケージをインストールすると、すでにロギングパッケージがインストールされていない限り（この場合は仮想パッケージの依存が解決していることになります）、言及されている最初のロギングパッケージがインストールされます.

Gentoo リポジトリのソフトウェアは異なるブランチに所属できます. デフォルトでは、システムは Gentoo が安定している（stable）と考えるパッケージだけが許容されます. ほとんどの新しいソフトウェアタイトルは、コミットされた時点ではテスト中（testing）ブランチに追加されます. stable としてマークする前にまだテストが必要だということです. こうしたソフトウェアの ebuild は Gentoo リポジトリ内に存在していますが、stable ブランチに置かれるまで Portage はこれらをアップデートしません.

一部のアーキテクチャでのみ利用可能なソフトウェアもあります. 他のアーキテクチャでは動作しない、テストが不十分、そのソフトウェアを Gentoo リポジトリにコミットした開発者が異なるアーキテクチャ上で動作するか確認できない、などの理由がありえます.

Each Gentoo installation also adheres to a certain profile which contains, amongst other information, the list of packages that are required for a system to function normally.

ブロックされたパッケージ
ebuild には、それが依存するパッケージについて Portage に伝えるためのフィールドが含まれています. DEPEND 変数で宣言されるビルド時依存と、 RDEPEND 変数で宣言される実行時依存です. これらの依存パッケージのうち一つが明示的にパッケージや virtual を共存できないとマークしているとき、ブロックが発生します.

While recent versions of Portage are smart enough to work around minor blockages without user intervention, occasionally such blockages need to be resolved manually.

To fix a blockage, users can choose to not install the package or unmerge the conflicting package first. In the given example, one can opt not to install postfix or to remove ssmtp first.

Sometimes there are also blocking packages with specific atoms, such as. In this case, updating to a more recent version of the blocking package could remove the block.

It is also possible that two packages that are yet to be installed are blocking each other. In this rare case, try to find out why both would need to be installed. In most cases it is sufficient to do with one of the packages alone. If not, please file a bug on Gentoo's bugtracking system.

マスクされたパッケージ
When trying to install a package that isn't available for the system, this masking error occurs. Users should try installing a different application that is available for the system or wait until the package is marked as available. There is always a reason why a package is masked:

USEフラグの変更が必要
がセットされていないと、次のようなエラーメッセージも表示されるかもしれません:

このような警告やエラーは、インストールしようとしているパッケージが他のパッケージに単に依存しているだけでなく、そのパッケージが特定の USE フラグ（またはその集合）とともにビルドされていることも要求するときに発生します. 上の例では、パッケージ app-text/feelings が USE="test" とともにビルドされていることを要求していますが、この USE フラグがシステム上でセットされていない状態です.

これを解決するには、要求された USE フラグを 内でグローバル USE フラグに追加するか、 内で特定のパッケージに対してセットしてください.

依存パッケージが見つからない
インストールしようとしているアプリケーションは、システムで利用可能でない他のパッケージに依存しています. この問題が既知のものかどうか Bugzilla を確認し、もしそうでなければ報告してくれると助かります. システムが複数のブランチを混ぜる設定になっていなければ、この事態は発生すべきではなく、バグです.

あいまいなebuild名
The application that is selected for installation has a name that corresponds with more than one package. Supply the category name as well to resolve this. Portage will inform the user about possible matches to choose from.

循環依存
Two (or more) packages to install depend on each other and can therefore not be installed. This is most likely a bug in one of the packages in the Gentoo repository. Please re-sync after a while and try again. It might also be beneficial to check Bugzilla to see if the issue is known and if not, report it.

フェッチ失敗
Portage was unable to download the sources for the given application and will try to continue installing the other applications (if applicable). This failure can be due to a mirror that has not synchronized correctly or because the ebuild points to an incorrect location. The server where the sources reside can also be down for some reason.

Retry after one hour to see if the issue still persists.

システムプロファイルによる保護
The user has asked to remove a package that is part of the system's core packages. It is listed in the profile as required and should therefore not be removed from the system.

ダイジェスト検証失敗
This is a sign that something is wrong with the Gentoo repository - often, caused by a mistake made when committing an ebuild to the Gentoo ebuild repository.

When the digest verification fails, do not try to re-digest the package personally. Running will not fix the problem; it quite possibly could make it worse.

Instead, wait an hour or two for the repository to settle down. It is likely that the error was noticed right away, but it can take a little time for the fix to trickle down the rsync mirrors. Check Bugzilla and see if anyone has reported the problem yet or ask around on (IRC). If not, go ahead and file a bug for the broken ebuild.

Once the bug has been fixed, re-sync the Gentoo ebuild repository to pick up the fixed digest.