2010年12月16日木曜日

portage 小ネタ: package.env

Gentoo Advent Calendar 6日目: Portage に関する小ネタ: package.env

今まで twitter でつぶやいてきたことをいくつかまとめてみる. まとめてみようかと思ったんだけど一つ目で力尽きた.
他はまた今度.


1. /etc/portage/package.env

portage-2.2_rc93 で /etc/portage/package.env が使えるようになるらしい.パッケージ毎に環境変数を変えられるんかなless than a minute ago via web



これは確か New portage on the horizon をみてつぶやいたはず.
* Per-package environment variables can be set with the new package.env 
configuration file in /etc/portage/. See the portage(5) man page for 
details. 

これを実際に使ってみようと思う.
まずは,portage-2.2_rc93 を入れる.
今日時点ではまだマスクされているので,unmask にいれます.

$ echo =sys-apps/portage-2.2_rc93 | sudo tee -a /etc/portage/package.unmask
$ sudo emerge -u portage

使い方を見てみます.(man 5 portage)

package.env
  Per-package  environment  variable  settings. 
  Entries refer to environment files that are placed in the /etc/portage/env/ 
  directory and have the same format as make.conf(5).

  Format:
  - comment lines begin with # (no inline comments)
  - one DEPEND atom per line followed by name(s) of environment file(s)

  Example:
  # use environment variables from /etc/portage/env/glibc.conf for the glibc package
  sys-libs/glibc glibc.conf

/etc/portage/env/ に make.conf と同じフォーマットで記述したファイルを置いておき,それを /etc/portage/package.env で指定するような感じらしい.

例えば,特定のパッケージだけ CFLAGS を変えたいといった場合は,以下のようにする.

/etc/portage/env/hoge.conf
CFLAGS="-march=i686 -O1 -pipe"

/etc/portage/package.env
app-arch/unzip hoge.conf

このような設定を書くと,app-arch/unzip のみ CFLAGS を "-march=i686 -O1 -pipe" にすることができます.

パッケージをデバッグしたい(gdbで調査したいとか)場合は,

/etc/portage/env/debug.conf
CFLAGS="${CFLAGS} -g"
FEATURES="nostrip"

/etc/portage/package.env
app-arch/unzip debug.conf
とすればいいでしょう.
こうすると,app-arch/unzip のみ -g つきでコンパイルされ,自動的にバイナリが strip されません.