portage の autounmask 機能
なんかちょっと前のアップデートで portage に autounmask の機能が統合されてたのでメモしておきます。
autounmask を使わない例
例えば、今日現在 ~amd64 でキーワードマスクされている xorg-server-1.10.4 を入れたい場合 /etc/portage/package.keywords に手動で書いてやる必要があったりしますが、これをそのまま書かずに入れようとすると
$ emerge -pv1 =xorg-server-1.10.4 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild U ~] x11-base/xorg-server-1.10.4 [1.10.2] USE="ipv6 nptl udev xorg -dmx -doc -kdrive -minimal -static-libs -tslib -xnest -xvfb" 5,260 kB Total: 1 package (1 upgrade), Size of downloads: 5,260 kB The following keyword changes are necessary to proceed: #required by =xorg-server-1.10.4 (argument) =x11-base/xorg-server-1.10.4 ~amd64 NOTE: This --autounmask behavior can be disabled by setting EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf.
となって「キーワードマスクされてるよ」と言われます。これを許可するには /etc/portage/package.keywords を手で編集して明示的に外してやる必要がありました。
これが本来 (従来) のやり方。
autounmask を使ってみる
autounmask を使ってみます。
管理者権限で -p オプション無しで --autounmask-write をつけて実行します。
$ sudo emerge -v1 --autounmask-write =xorg-server-1.10.4 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild U ~] x11-base/xorg-server-1.10.4 [1.10.2] USE="ipv6 nptl udev xorg -dmx -doc -kdrive -minimal -static-libs -tslib -xnest -xvfb" 5,260 kB Total: 1 package (1 upgrade), Size of downloads: 5,260 kB The following keyword changes are necessary to proceed: #required by =xorg-server-1.10.4 (argument) =x11-base/xorg-server-1.10.4 ~amd64 NOTE: This --autounmask behavior can be disabled by setting EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf. Autounmask changes successfully written. Remember to run etc-update.
「autounmask が変更を書き込みました、 etc-update して下さい」とでます。てことで etc-update のかわりに最近の流儀で dispatch-conf を実行しておきます。
$ sudo dispatch-conf
--- /etc/portage/package.keywords 2011-08-22 12:09:36.270276250 +0900 +++ /etc/portage/._cfg0000_package.keywords 2011-08-22 12:31:59.466170428 +0900 @@ -54,3 +54,5 @@ =sys-fs/yaffs-utils-9999 ** =sys-fs/yaffs2-utils-9999 ** +#required by =xorg-server-1.10.4 (argument) +=x11-base/xorg-server-1.10.4 ~amd64 >> (1 of 1) -- /etc/portage/package.keywords >> q quit, h help, n next, e edit-new, z zap-new, u use-new m merge, t toggle-merge, l look-merge:
/etc/portage/package.keywords に必要な情報が書き込まれたことがわかります。あとは use-new を選んで書き換えて再度 emerge すればいいだけです。
今回は変更が 1 つだけなのでたいしたことないように見えるわけですが、依存関係で大量にキーワードを外してやる必要がある場合等には楽ができると思います。たとえば今日現在 ~amd64 キーワードでマスクされている kde-base/kde-meta-4.7.0 を入れたいとか、今日現在マスクされている gnome-base/gnome-3.0.0 を入れたいとか。そういうときには楽ができちゃいますね。
常用する
常用するくらいならもう KEYWORDS いじっちゃえばいいんじゃねとか思わなくもないですが、 --autounmask-write は常用することもできます。先ほどのログにちょっと出ているのですが
NOTE: This --autounmask behavior can be disabled by setting EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf.
これにあるとおり /etc/make.conf に EMERGE_DEFAULT_OPTS="--autounmask=y" と書くと常に --autounmask-write な状態になります。
追記:autounmask=n について
autounmask=y にすると常用できると書きましたが、では autounmask=n にすると…これは従来の emerge と同じ動作になり、どのパッケージのマスクを外せばいいかのアナウンスを行わなくなります。鬱陶しいと感じたら n を設定するのもいいでしょう。