ハンドブック:パート/ワーキング/機能

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:Parts/Working/Features and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Parts ハンドブック
インストール
インストールについて
メディアの選択
ネットワーク設定
ディスクの準備
stage3のインストール
Gentooベースシステムのインストール
カーネルの設定
システムの設定
ツールのインストール
ブートローダの設定
締めくくり
Gentooの操作
Portageについて
USEフラグ
Portageの機能
Initスクリプトシステム
環境変数
Portageの操作
ファイルとディレクトリ
変数
ソフトウェアブランチの併用
追加ツール
カスタムPortageツリー
高度な機能
ネットワーク設定
はじめに
高度な設定
モジュール式ネットワーク
無線
機能の追加
動的な管理


Portage の機能

Portageは、Gentooでの体験を更により良くする追加の機能をいくつか備えています。これらの機能の多くは、パフォーマンス、信頼性、セキュリティなどを向上させる、あるソフトウェアツールに依存しています。

Portageのある特定の機能を有効あるいは無効にするには、/etc/portage/make.confを編集し、様々な、機能に関するキーワードをスペース区切りで格納するFEATURES変数に値を設定、あるいは値を更新してください。一部の場合では、その機能が依存する追加のツールもインストールする必要があります。

Portageがサポートするすべての機能がここに一覧として表示されているわけではありません。全体を概観するには、make.confのmanページを参照してください。

user $man make.conf

デフォルトでFEATURES変数に何が設定されているかを確認するには、emerge --infoを実行し、FEATURESの項を探すかgrepしてください。

user $emerge --info | grep ^FEATURES=

分散コンパイル

distcc を使う

distccは、ネットワーク上のいくつかの(必ずしも同一ではない)マシンにコンパイルを分散させるプログラムです。distccのクライアントはすべての必要な情報を、利用可能な(distccdが稼働している)distccサーバに送ります。これによってクライアントのためにソースコードの一部分をコンパイルできます。最終的に、より早くコンパイルすることが出来ます。

distccに関する(そしてどのようにGentooで機能させるかについての)さらなる情報についてはDistccのページにあります。

distcc のインストール

distccには、コンパイルのためにコンピュータが送信しているタスクを監視するグラフィカルモニタが付属しています。このツールはUSE=gnomeまたはUSE=gtkが設定されていると自動的にインストールされます。

root #emerge --ask sys-devel/distcc

Portage の distcc サポートを有効にする

distcc/etc/portage/make.conf内のFEATURES変数に追加してください。次に、MAKEOPTS変数を編集し、システムが許可する並行ビルドジョブの数を増やしてください。知られているガイドラインとして、Nを、distccdが稼働しているCPUの数(現在のホストも含む)に1を加えたものとして、-jNを指定することです。ただし、これはあくまでガイドラインです。

それではdistcc-configを実行し、利用できるdistccのサーバを入力してください。単純な例として、利用可能なdistccのサーバが、192.168.1.102(現在のホスト)、192.168.1.103そして192.168.1.104(2つの"リモートの"ホスト)であるとします:

root #distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

distccdデーモンを実行するのも忘れないでください:

root #rc-update add distccd default
root #/etc/init.d/distccd start

中間生成物のキャッシュ

ccache とは

ccacheは高速なコンパイラキャッシュです。アプリケーションがコンパイルされると、毎回ccacheは中間生成物をキャッシュします。これによって、同じプログラムが再コンパイルされるといつでも、コンパイル時間は大幅に減少します。最初にccacheが実行される時、コンパイル速度は通常より遅くなるでしょう。しかし、次からの再コンパイルは早くなるはずです。ccacheは同じアプリケーションが何回も再コンパイルされる時(あるいは同じアプリケーションのアップグレードが頻繁に行われる時)にのみ便利なもので、それゆえこれはほとんどの場合、ソフトウェア開発者にのみ便利なものです。

ccacheに関するさらなる情報については、ホームページを訪れてください。

警告
ccacheは様々なコンパイル時の問題を引き起こすことが知られています。ccacheは時々古いコードオブジェクトや壊れたファイルを保持していることがあり、これはパッケージのemerge失敗につながります。もしこれが起きた場合 ("File not recognized: File truncated" などのエラーがビルドログに現れます) は、バグ報告をする前に ccache を無効にして (/etc/portage/make.confFEATURES="-ccache" を書く) 再コンパイルしてみてください。

ccache のインストール

ccacheをインストールするには、次のコマンドを実行してください:

root #emerge --ask dev-util/ccache

Portage の ccache サポートを有効にする

