雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2014-08-28 [長年日記]

[FreeBSD] いまさら聞けないpkgngの話

pkg_install EOL is scheduled for 2014-09-01. Please migrate to pkgng
 http://blogs.freebsdish.org/portmgr/2014/02/03/time-to-bid-farewell-to-the-old-pkg_-tools/

というわけで、夏休み終盤の小学生よろしく一通り使い方のお勉強。

コンパイルオプションとかの関係上、管理には引き続きportmasterを使うつもりなので、調査系の作業を中心に。

移行

その前にまずはpkgngの環境に移行しないといけません。作業自体は簡単で、以下のコマンドを実行するだけでした。

# portmaster ports-mgmt/pkg
# echo 'WITH_PKGNG=yes' >> /etc/make.conf
# pkg2ng

これで/var/db/pkg以下にあったファイル形式の情報は更新されなくなり、/var/db/pkg/local.sqlite (SQLite 3.x database)に保存されるようになるようです。

% sqlite3 /var/db/pkg/local.sqlite 
sqlite> .schema
 :
sqlite>(そっと).q

するのはお約束でしょうか。

コマンド一覧

以下、とりあえずよく使いそうなコマンドをリストアップしてみました。

`border`

pkgngpkg_*Oldtimer
パッケージ一覧pkg infopkg_infols /var/db/pkg
サマリー表示pkg info [パッケージ名]pkg_info '[パッケージ名]>0'(((
親パッケージの一覧 pkg info -d [パッケージ名]pkg_info -r '[パッケージ名]>0' grep @pkgdep /var/db/pkg/[パッケージ名]/+CONTENTS
小パッケージの一覧pkg info -r [パッケージ名] pkg_info -R '[パッケージ名]>0' cat/var/db/pkg/[パッケージ名]/+REQUIRED_BY
ファイル一覧pkg info -l [パッケージ名]pkg_info -L '[パッケージ名]>0'grep -v ^@ /var/db/pkg/[パッケージ名]/+CONTENTS
データベース保存pkg backup -d [ダンプファイル]cd /var/db; tar zcf [ダンプファイル] pkg
データベース復旧pkg backup -r [ダンプファイル]cd /var/db; tar zxf [ダンプファイル]
UPDATINGの確認pkg updating more /usr/ports/UPDATING
整合性のチェックpkg check -Bdrs pkgdb -F
脆弱性の監査pkg audit -F portaudit -Fda

cat /var/db/pkg/[パッケージ名]/+COMMENT

cat /var/db/pkg/[パッケージ名]/+DESC

)))

あと、パイプで処理したい時などには"pkg query"コマンドが便利そうでした。例として、パッケージでインストールされているファイルのMD5ハッシュを取得するには、

 pkg query '%Fp' [パッケージ名] | xargs md5

とかやるとよいようです。詳しくはマニュアル(pkg-query(8))で。