pkgng は、FreeBSD における伝統的な pkg_install 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
注意: pkgng package 管理ユーティリティは、 FreeBSD�7.X および FreeBSD�8.0 には対応していません。
FreeBSD のインストールがすでに行われているようなシステムでは、 pkg_install package データベースを新しいフォーマットへ変換する必要があります。 変換を行うには以下を実行してください。
# pkg2ng
このステップは、 サードパーティ製ソフトウェアがまだインストールされていないような、 新しくインストールされた直後のシステムでは必要ありません。
重要項目: このステップは非可逆です。 一度 package データベースを pkgng フォーマットへと変換したら、pkg_install ツールを使うべきではありません。
注意: package データベースを変換する際には、 新しいバージョンへのデータ変換に伴ったエラーが出力されることがあります。 通常、これらのエラーは無視して構いませんが、 pkg2ng 終了後に表示される、 変換に失敗したサードパーティ製ソフトウェアの一覧については、 これらのソフトウェアを手動で修正する必要があります。
FreeBSD のバージョンが 10.X より前であれば、 以下の行を /etc/make.conf に追加して、 FreeBSD�Ports Collection がソフトウェアの登録に、 pkg_install ではなく pkgng を用いるように設定してください。
WITH_PKGNG= yes
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
項5.5.2 で説明した通り、 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... done
pkg 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... done
時折、Ports Collection に含まれているソフトウェアに脆弱性が見つかることがあります。 pkgng は、ports-mgmt/portaudit package 同様の検証機能を持っています。 システムにインストールされているソフトウェアを検証するには、 以下のように実行してください。
# pkg audit -F
package を削除すると、不必要な依存 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
pkg_install 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 に関する質問がある場合には、ドキュメント を読んだ上で <[email protected]> まで (英語で)
連絡してください。
本文書に関する質問については、<[email protected]> まで電子メールを (英語で)
送ってください。