2015年1月10日土曜日

use.mask でマスクされた USE フラグをアンマスクするには

何かの都合で、パッケージの必要な USE フラグがマスクされていることがある。 たとえば現在 prefix 上で各種 LISP のフラグがマスクされてしまっている。 どこでそんなことにされてしまっているかというと、$EPREFIX/usr/portage/profile/base/use.mask だ。

# Andrey Grozin  (25 Jun 2014)
# These lisps are available only on some arches
clisp
clozurecl
cmucl
ecls
gcl
sbcl

ありがたい設定だね、まったく。

というわけで、このマスクを外したい。 たとえば、sci-mathematics/maxima をインストールしたいのに sbcl フラグがマスクされているから、LISP 処理系として SBCL が選べない状況だったりするのは、実際に dev-lisp/sbcl パッケージがキーワード付けされて存在する以上おかしい。

方法は、最初 use.unmask ファイルみたいなものがあるかと思ったのだが調べてみるとそうではなくて、use.mask に - 付きで USE フラグを書く。 二重否定みたいで少し解りづらいが、man 5 portage にそう書いてある。 つまり先程の sbcl を例にとるとこうだ。

# sbcl フラグのマスクを外す
-sbcl

自分で設定する use.mask は当然 $EPREFIX/etc/portage/profile に置く。