常に最新の状態を保つには

FreeBSD 10 以降、バイナリパッケージのコマンドが pkg に変更になり、とても気軽にプログラムをインストールできるようになりました。
今までなら ports でコンパイルしてインストールして、とやっていたところを pkg install 一発です。依存関係も見て、必要なものを
一緒に入れてくれるため、本当に手軽に更新できるようになりました。
# pkg upgrade
これですべて完了。
常に最新の状態でセキュリティ的にもばっちりです。

あれ?ではなんのためのこのエントリ?
そうです、そんな一筋縄では行かないことがあるのがこの世の定め。
標準的な config で良ければすべて平和にことは片付くのですが、そうは行きません。
コンパイル時にいろいろ指定をしないと行けない www/nginx とか、MAILDROP_SUID を指定しないとうまく動かない mail/maildrop とか、
結局インストール時に ports で make しないといけないものもいくつかあります。
そんなときに、何も考えずに pkg upgrade してしまうと、いきなり今までと挙動が変わって「動かなくなった」ということになってしまいます。

そんなことにならないようにする対策も pkg にはあります。それが、 pkg lock です。

使い方は簡単。upgrade で自動で更新されたくないパッケージを指定するだけ。
# pkg lock [パッケージ名]
更新が必要になったら
#pkg unlock [パッケージ名]
これだけです。

弊社では、 pkg upgrade をかけてから、ロックしてあるパッケージを pkg_replace で
更新するというスクリプトを作って、更新作業を簡略化しています。
その際に、 port-mgnt/portconf を入れて、config のオプションは ports.conf に追加するようにして、config の指定漏れを
防いでいます。

「機械的にできることは機械的にやっつける」
この方針で、ヒューマンエラーを減らしていくために、出来る限りのことは自動化していきましょう。