有在玩 ports 的人大概都知道 ports 有一些 knob 可以調整哪些東西要或者不要,而要紀錄這些相當討厭。過去的解法是用 portupgrade 的 MAKE_ARGS 來紀錄,後來 ports 自己有了 OPTIONS 可以幫忙(雖然不是很完美,但是至少有了)。
現實上的問題是,目前的 OPTIONS 還不完全能讓全部的 ports 都來用,於是常常就會需要在 pkgtools.conf 紀錄一堆有的沒的。用 MAKE_ARGS 的方式的缺點是,當更新 A 的時候,他可能裝 B,而 B 我又有調過選項,這時候就大爆炸了。正確的做法式在 make.conf 裡面寫,但是要注意用 .CURDIR 去判斷該加甚麼。這麼做相當麻煩,所以我也就一直懶的去改。
前幾天,ale@ 弄了個 portconf(最早是 flz@ 寫的)。裝了這個之後,他會幫忙改 make.conf,你只需要弄一個 /usr/local/etc/ports.conf 像是:
*: WITH_CJK=yes
devel/subversion*: WITH_APACHE2_APR=yes | WITHOUT_BDB=yes
net/mtr: WITHOUT_X11=yes
就可以快樂的丟掉 MAKE_ARGS。注意到我的例子裡面有用 *,在 portconf 裡面,是用 sh 的 pattern match,所以可以這麼搞 另外還有個問題要特別注意的是,如果你的 /usr/ports 是 link 的話,要去 make.conf 改成真正的路徑,否則會沒有用。
Update: 感謝 b6s 指正錯誤。