pkg によるパッケージ管理

FreeBSD 9.2-RELEASE や 10.0-RELEASE から使える pkg は pkg_add などを置き換える新しいパッケージ管理システムです。しかし、標準提供されているパッケージはデフォルトの設定でビルドされているため、カスタム構成でビルドしたい場合は相変わらず ports からビルドしたり、独自のパッケージサーバーを立てる必要があります。

pkg で参照するサーバーは 9.2-RELEASE で利用する場合は追加で導入するものであることから /usr/local/etc/pkg/repos/FreeBSD.conf で、10.0-RELEASE の場合は標準であることから /etc/pkg/FreeBSD.conf となります。

通常は以下のコマンド辺りを覚えておけば大体困らないかと思います。

pkg install <パッケージ名>パッケージの導入
pkg delete <パッケージ名>パッケージの削除
pkg upgradeパッケージの更新
pkg audit脆弱性のあるパッケージのレポートを表示
pkg info導入済みパッケージの一覧
pkg info <パッケージ名>特定の導入済みパッケージの詳細情報を表示
pkg info -afすべての導入済みパッケージの詳細情報を表示

さらに独自パッケージサーバーを立てる場合、以下を追加で使う位でしょうか。

pkg repo <リポジトリー作成ディレクトリー>リポジトリー情報を作成
pkg create <パッケージ名>パッケージの作成

portmaster を利用する場合 portmaster -g でパッケージの作成を行ってくれるので、この場合は pkg create する必要はありません。

また、独自パッケージサーバーを立てる場合に配下サーバー群がリリースやアーキテクチャーが共通である場合、ABI に合わせたディレクトリーなどを作成せず、単純に Web サーバーでパッケージとカタログをべたに並べて公開するだけでも構いません。この場合、FreeBSD.conf は以下のような形となります。

FreeBSD: {
	url: "http://pkg.example.local/",
	mirror_type: "NONE",
	enabled: yes
}

独自パッケージサーバーは、面倒であれば /usr/ports/packages/All を Web サーバーのルートとして公開するようにし、portmaster -g の後で pkg repo /usr/ports/packages/All する程度です。(# cd /usr/ports/packages/All && pkg repo . でも構いません)

ただし、pkg upgrade した際に新しいものを見つけてくれなかったりするので、この場合は同じソフトの古いバージョンを削除した後、pkg repo を実行してカタログをリフレッシュすることで反映できます。