pkg_installについて


  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_VERSIONPLIST(パッケージングされてるソフトウェアの名前やパスのリスト)やパッチファイルなどのバージョン
+INSTALLpkg_add(1)がパッケージの展開前・展開後に実行するスクリプト
+DEINSTALLpkg_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