pkg は、FreeBSD における伝統的な package 管理ツールの置き換えとなる次世代の管理ツールで、 バイナリ packages をより早く、 より簡単に管理できるようにする数多くの機能を提供します。
FreeBSD のミラーサイトが提供する事前に構築されたバイナリ package のみを使いたいと考えているサイトでは、 pkg を使って package を管理するとよいでしょう。
しかしながら、 ソースまたは自分自身で用意したリポジトリから構築したサイトでは、port 管理ツール が別に必要となります。
pkg はバイナリ package のみを扱うので、 そのような管理ツールの置き換えとはなりません。 これらのツールは、ソフトウェアをバイナリ packages と Ports Collection の両形式からインストールできますが、 pkg はバイナリ packages のみをインストールします。
FreeBSD には、
pkg
およびマニュアルページをインストールするブートストラップユーティリティが用意されています。
このユーティリティは、FreeBSD 10.X
以降で動作するように設計されています。
このブートストラッププロセスは、すべての FreeBSD バージョンおよびアーキテクチャに対応しているわけではありません。 現在対応している一覧は、 https://pkg.freebsd.org/ で確認することができます。 対応していない場合には、 Ports Collection またはバイナリ package から pkg をインストールする必要があります。
システムをブートストラップするには、 以下を実行してください。
#
/usr/sbin/pkg
ブートストラッププロセスに成功するには、 インターネットへの接続が必要です。
port をインストールするには以下を実行してください。
#
cd /usr/ports/ports-mgmt/pkg
#
make
#
make install clean
古い pkg_* ツールを用いたシステムをアップグレードする際には、 新しいツールがすでにインストールされている package を認識するよう、 データベースを新しいフォーマットへと変換する必要があります。 pkg をインストールしたら、 以下のコマンドを実行して、package データベースをこれまでの伝統的なフォーマットから新しいフォーマットへと変換してください。
#
pkg2ng
このステップは、 サードパーティ製ソフトウェアがまだインストールされていないような、 新しくインストールされた直後のシステムでは必要ありません。
このステップは非可逆です。 一度 package データベースを pkg フォーマットへと変換したら、伝統的な pkg_* ツールを使うべきではありません。
package データベースを変換する際には、
新しいバージョンへのデータ変換に伴ったエラーが出力されることがあります。
通常、これらのエラーは無視して構いませんが、
pkg2ng
終了後、
変換に失敗したソフトウェアの一覧が表示されます。
これらのソフトウェアを手動で再インストールする必要があります。
FreeBSD のバージョンが
10.X
より前であれば、
以下の行を /etc/make.conf
に追加して、
Ports Collection がソフトウェアの登録に、伝統的な
package のデータベースではなく、pkg
を用いるように設定してください。
WITH_PKGNG= yes
デフォルトでは、pkg は FreeBSD の package ミラー (リポジトリ) のバイナリ package を用います。 カスタム package リポジトリの構築については、 「Poudriere を用いた package の構築」 をご覧ください。
その他の pkg の設定オプションは、pkg.conf(5) に記述されています。
pkg の利用情報は、
pkg(8) マニュアルページや、
pkg
を引数なしに実行すると表示されます。
各 pkg コマンドの引数は、
コマンドに固有なマニュアルページに記述されています。
たとえば、pkg install
のマニュアルページを読むには、
以下のコマンドのどちらかを実行してください。
#
pkg help install
#
man pkg-install
以下の節では、pkg を用いた通常のバイナリ package の管理について説明します。 各コマンドでは、カスタマイズのために、 多くのオプションが使われています。 詳細や、他の例については、 コマンドのヘルプやマニュアルページを参照してください。
Quarterly
ブランチを使うと、
ユーザは、port および package のインストールおよびアップグレードを、
より予測可能で安定して行うことができます。
基本的には、このブランチでは機能のアップデートは行われません。
Quarterly ブランチの目的は、セキュリティに関連する修正
(バージョンアップデートやコミットのバックポートなど)、
バグの修正および ports
のコンプライアンスおよびフレームワークの変更の入手です。
Quarterly ブランチは、毎年の毎四半期
(1 月、4 月、7 月および 10 月) のはじめに HEAD から作成されます。
ブランチには、作成された年 (YYYY) をよび四半期 (Q1-4)
により名前がつけられます。
たとえば、2016 年 1 月に作成された quarterly
ブランチの名前は 2016Q1 となります。
Latest
ブランチは、
最新バージョンの package をユーザに提供します。
quarterly から latest ブランチに移行するには、 以下のコマンドを実行してください。
#
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
/usr/local/etc/pkg/repos/FreeBSD.conf
ファイルを編集して、url:
行の
quarterly 文字列を
latest に変更してください。
編集後は、以下のようになります。
FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes }
最後に、以下のコマンドを実行して (latest) リポジトリのメタデータからアップデートしてください。
#
pkg update -f
オプションを使用しないで pkg info
を実行すると、
システムにインストールされているすべての package もしくは、
ある特定の package の情報が得られます。
たとえば、インストールされている pkg の情報を調べるには、 以下のように実行してください。
#
pkg info pkg
pkg-1.1.4_1
バイナリ package をインストールするには、
以下のコマンドを使ってください。
ここで packagename
は、インストールする
package の名前です。
#
pkg install
packagename
このコマンドは、リポジトリデータを使用して、 インストールすべきソフトウェアのバージョン、および、 インストールされていない依存ソフトウェアがあるかどうかを調べます。 たとえば、curl をインストールするには以下を実行してください。
#
pkg install curl
Updating repository catalogue /usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s /usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s Updating repository catalogue The following 2 packages will be installed: Installing ca_root_nss: 3.15.1_1 Installing curl: 7.31.0_1 The installation will require 3 MB more space 0 B to be downloaded Proceed with installing packages [y/N]:y
Checking integrity... done [1/2] Installing ca_root_nss-3.15.1_1... done [2/2] Installing curl-7.31.0_1... done Cleaning up cache files...Done
新しい package と依存関係から追加された package は、 インストール済み package 一覧に表示されます。
#
pkg info
ca_root_nss-3.15.1_1 The root certificate bundle from the Mozilla Project curl-7.31.0_1 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers pkg-1.1.4_6 New generation package manager
必要のなくなった packages は、
pkg delete
を使って削除できます。
たとえば、以下のようにして削除できます。
#
pkg delete curl
The following packages will be deleted: curl-7.31.0_1 The deletion will free 3 MB Proceed with deleting packages [y/N]:y
[1/1] Deleting curl-7.31.0_1... done
以下のコマンドを実行すると、 インストールされている packages が最新のバージョンにアップグレードされます。
#
pkg upgrade
このコマンドは、インストールされているソフトウェアのバージョンと、 リポジトリのカタログから利用できるバージョンとを比較し、 リポジトリからアップグレードします。
サードウェア製アプリケーションに対する脆弱性は、 定期的に見つかります。脆弱性を調べるために、 pkg は、検証機能を持っています。 システムにインストールされているソフトウェアに既知の脆弱性がないかどうかを調べるには、 以下のように実行してください。
#
pkg audit -F
package を削除すると、不必要な依存 package が残されることがあります。 依存のためにインストールされたが、 現在は不必要になった package (リーフ package) は、 以下のコマンドで自動的に検出され、削除されます。
#
pkg autoremove
Packages to be autoremoved: ca_root_nss-3.15.1_1 The autoremoval will free 723 kB Proceed with autoremoval of packages [y/N]:y
Deinstalling ca_root_nss-3.15.1_1... done
依存によりインストールされた packages は、 automatic package と呼ばれます。 非 automatic packages、 すなわち他の package からの依存ではなく、 明示的にインストールした package の一覧は以下のようにして出力できます。
#
pkg prime-list
nginx openvpn sudo
pkg prime-list
は、
/usr/local/etc/pkg.conf
で設定されているエイリアスコマンドです。
他にもシステムの package
データベースの問い合わせに用いることができる多くのコマンドが用意されています。
たとえば、pkg prime-origins
コマンドを使うと、
上記で得られた port
一覧のオリジナルの port ディレクトリを知ることができます。
#
pkg prime-origins
www/nginx security/openvpn security/sudo
この一覧と ports-mgmt/poudriere または ports-mgmt/synth といったツールを使うと、 システムにインストールされているすべての package を再構築できます。
インストールされた package に automatic のマーク付けをするには、 以下のように実行してください。
#
pkg set -A 1 devel/cmake
リーフ package や automatic としてマークされた package は、
pkg autoremove
で選択されます。
インストールされた package を 非 automatic とマークするには、以下のように実行してください。
#
pkg set -A 0 devel/cmake
伝統的な package 管理システムとは異なり、 pkg には package データベースをバックアップするメカニズムがあります。 この機能はデフォルトで有効に設定されています。
スクリプトによる定期的な
package データベースのバックアップを無効にするには、
periodic.conf(5) の中で、
daily_backup_pkgdb_enable="NO"
と設定してください。
過去にバックアップした package
データベースの中身をリストアするには、
以下のコマンドを実行してください。
以下のコマンドの /path/to/pkg.sql
については、バックアップのある場所に置き換えて実行してください。
#
pkg backup -r
/path/to/pkg.sql
システムの定期的なスクリプトによって取得されたバックアップをリストアする場合には、 リストアの前に展開しておく必要があります。
手動で pkg
データベースをバックアップするには、以下のコマンドを実行してください。
以下のコマンドの /path/to/pkg.sql
については、適切なファイル名と場所に置き換えて下さい。
#
pkg backup -d
/path/to/pkg.sql
デフォルトでは、pkg
は、pkg.conf(5) の PKG_CACHEDIR
変数で定義されるキャッシュディレクトリにバイナリ
packages を保存します。
インストールされている package の最新のコピーのみが保存されます。
古いバージョンの pkg では、
過去にインストールされたすべての package が保存されていました。
これらの古くなったバイナリ package を削除するには、
以下を実行してください。
#
pkg clean
キャッシュ全体を削除するには以下を実行してください。
#
pkg clean -a
FreeBSD Ports Collection
では、メジャーバージョン番号が変更になることがあります。
これに対応するために、pkg には、
package の情報をアップデートするコマンドが組み込まれています。
たとえば、lang/php5
が、
バージョン 5.4
を表すようになり、
lang/php5
を
lang/php53
と名前を変更する必要があるような場合に、有用です。
上記の例の 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
本文書、および他の文書は https://download.freebsd.org/ftp/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。