FreeBSD Daily Topics

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

この記事を読むのに必要な時間:およそ 1.5 分

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)の登場によって管理方法が大きく変わることになるとみられます。

コメント

コメントの記入