[ << ]
[ < ]
[ ホーム ]
[ > ]
[ >> ]
3. Portageの機能
目次:
3.a. Portageの機能
PortageはあなたのGentoo環境をより良くしてくれるいくつかの追加の機能があります。
これらの機能の多くはパフォーマンス、信頼性、セキュリティなどを改良してくれるソフトウェアツールに頼っています。
Portageの機能を有効にしたり無効にするには、スペースで区切られた様々な機能のキーワードを含む/etc/make.confのFEATURES変数を編集する必要があります。
いくつかのケースでは機能が依存している追加のツールをインストールする必要があります。
Portageがサポートしている機能が全てここで紹介されているわけではありません。
全てを知るには、make.confのmanページを調べてください。
コード表示 1.1: make.confのmanページを調べる |
$ man make.conf
|
デフォルトでFEATURESに何が設定されているかを知るには、emerge --infoを実行してFEATURES変数を検索するかgrepを利用します。
コード表示 1.2: 既に設定されているFEATURESを知る |
$ emerge --info | grep FEATURES
|
3.b. 分散コンパイル
distccを使う
distccはネットワーク上のそれぞれのマシン(同一である必要はない)にコンパイル作業を分散させるプログラムです。
distccクライアントは利用可能な(distccdが実行されている)distccサーバに必要な情報の全てを送信するので、
それらサーバはクライアントのためにソースコードの断片をコンパイルすることができます。
この結果、コンパイルの時間が高速化されます。
distccに関するより多くの情報(そしてどのようにしてGentooで動作するのか)についてはGentoo Distcc Documentation(日本語訳)を見てください。
distccのインストール
distccはコンピュータが送信したコンパイルタスクを監視するグラフィカルモニターを提供します。
もしGnomeを使っているのならUSEフラグに'gnome'を追加してください。
しかし、Gnomeを使っていないがモニターを利用したいときはUSEフラグに'gtk'を追加してください。
コード表示 2.1: distccのインストール |
# emerge distcc
|
Portageのサポートを有効化する
/etc/make.conf内のFEATURES変数にdistccを追加してください。
次に、MAKEOPTS変数をあなたの好みに編集してください。
よく知られたガイドラインには"-jX"と埋めうるように指示されています。
Xはdistccdを実行している(現在のホストも含める)CPUの数+1ですが、他の数字の方が良い結果が得られるかもしれません。
ではdistcc-configを実行して利用可能なdistccサーバのリストを入力しましょう。
簡単な例ではdistccサーバが192.168.1.102(現在のホスト)、192.168.1.103、192.168.1.104(2つのリモートホスト)で利用可能であると仮定します。
コード表示 2.2: distccが3つのサーバを使うように設定 |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
忘れずにdistccdデーモンを実行してください。
コード表示 2.3: distccdデーモンを起動 |
# rc-update add distccd default
# /etc/init.d/distccd start
|
3.c. キャッシングコンパイル
ccacheについて
ccacheは高速なコンパイラーキャッシュです。
プログラムをコンパイルすると、中間結果をキャッシュするので、同じプログラムを再コンパイルしたときはいつでも、コンパイル時間は大いに減少します。
ccacheを初めて用いた場合は、通常のコンパイル時に比べて遥かに遅くなりますが、次回以降の再コンパイルは速やかに済みます。
ccacheは同一のアプリケーションを何度もコンパイルする際のみ役立つので、主にソフトウェア開発者に対してだけ有益となります。
ccacheに関する特徴に興味があるなら、ccacheのホームページを訪れてください。
警告:
ccacheは数々のコンパイルの失敗を引き起こすことで知られています。ときにはstaleコードオブジェクト、または壊れたファイルを生成し、
その結果パッケージのemergeは失敗してしまいます。
もしこの問題が起こった場合(もし"File recognized: File truncated"といったエラーに遭遇したら)、
バグ報告の前にccacheを無効にして(/etc/make.conf内でFEATURES="-ccache"と設定)、
アプリケーションを再度コンパイルしてみてください。もし開発をしていないのであれば、ccacheは有効にしないでください。
|
ccacheのインストール
ccacheをインストールするには、emerge ccacheを実行してください。
コード表示 3.1: ccacheのインストール |
# emerge ccache
|
Portageのサポートを有効化する
/etc/make.confを開いてFEATURES変数にccacheを追加します。
次にCCACHE_SIZEという変数を追加して"2G"と設定します。
コード表示 3.2: /etc/make.confのCCACHE_SIZEを編集 |
CCACHE_SIZE="2G"
|
ccacheが動作しているかを確認するには、ccacheに統計を提供するよう問い合わせてください。
Portageは異なったccacheホームディレクトリを使用しているので、CCACHE_DIRも設定する必要があります。
コード表示 3.3: ccacheの統計を見る |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
/var/tmp/ccacheはPortageのデフォルトのccacheホームディレクトリです。
設定を変更したいのなら、/etc/make.confでCCACHE_DIR変数を設定することができます。
ですが、ccacheを実行すれば、それはデフォルトの位置である${HOME}/.ccacheを使用するでしょう。
そのため、Portageのccache統計を見るときにはCCACHE_DIR変数を設定する必要があったのです。
ccacheをPortageのCのコンパイル以外に使用する
もしPortageでないコンパイルにccacheを使いたいのなら、PATH変数の最初(/usr/binより前)に/usr/lib/ccache/binを追加してください。
これは、ユーザのホームディレクトリの.bash_profileを編集することで完了します。
.bash_profileはPATH変数を定義する方法のひとつです。
コード表示 3.4: .bash_profileを編集 |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
3.d. バイナリパッケージのサポート
予めビルドされたパッケージを作成する
Portageは予めビルドされたパッケージのインストールをサポートしています。
Gentoo自体は(GRPスナップショットを除いて)ビルドされたパッケージを提供しませんが、Portageはビルドされたパッケージを完全に認識することができます。
パッケージが既にインストールされているならquickpkgを使うことができますし、そうでなければemergeに--buildpkgもしくは--buildpkgonlyオプションを付けることでビルドされたパッケージを作成することができます。
Portageにインストールするパッケージごとにビルドされたパッケージを作成して欲しいのなら、FEATURES変数にbuildpkgを追加します。
ビルド済みのパッケージ集を作成するためのより拡張されたサポートが、catalystによって取得できます。
catalystについての詳しい説明はCatalyst Frequently Asked Questionsを見てください。
予めビルドされたパッケージのインストール
Gentooは提供してくれませんが、ビルドされたパッケージを置いておく中央レポジトリを作ることができます。
このレポジトリを使いたいのなら、Portageが認識できるようPORTAGE_BINHOST変数にその場所を指定しなければなりません。
例えば、ビルドされたパッケージがftp://buildhost/gentooにあるならこうします。
コード表示 4.1: /etc/make.confにPORTAGE_BINHOSTを設定 |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
ビルドされたパッケージをインストールしたいときには、emergeコマンドに--getbinpkgオプションを--usepkgと並べて記述します。
前者が前もって定義したサーバからビルドされたパッケージをダウンロードするようにemergeに伝えているのに対し、
後者はソースをダウンロードしてコンパイルする前にビルドされたパッケージのインストールを試すように言っています。
例えば、gnumericをビルドされたパッケージからインストールするにはこうします。
コード表示 4.2: ビルドされたgnumericパッケージをインストール |
# emerge --usepkg --getbinpkg gnumeric
|
emergeの予めビルドされたパッケージに関するより多くの情報はemergeのmanページにあります。
コード表示 4.3: emergeのmanページを読む |
$ man emerge
|
3.e. ファイルの取得
並行取得
複数のパッケージを連続してemergeするとき、Portageは、あるパッケージをコンパイルしている間に次のパッケージのソースファイルを取得してくることで、コンパイル時間を短縮することができます。
この機能を使うためには、FEATURESに"parallel-fetch"を追加してください。
Userfetch
Portageをrootで走らせるとき、FEATURES="userfetch"としておくと、パッケージのソースを取得しにいっている間、rootの権限を下げることができます。
これは小さなセキュリティの改善です。
3.f. 検証済みのPortageツリースナップショットを取得する
管理ポリシーとして暗号的に検証済みのPortageツリーのスナップショットのみから更新するようにすることができます。
こうすることで望ましくないコードがやパッケージがダウンロードするrsyncミラーに入ることを避けることができます。
Portageを設定するには、まずダウンロードに使用する証明書キーストアを作成し、
Portageツリースナップショットに署名しているGentooインフラストラクチャチームの鍵を登録します。
もちろん、お望みであれば、
適切なガイドラインに基づいてこのGPG鍵を検証することができます。
(鍵0x239C75C4の指紋がAE54 54F9 67B5 6AB0 9AE1 6064 0838
C26E 239C 75C4であるかを検証したり、
鍵0x96D8BF6Dの指紋がDCD0 5B71 EAB9 4199 527F 44AC
DB6B 8C1F 96D8 BF6Dであるかを検証します。)
コード表示 6.1: Portage用の証明書キーストアを作成 |
# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust
|
次に/etc/make.confを編集し、署名されたPortageツリースナップショットを検証する機能を有効にします。(FEATURES="webrsync-gpg"を使います。)
そして、通常のemerge --syncを使ったPortageツリーの更新を無効にします。
コード表示 6.2: 署名されたツリーを検証して更新する |
FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""
|
これで終わりです。次からはemerge-webrsyncでは、有効な署名がなされたスナップショットだけがシステムに展開されます。
[ << ]
[ < ]
[ ホーム ]
[ > ]
[ >> ]
このドキュメントの内容は、他のものが明示されない限りは、
CC-BY-SA-2.5ライセンスです。
Gentoo Name and Logo Usage Guidelines (日本語訳)が適用されます。
|