FreeBSD Ports関連

http://q.hatena.ne.jp/1144785941
こちらの質問に答えてみました。
たいていの場合は変数指定で何とかなると思いますが、あまり凝ったことをしようとすると足りないかもしれませんね。コメントを見ると、質問者のかたは自由度不足と感じた……と、そういうことなのでしょうか。かくいう私も以前qmailビルド時にパッチを当てたいと思い、なんか面倒な手段を踏んだ覚えが……。


ちなみに、今改めて mail/qmail/Makefile 見てみると、いろいろと制御出来るようになってるみたいですね。portsがメンテナンスされてこうなったのかもしれませんが、qmailビルドした当時の私はportsの仕組みを今以上に理解していなかったので、気づかなかっただけかもしれず。
まあqmailを使わなくなった私にはもはや関係ありません。


以下、関連ネタについてちょっとした自分用メモ。

qmaildjbdns

上にちょっと書きましたが、私は以前qmailを使っていたのですが最近使わなくなりました。
切っ掛けはいつだったか(忘れた)のqmailセキュリティホール騒ぎでしたかね。その直後に使用をやめた、というわけではない(記憶が曖昧だが私の環境ではそもそもクリティカルな問題ではなかったような気もする)のですが、なんかqmailに対するメンテナンスの姿勢に疑問を感じはじめたのでした。
ソースが変態的だとか、他人が作ったものを信用しないとか、そういうのは構わないのですけどね……。
ちゃんと結果(非常にバグの少ないソース)を出せているのだし。


ちなみに、qmailが気になっている人は、以下の文章(と、そこからリンクの張られている「続き」)は読んでおくべきだと思います。
http://ya.maya.st/d/200602c.html#s20060225_1


んでもうこの機会だからDNSdjbdnsから離れるか、と思ったのですけれども、こちらは適当な代替案がないので結局そのままdjbdnsで運用しています。
人に主張するほどの根拠はありませんが、bindとsendmailを選んだら負けかな、と(何故か)思ってるので……。
qmailの代わりはpostfixでよいのですけどね。DNSの、特にキャッシュサーバではピンと来るのがありません。

FreshPorts

http://www.freshports.org/
今まであまり参照していませんでした。ほげー。
存在は聞いていたような気がするのですが……(←知らないのと一緒です)
見やすくて良いですね。今後はちゃんと見るようにしましょう。

portaudit

ついでに思い立ったので、portauditも入れておいきました。
いま家で遊んでるのは完全に家庭内サーバなんで、あまり神経質になる必要もないのですが。

portsdb -Uu

今まで律儀にportsdb -Uuとかやって「遅いっ!」といらいらしていました。
が。
http://www.freshports.org/commit.php?message_id=200601011543.k01Fhat3076426@repoman.freebsd.org
こちら(2006/1/1の記事)によると、以下のようなことが書いてあります。

(5) The frequency of INDEX generation on official site is now sufficient,
recommend to run "portsdb -F" (fetch INDEX from official site)
instead of "portsdb -U" (make INDEX by yourself) in portsdb(1). [1]

適当に訳します。

今は、公式サイトにおいてあるINDEXファイルは十分な頻度で生成されるようになってます。
"portsdb -U"とやって自分でINDEXファイルを作るより、"portsdb -F"とやって公式サイトからとってくる方がおすすめですよ。

以前は、公式サイトでのINDEX生成頻度が遅くて、実際のports treeの内容と一致しないことが多々あったため、ローカルマシンでINDEX作成しないと不整合がおこることもあったみたいですね。私はぶっちゃけあまり考えないでportsdb -Uuしてたのですが。
man portsdbなどを見ても、今は「cvsup後には "portsdb -Fu" するのを推奨」となってます。WWW上の情報では"portsdb -Uu"と書いてあるところが多々ありますので、わかってる人はわかってるんだろうなぁと思いつつ敢えてここに書いておきます。
ついでに、"-u" オプションで指示されている INDEX.db 作成は、別に明示的に行わなくても必要になれば勝手に実行される、ということもmanページにありました。次々に明らかになる新事実……。今までいかに私がman pageを読み流していたか知れてしまいますね。まいっか。
要は、cvsup後は "portsdb -F" だけでとりあえずはOKですよ、ということですね。


もっとも、make.conf内に特殊なマクロを書いてports間の依存関係を変えてしまっているような人は "-F" オプションでは駄目です。/usr/ports以下を改変している人(野良ports?)も駄目です。そんなことをやるような人にとっては、この程度のことは言わずもがなだと思いますが念のため。

portsnap

ついでに、ports treeを最新にアップデートするだけならcvsupすら不要だということをさっき知りました……。
http://wiki.fdiary.net/BSDmad/?portsnap
というわけで、試してみる。


……試してみた。楽だー。簡単だー。
上記のリンク先ページには、例えば

portsnap fetch && portsnap update

といった具合に書いていますが、portsnapの引数にコマンドは複数与えられるみたいですね。先ほどの例なら

portsnap fetch update

でOKぽい。