/etc/portage/make.confを開き、ccacheFEATURES変数に追加してください。もしFEATURESが存在しなければ新たに定義してください。次に、CCACHE_SIZEと呼ばれる新しい変数を追加し、2Gと設定します:

FILE /etc/portage/make.confPortageのccacheサポートを有効にする
FEATURES="ccache"
CCACHE_SIZE="2G"

ccacheが機能しているか確認するには、ccacheの統計を出すようにしてください。Portageは異なったccacheのホームディレクトリを使用しているため、一時的にCCACHE_DIR変数に値を格納する必要があります:

root #CCACHE_DIR="/var/tmp/ccache" ccache -s

/var/tmp/ccache/はPortageのデフォルトのccacheホームディレクトリですが、/etc/portage/make.conf内でCCACHE_DIR変数を変更することで場所を変えることができます。

ccacheが単独で機能している時、ccacheは${HOME}/.ccache/を既定の場所として使用するでしょう。これが、(Portageの)ccacheの統計を取得する時に、CCACHE_DIR変数が設定されている必要がある理由です。

ccache を Portage の外で使う

ccacheをPortage以外のコンパイルの時に使用するには、/usr/lib/ccache/bin/PATH変数のはじめ(/usr/binの前)に追加してください。これはユーザのホームディレクトリにある~/.bash_profileを編集することでできます。~/.bash_profileを使用することは、PATH変数を定義する方法の1つです。

FILE ~/.bash_profileccacheの場所を他のPATHの前に設定する
PATH="/usr/lib/ccache/bin:${PATH}"

バイナリパッケージ

ビルド済みパッケージを作る

Portageはビルド済みパッケージのインストールに対応しています。Gentoo自体はビルド済みパッケージを提供していませんが、Portageはビルド済みパッケージを認識できます。

ビルド済みパッケージを作成するには、もしパッケージが既にシステムにインストールされているならばquickpkgコマンドを使用してください。あるいは--buildpkgまたは--buildpkgonlyオプションを使用してemergeしてください。

Portageに、インストールするすべての単一のパッケージの、ビルド済みバージョンを作成させるには、FEATURES</var.変数にbuildpkgを追加してください。

ビルド済みパッケージの作成に対する拡張サポートは、catalystを使用して受けることが出来ます。catalystについての詳細はCatalyst FAQを読んでください。

ビルド済みパッケージのインストール

Gentooは対応していませんが、ビルド済みパッケージが保存される中央リポジトリを作成することが可能です。このリポジトリを使用するために、PORTAGE_BINHOSTにそのリポジトリを指定することでPortageに認識させることが必要です。例えば、ビルド済みパッケージがftp://buildhost/gentooにある場合:

FILE /etc/portage/make.confPORTAGE_BINHOSTに場所を追加
PORTAGE_BINHOST="ftp://buildhost/gentoo"

ビルド済みパッケージをインストールする時は、emergeコマンドに--getbinpkgオプションを、--usepkgオプションと一緒に追加してください。前者はemergeに、予め定義されたサーバからビルド済みパッケージをダウンロードすることを伝え、後者はemergeに、ソースコードを取ってきてコンパイルする前に、先にビルド済みパッケージのインストールを試みるようemergeに要請します。

例えば、gnumericをビルド済みパッケージを用いてインストールする場合:

root #emerge --usepkg --getbinpkg gnumeric

emergeのビルド済みパッケージのオプションに関するさらなる情報については、emergeのmanページで見ることができます:

user $man emerge

ビルド済みパッケージを配布する

もしビルド済みパッケージを他人に配布する場合、それが許可されている事を確認してください。上流のパッケージ配布条件を確認してください。例えば、GNU GPLライセンスの下でリリースされているパッケージは、バイナリと一緒にソースコードも利用可能にしなければなりません。

もしビルド済みバイナリが配布不可能な場合、ebuildがRESTRICT変数内でbindist制限を定義しているかもしれません。この制限は、時々1つまたは複数のUSEフラグの条件付きとなっています。

既定では、Portageはこの制限によっていかなるパッケージもマスクすることはありません。これは/etc/portage/make.conf内のACCEPT_RESTRICT変数を設定することで、システム全体で変更することが出来ます。例えば、bindist制限のあるパッケージをマスクする場合、以下の行をmake.confに追加してください:

FILE /etc/portage/make.confバイナリで配布可能なパッケージのみを受諾する
ACCEPT_RESTRICT="* -bindist"

emergeコマンドに--accept-restrictオプションを渡すことで、ACCEPT_RESTRICT変数を上書きすることも可能です。例えば、--accept-restrict=-bindistでは、一時的にbindist制限のあるパッケージをマスクします。

