5.5. pkgng によるバイナリ package の管理
戻る | 第5章 アプリケーションのインストール - packages と ports | 次へ

## 5.5. pkgng によるバイナリ package の管理

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 のみをインストールします。

### 5.5.1. pkgng 入門

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 を用いるように設定してください。

WITH_PKGNG= yes

### 5.5.2. pkgng 環境の設定

pkgng package 管理システムでは、 ほとんどのコマンドに対して package リポジトリを使います。 デフォルトの package リポジトリは `/usr/local/etc/pkg.conf` または `PACKAGESITE` 環境変数で定義されます。 この環境変数は、設定ファイルを上書きします。

その他の pkgng の設定オプションは、pkg.conf(5) に記述されています。

### 5.5.3. 基本的な pkgng の操作

pkgng の利用情報は、 man.pkg(8) のマニュアルページや、 `pkg` を引数なしに実行すると表示されます。

各 pkgng コマンドの引数は、 コマンドに固有なマニュアルページに記述されています。 たとえば、`pkg install` のマニュアルページを読むには、 以下を実行してください。

`#` `pkg help install`
`#` `man pkg-install`

#### 5.5.3.1. pkgng を使ってインストールされた package の情報を得るには

`pkg info` を実行すると、 システムにインストールされている package 情報が得られます。 pkg_info(1) 同様、すべての package のバージョン、 および説明の一覧が表示されます。

ある特定の package の情報が必要であれば、 以下を実行してください。

`#` `pkg info `packagename``

たとえば、システムにインストールされている pkgng の情報を調べるには、 以下のように実行してください。

`#` `pkg info pkg` pkg-1.0.2 New generation package manager

#### 5.5.3.2. pkgng を用いた packages のインストールと削除

通常、ほとんどの 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... done

#### 5.5.3.3. pkgng による package のアップグレード

`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

#### 5.5.3.4. pkgng による package の検証

時折、Ports Collection に含まれているソフトウェアに脆弱性が見つかることがあります。 pkgng は、`ports-mgmt/portaudit` package 同様の検証機能を持っています。 システムにインストールされているソフトウェアを検証するには、 以下のように実行してください。

`#` `pkg audit -F`

### 5.5.4. 高度な pkgng の利用

#### 5.5.4.1. pkgng によるリーフ依存 ports の自動削除

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

#### 5.5.4.2. pkgng package データベースのバックアップ

伝統的な 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``

#### 5.5.4.3. 古くなった pkgng package の削除

デフォルトでは、pkgng はキャッシュディレクトリにバイナリ packages を保存します。 このディレクトリは、pkg.conf(5) の `PKG_CACHEDIR` 変数で定義されます。 `pkg upgrade` を使って packages をアップグレードする際には、 アップグレードされた package の古いバージョンは自動的には削除されません。

システムから古いバイナリ package を削除するには、 以下を実行してください。

`#` `pkg clean`

#### 5.5.4.4. pkgng package メタデータの変更

歴史的に 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``

戻る | 上に戻る | 次へ
5.4. バイナリ packages の利用 | ホーム | 5.6. Ports Collection の利用

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。