FreeBSD Daily Topics

2013年11月5日次世代パッケージ管理システムpkg(8)、バイナリパッケージ提供開始

ports

Official FreeBSD Binary Packages now available for pkgng

これまで開発が続けられてきた次世代パッケージ管理システムの公式バイナリパッケージの提供が開始されました。FreeBSD 10.0-RELEASE以降はこの新しいパッケージ管理システムがデフォルトのパッケージ管理システムとなります。インストール、アンインストール、管理、アップグレードなどの操作をpkg(8)コマンドで実施できます。

提供されているバイナリパッケージはamd64およびi386を対象としています。サポートしているバージョンはFreeBSD 8.3、8.4、9.1、9.2、10.0、11-CURRENTです。バイナリパッケージはPorts Collectionから週に1回のペースでビルドして提供されます。ビルドは毎週水曜日の午前1時から開始され、数日後にはリポジトリに反映される見通しです。

FreeBSD 10.0よりも前のバージョンでpkg(8)を使用するには、まず次の設定を/etc/make.confへ追加します。

/etc/make.confへ追加する設定
WITH_PKGNG=yes

Ports Collectionを最新の状態にアップグレードしてからpkg(8)をインストールします。

最新のPorts Collectionからpkg(8)をインストール
# portsnap fetch extract update
...
# cd /usr/ports/ports-mgmt/pkg/
# make install clean

公式バイナリパッケージを使用するには少なくとも1.1.4_8以降のバージョンのpkg(8)が必要です。

pkg(8)のバージョンを確認
# pwd
/usr/ports/ports-mgmt/pkg
# make package-name
pkg-1.1.4_8
#

これまで実験的にpkg(8)を使っていたという場合には/usr/local/etc/pkg.confファイルに設定を書き込んでいたと思います。公式のバイナリパッケージを使用する場合にはこのファイルは削除します。または少なくとも/usr/local/etc/pkg.confファイルからリポジトリに関する設定(PACKAGESITE、MIRROR_TYPE、PUBKEY)を削除します。

次に/usr/local/etc/pkg/repos/FreeBSD.confというファイルを作成します。中身は次のようにします。

/usr/local/etc/pkg/repos/FreeBSD.confファイルの中身
FreeBSD: {
  url: "http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: "yes"
}
pkg2ng(8)で従来のパッケージ情報をpkg(8)向けに変更
# pkg2ng

これでpkg(8)を使い出す準備完了です。次のようにコマンドを実行すれば最新のバイナリパッケージで振るアップデートできます。依存関係などもあるので最初のアップデートには-fを指定してフルアップデートを実施した方がよいと思います。

pkg(8)バイナリパッケージへフルアップデート
# pkg upgrade -f

現在のタイミングですと、perlのパッケージが衝突してアップデートできない、といった旨の表示がされるのではないかと思います。その場合、一旦perlを強制アンインストールしてからフルアップデートを実施するとうまくいくケースが多いと思います。

衝突しているperlを強制アンインストール
# pkg remove -f perl5.14-5.14.4_2

インストールされているperlのパッケージ名は次のように調べます。

インストールされているperlのパッケージ名を調べる
# pkg info | grep perl
perl5.14-5.14.4_2              Practical Extraction and Report Language
#

フルアップデートを実施したあとは次のように不要になったパッケージを自動削除しておきます。依存関係でインストールされたものの対象がアンインストールされるなどして不要になっているパッケージを自動的に探しだして削除してくれます。

不要なパッケージをアンインストール
# pkg autoremove

pkg(8)はPorts Collectionとシームレスに統合していますので、pkg(8)とPorts Collectionとの利用を混在させることができます。大半のソフトウェアはpkg(8)でインストールしておき、ビルドオプションを指定する必要があるものは後からPorts Collection経由でインストールし直す、といった作業をすることが増えるのではないかと思います。

これまでPorts Collectionをベースとしたソフトウェアの管理を実施してきたようなケースでは、pkg(8)の登場によって管理方法が大きく変わることになるとみられます。

おすすめ記事

記事・ニュース一覧