また、パッケージを配布する時にACCEPT_LICENSE変数を設定することも検討してください。これに関しては、Licensesセクションを確認してください。

重要
パッケージのライセンスとそれぞれの国の法律に従うことは、あくまで各 "ユーザー" の責任です。ebuildに書かれたメタデータ変数 (RESTRICTLICENSE) はバイナリ配布の制限などの案内を提供しますが、Portageの出力やGentoo開発者による回答は法的な意味を持つものではなく、これをあてにするべきではありません。お住いの地域の法律に反しないよう、十分に注意してください。

ファイルのフェッチ

Userfetch

Portageがは通常rootユーザとして実行されます。FEATURES="userfetch" を設定しておくことで、パッケージソースを取得するときにroot権限を放棄し、portage:portageのユーザ/グループで実行するようになります。これはちょっとしたセキュリティの向上につながります。

もしuserfetchFEATURES内で設定されているならば、確実に/var/db/repos/gentoo内にあるすべてのファイルの所有者を、chownをroot特権で実行することで変更するようにしてください。

root #chown --recursive --verbose portage:portage /var/db/repos/gentoo

検証済みのGentooリポジトリスナップショット

管理者は、ローカルのGentoo ebuildリポジトリを、Gentoo基盤がリリースする暗号検証済みのスナップショットにアップデートすることを選択できます。これによって悪質なrsyncミラーが、システムがダウンロードするリポジトリに望まれていないコードやパッケージを追加するのを防ぐことが出来ます。

注意
以下は、repos.confを使用した、emerge-webrsyncのsync手段を利用し設定するアップデートされた方法です。

GentooリリースメディアのOpenPGP鍵は、現在バイナリキーリングとして利用可能です。これらはapp-crypt/gentoo-keysパッケージを経由してインストールすることが出来ます:

root #emerge --ask app-crypt/gentoo-keys


FILE /etc/portage/make.confPortage の GPG サポートを有効にする
FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/var/lib/gentoo/gkeys/keyrings/gentoo/release"
FILE /etc/portage/repos.conf/gentoo.confsync-uri変数の値を消去する
[DEFAULT]
main-repo = gentoo
 
[gentoo]
# 変数の値を消去するか、auto-sync = noと設定することで同期を無効にします
# この設定ファイルの変数に値を与えるのに、クオート(''や"")を使用しないでください!
# portage-2.2.18については'websync'を使用してください。
# portage-2.2.19やそれ以上のバージョンについては、'webrsync'を使用してください(websyncはwebrsyncに改名されました)
sync-type = webrsync
sync-uri = 
auto-sync = yes

app-crypt/gnupg をインストールすることを忘れないでください:

root #emerge --ask app-crypt/gnupg

gpgを使用して、キーリング中の鍵が正しい鍵であることを確かめてください:

root #gpg --homedir /var/lib/gentoo/gkeys/keyrings/gentoo/release --with-fingerprint --list-keys --keyid-format 0xlong

鍵の指紋を、公式Gentooリリースエンジニアリングプロジェクトのページで一覧になっている指紋に対し確かめてください。

重要
万一app-crypt/gentoo-keysからインストールした鍵のどれかが期限切れとなっているなら、app-crypt/gkeysgkeysを実行し、鍵サーバからこれらの鍵をリフレッシュしてください:
root #emerge --ask app-crypt/gkeys
root #gkeys refresh-key -C gentoo

信用したい鍵それぞれに対し、以下のコマンドを実行してください(鍵idの'0x...'を信用したい鍵に置き換えてください)。

root #gpg --homedir /var/lib/gentoo/gkeys/keyrings/gentoo/release --edit-key 0xDB6B8C1F96D8BF6D trust

GPGコマンドラインメニューが現れるはずですので、以下のコマンドを打ち、鍵を十分に信用し、プログラムを終了してください:

gpg>4
gpg>quit

これでシステムはOpenPGP/gpgによって認証されたスナップショットのみをsyncに使用するよう設定されました。
syncを実行するのにいくつかのコマンドが利用可能です。

注意
実際に必要になるのは次のコマンドのうち一つだけです。詳細は Portage の sync について書かれたWiki記事 をご覧ください。
root #emerge --sync
root #emaint sync -a
root #emaint sync --repo gentoo
root #emerge-webrsync

distfilesを認証する

整合性を再認証し、場合によっては現在インストールされているすべてのパッケージに関する、過去に削除されたあるいは破損したdistfilesを再ダウンロードするには、次のコマンドを実行してください:

root #emerge --ask --fetchonly --emptytree @world