pkgng は、FreeBSD における伝統的な package 管理ツールの置き換えであり、バイナリ packages をより早く、 より簡単に管理できるようにする数多くの機能を提供します。 pkgng の最初のリリースは 2012 年 8 月に行われました。
pkgng は ports-mgmt/portmaster
や ports-mgmt/portupgrade
などの
port 管理ツールの置き換えではありません。
ports-mgmt/portmaster
および
ports-mgmt/portupgrade
は、
サードパーティ製ソフトウェアをバイナリ packages と
Ports Collection の両形式からインストールできますが、
pkgng はバイナリ packages
のみをインストールします。
FreeBSD 9.1 以降では、 pkgng のための "ブートストラップ" ユーティリティが用意されています。 ブートストラップユーティリティは pkgng をダウンロードし、インストールします。
システムをブートストラップするためには、 以下を実行してください。
#
/usr/sbin/pkg
これより前のバージョンの FreeBSD では、Ports Collection または packages を用いてインストールする必要があります。
pkgng port をインストールするには以下を実行してください。
#
cd /usr/ports/ports-mgmt/pkg
#
make
#
make install clean
package からインストールするには以下を実行してください。
#
pkg_add -r pkg
FreeBSD のインストールがすでに行われているようなシステムでは、 pkg_install package データベースを新しいフォーマットへ変換する必要があります。 変換を行うには以下を実行してください。
#
pkg2ng
このステップは、 サードパーティ製ソフトウェアがまだインストールされていないような、 新しくインストールされた直後のシステムでは必要ありません。
このステップは非可逆です。 一度 package データベースを pkgng フォーマットへと変換したら、pkg_install ツールを使うべきではありません。
package データベースを変換する際には、
新しいバージョンへのデータ変換に伴ったエラーが出力されることがあります。
通常、これらのエラーは無視して構いませんが、
pkg2ng
終了後に表示される、
変換に失敗したサードパーティ製ソフトウェアの一覧については、
これらのソフトウェアを手動で修正する必要があります。
FreeBSD のバージョンが
10.X
より前であれば、
以下の行を /etc/make.conf
に追加して、
FreeBSD Ports Collection がソフトウェアの登録に、
pkg_install
ではなく pkgng
を用いるように設定してください。
pkgng package 管理システムでは、
ほとんどのコマンドに対して package リポジトリを使います。
デフォルトの package リポジトリは
/usr/local/etc/pkg.conf
または
PACKAGESITE
環境変数で定義されます。
この環境変数は、設定ファイルを上書きします。
その他の pkgng の設定オプションは、pkg.conf(5) に記述されています。
pkgng の利用情報は、
man.pkg(8) のマニュアルページや、
pkg
を引数なしに実行すると表示されます。
各 pkgng コマンドの引数は、
コマンドに固有なマニュアルページに記述されています。
たとえば、pkg install
のマニュアルページを読むには、
以下を実行してください。
#
pkg help install
#
man pkg-install
pkg info
を実行すると、
システムにインストールされている package 情報が得られます。
pkg_info(1) 同様、すべての package のバージョン、
および説明の一覧が表示されます。
ある特定の package の情報が必要であれば、 以下を実行してください。
#
pkg info packagename
たとえば、システムにインストールされている pkgng の情報を調べるには、 以下のように実行してください。
#
pkg info pkg
pkg-1.0.2 New generation package manager通常、ほとんどの FreeBSD ユーザは、バイナリパッケージを
pkg install
でインストールすることでしょう。packagename
#
pkg install packagename
「pkgng 環境の設定」 で説明した通り、
pkg install
はリポジトリデータを使用します。
これとは反対に、pkg-add(8) はリポジトリデータを用いなければ、
定義されている PACKAGESITE
も使いません。
そのため、依存関係は適切には追跡されず、
足りない依存についてもリモートホストからダウンロードされません。
この節では pkg install
の使用方法について説明します。
pkg add
の使用方法については pkg-add(8)
をご覧ください。
追加のバイナリ package は、
pkg install
によりインストールされます。
たとえば、
curl をインストールするには以下を実行してください。
#
pkg install curl
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:
Installing ca_root_nss: 3.13.5
Installing curl: 7.24.0
The installation will require 4 MB more space
1 MB to be downloaded
Proceed with installing packages [y/N]: y
ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00
curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Installing ca_root_nss-3.13.5... done
Installing curl-7.24.0... done新しい package と依存関係から追加された package は、 インストール済み package 一覧に表示されます。
#
pkg info
ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project
curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.0.2 New generation package manager必要のなくなった packages は、
pkg delete
を使って削除できます。
たとえば、curl が必要なくなったら、
以下のようにして削除できます。
#
pkg delete curl
The following packages will be deleted:
curl-7.24.0_1
The deletion will free 3 MB
Proceed with deleting packages [y/N]: y
Deleting curl-7.24.0_1... donepkg version
を用いて古くなった packages を見つけることができます。
ローカルに ports ツリーがない場合には、
pkg-version(8) は、リモートリポジトリのカタログを利用します。
そうでなければ、ローカルの ports ツリーを使って
package のバージョンを同定します。
pkgng を用いて package を新しいバージョンにアップグレードできます。 curl の新しいバージョンがリリースされた場合には、ローカル package を以下のようにして新しいバージョンにアップグレードできます。
#
pkg upgrade
Updating repository catalogue
repo.txz 100% 297KB 296.5KB/s 296.5KB/s 00:00
The following packages will be upgraded:
Upgrading curl: 7.24.0 -> 7.24.0_1
1 MB to be downloaded
Proceed with upgrading packages [y/N]: y
curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Upgrading curl from 7.24.0 to 7.24.0_1... donepackage を削除すると、不必要な依存 ports、たとえば上の例では
security/ca_root_nss
が残されることがあります。
これらの packages は、
インストールされたままでどこからも依存されていません。
依存のために導入され、現在は不必要になった package は、
以下のようにすると自動的に検出され、削除されます。
#
pkg autoremove
Packages to be autoremoved:
ca_root_nss-3.13.5
The autoremoval will free 723 kB
Proceed with autoremoval of packages [y/N]: y
Deinstalling ca_root_nss-3.13.5... done伝統的な package 管理システムとは異なり、 pkgng には package データベースをバックアップするメカニズムがあります。 package データベースの内容を手動でバックアップするには、 以下を実行してください。
#
pkg backup -d pkgng.db
ファイル名の pkgng.db
を適切なファイル名に置き換えてください。
さらに、pkgng は
package データベースを毎日自動的にバックアップする
periodic(8) スクリプトを含んでいます。
periodic.conf(5) の中で、
daily_backup_pkgng_enable
を
YES
に設定するとバックアップされます。
pkg_install
の定期的なスクリプトが、
package データベースを同様にバックアップすることを避けるためには、
periodic.conf(5) の中で、
daily_backup_pkgdb_enable
を
NO
に設定してください。
過去にバックアップした package データベースの中身をリストアするには、以下を実行してください。
#
pkg backup -r /path/to/pkgng.db
デフォルトでは、pkgng
はキャッシュディレクトリにバイナリ packages を保存します。
このディレクトリは、pkg.conf(5) の
PKG_CACHEDIR
変数で定義されます。
pkg upgrade
を使って packages
をアップグレードする際には、
アップグレードされた package
の古いバージョンは自動的には削除されません。
システムから古いバイナリ package を削除するには、 以下を実行してください。
#
pkg clean
歴史的に FreeBSD Ports Collection
は、メジャーバージョン番号の変更に対応できます。
pkg_install とは異なり、
pkgng には、
package の情報をアップデートするコマンドが組み込まれています。
たとえば、lang/php5
のバージョンが、もともとは
5.3
で、5.4
がリリースされたことに伴い
lang/php53
へと名前が変更される場合、
pkg_install では、
package のデータベースを、
どの port がインストール元であったかという情報を変更するために
ports-mgmt/portmaster
のような別のソフトウェアを必要とします。
ports-mgmt/portmaster
および
ports-mgmt/portupgrade
ports とは異なり、引数に与えるバージョンの新、旧の順番は異なります。
pkgng での構文は、pkg set -o
となります。category/oldport
:category/newport
たとえば、上記の例の package の情報を変更するには、 以下のように実行してください。
#
pkg set -o lang/php5:lang/php53
別の例として、lang/ruby18
を lang/ruby19
にアップデートするには、
以下のようにしてください。
#
pkg set -o lang/ruby18:lang/ruby19
最後の例として、
libglut
共有ライブラリの情報を graphics/libglut
から graphics/freeglut
へと変更するには、
以下のように実行してください。
#
pkg set -o graphics/libglut:graphics/freeglut
package の情報を変更したら、多くの場合、 情報が変更された package に依存している packages を再インストールすることが重要となります。 依存 packages を再インストールするには、 以下のように実行してください。
#
pkg install -Rf graphics/freeglut
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。