pkg_installについて

Last Update


  1. インストール
  2. pkg_add(1)
  3. pkg_admin(1)
  4. pkg_delete(1)
  5. pkg_create(1)

インストール

NetBSDではベースシステムに含まれている。pkgtools/pkg_installパッケージをインストールすることで、NetBSD以外のシステムにインストールしたりベースシステムのより新しいバージョンのpkg_*を使用できる。

pkg_add(1)

pkg_add(1)はパッケージのインストールに使われる。pkgsrcでmake installすると裏で自動的に実行されるが、たまにパッケージを手動でインストールする場面もある。man(1)のEXAMPLESにあるように、パッケージを配布しているURLを環境変数PKG_PATHに指定すると、パッケージをそのURLから探しインストールできる。

In all cases, pkg_add will try to install binary packages listed in dependencies list.

You can specify a compiled binary package explicitly on the command line.

# pkg_add /usr/pkgsrc/packages/All/tcsh-6.14.00.tgz

If you omit the version number, pkg_add will install the latest version available. With -v, pkg_add emits more messages to terminal.

# pkg_add -v /usr/pkgsrc/packages/All/unzip

You can grab a compiled binary package from remote location by specifying a URL. The base URL can also be provided by the configuration variable, PKG_PATH.

# pkg_add -v ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/All/firefox-2.0 .0.4.tgz

# export PKG_PATH=ftp://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/i386/3.1_2007Q2/All # pkg_add -v firefox

Jordan Hubbard, John Kohl, Hubert Feyrer, Thomas Klausner, Joerg Sonnenberger, PKG_ADD(1), General Commands Manual, 2010

pkg_admin(1)

pkg_admin(1)は主に脆弱性のあるパッケージを見つけて、更新すべきパッケージを知るために使う。root権限で以下のように実行すると、どのパッケージがどのような脆弱性を抱えているのかがわかる。

# pkg_admin fetch-pkg-vulnerabilities
# pkg_admin audit
Package libxslt-1.1.30 has a insufficiently-random-numbers vulnerability, see https://nvd.nist.gov/vuln/detail/CVE-2015-9019
Package git-base-2.14.1nb2 has a command-injection vulnerability, see https://nvd.nist.gov/vuln/detail/CVE-2017-14867
Package libxml2-2.9.5 has a denial-of-service vulnerability, see https://nvd.nist.gov/vuln/detail/CVE-2017-8872

libxsltとgit-base、libxmlパッケージに脆弱性があるとわかる。

脆弱性のあるパッケージはpkgsrcからインストールできないようになっているが、脆弱性があると認識した上でパッケージをインストールするには/etc/mk.confにALLOW_VULNERABLE_PACKAGES=yesを追加する。

pkg_delete(1)

pkg_delete(1)は与えられたパッケージ名をデータベース(標準では/var/db/pkg)から探し、あれば削除する。pkgsrcでmake installを実行してインストールしたパッケージの場合、削除したいパッケージのディレクトリまで移動しmake deinstallを実行することもできる。

たとえばfirefoxパッケージを削除するときは下記のどちらかを実行する。

# pkg_delete firefox
# cd /usr/pkgsrc/www/firefox
# make deinstall

pkg_create(1)

pkg_create(1)はその名の通りパッケージを作る。/usr/pkgsrc/packages/Allにあるtarballはpkg_create(1)によって生成されている。

pkg_create(1)はパッケージに関する情報を含んだファイル(メタデータ)を必要とする。

メタデータ 内容
+BUILD_INFO ビルドした日時、コンパイラの種類とバージョン、コンパイラのフラグ、ライセンス……といったビルド環境の情報
+BUILD_VERSION PLIST(パッケージングされてるソフトウェアの名前やパスのリスト)やパッチファイルなどのバージョン
+INSTALL pkg_add(1)がパッケージの展開前・展開後に実行するスクリプト
+DEINSTALL pkg_delete(1)がパッケージの削除前・削除後に実行するスクリプト
+SIZE_ALL 依存しているパッケージも含め、インストールされる全ファイルの大きさの合計
+SIZE_PKG インストールされる全ファイルの大きさの合計
+COMMENT パッケージのコメント
+DESC パッケージの詳細
+CONTENTS インストールされるファイル名とそのパスのリスト

pkg_info(1)

pkg_info(1)はパッケージの情報を表示する。マニュアルを読むとオプションの数が多いものの、大抵の場合はオプションを何も付けずに実行するだけで済む。

特定のファイルがどのパッケージに格納されているのかを調べるには-Feオプションを使う。

$ pkg_info -Fe /usr/pkg/bin/vim
8.1.0216

特定のファイルを提供しているパッケージの、提供しているファイルの一覧を調べるには-LFオプションを使う。

$ pkg_info -LF /usr/pkg/bin/vim
Information for vim-8.1.0216:

Files:
/usr/pkg/bin/rview
/usr/pkg/bin/rvim
/usr/pkg/bin/vim