LoginSignup
3
3

More than 5 years have passed since last update.

egencacheでoverlayのemergeを速くする

Last updated at Posted at 2014-04-24

Portageではツリーごとのメタデータキャッシュを作ることができます。gentooツリーの場合はemerge --syncで一緒に更新されるんですけどね。
これをoverlayでも自分で作っておくことで、emergeする時の依存関係の解決を速くすることができたりします。というお話。

前提知識

  • laymanで追加したリポジトリがどこに置かれているか知っている
  • ローカルリポジトリを使えていれば多分余裕

あらまし

egencacheというコマンドを実行すると、指定したoverlayのmetadata/md5-cache/以下にebuildのキャッシュを作ります。のでgitとかで管理してたら.gitignoreで除外するといいかも。(著名なoverlayは既にそういう構成になってたりもします)

cache-formatsの設定

各overlay直下のmetadata/layout.confでキャッシュ形式の指定ができます。

metadata/layout.conf
master = gentoo
cache-formats = md5-dict # これ
thin-manifests = true

が、portage-2.1.11.32以降md5-dictがデフォルトになっているので、指定しなくても同様に動きます。
それ以前はpmsという形式で、更新日時ベースでキャッシュの有効性を判定してしまうので問題になることがあったようです。

キャッシュの生成

$ sudo egencache --repo=<repo_name> --update --update-use=local-desc

ローカルリポジトリをroot以外で管理してるならそのユーザーでもok。
makeでおなじみ--jobsもしくは-jも使えます。

eix-syncで自動生成

古いキャッシュが混在していても無視されるだけで問題はありませんが、意味がないので自動で生成したいですね。
例えば・・・

/etc/eix-sync.conf
# overlayの更新
*

# metadataキャッシュの更新
@egencache --repo=<repo_name> --update --update-use-local-desc

こんな感じに。
ついでに-Mでemerge --metadataもさせるともうちょっと高速化できたりしますが、お好みで。

参考

このエントリの元になった話や所要時間の比較がブログにあるので、こちらもどうぞ。
http://d.hatena.ne.jp/unarist/20140424/1398358540

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3