NetBSDではベースシステムに含まれています。pkgtools/pkg_installパッケージをインストールすることで、NetBSD以外のシステムにインストールしたりベースシステムのより新しいバージョンのpkg_*を利用したりできます。
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/unzipYou 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
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)
は与えられたパッケージ名をデータベース(標準では/var/db/pkg)から探し、あれば削除します。pkgsrcでmake install
を実行してインストールしたパッケージの場合、削除したいパッケージのディレクトリまで移動しmake deinstall
を実行できます。
たとえばfirefoxパッケージを削除するときは下記のどちらかを実行します。
# pkg_delete firefox
# cd /usr/pkgsrc/www/firefox
# make deinstall
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)
はパッケージの情報を表示します。マニュアルを読むとオプションの数が多いものの、大抵の場合はオプションを何も付けずに実行するだけで済むでしょう。
特定のファイルがどのパッケージに格納されているのかを調べるには-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