マスク

emerge world 時にアップグレードされると困るとパッケージャが判断したパッケージは /usr/portage/profiles/package.mask でマスクされており、勝手にアップグレードされないような機構がGentoo には備わっている。そこで、自分でパッケージの mask/unmaskを調節しようと /usr/portage/profiles/package.mask を変更すると、その場では目的は達成されるのだが、emerge sync してパッケージのリストを最新版にするとこのファイルも上書きされてしまい、再度書き換えて emerge world するのが不便だなあと思っていた。

特に最近は zsh を自分 ebuild では 4.0.7 にして使っているのに勝手に 4.1.0_pre7 とかいうバージョン (こちらも 4.1.1 が出ているのだが、メンテナっぽかった vladimir さんが消えてしまった)にアップグレードされそうになるので困っていた。

するとどうも /etc/portage/package.unmask というファイルに書けば自分でパッケージのマスクを解くことができる、と nakanoさんから教えてもらい、/usr/lib/python2.2/site-packages/portage.pyを見たら分かった、とのことだったので自分も見てみると、どうも/etc/portage/profiles/package.mask に package.mask の形式で書けば自分でパッケージのマスクをかけることができるらしい、と分かったので、これで zsh のアップグレードを止めることができた。

なんでこんな重要な機能/ファイルが undocumented なんだろう。