メンテナンス・トラブルシュート - pkg・ports アップデート関連 - pkg-2.7.5 → 2.8.0_1


 


1. 概要
2. 状況
3. 対策
4. 参考サイト

1. 概要

 発生は、2026年7月21日。  「FreeBSD 15.1-RELEASE-p1」上でのことです。

2. 状況


portversion -v | grep '<'

[Reading data from pkg(8) ... - 871 packages found - done]
pkg-2.7.5                   <  needs updating (port has 2.8.0_1)
 という状況のため。

env BATCH=yes portupgrade -rR pkg
 すると。

・・・	略	・・・

--->  Installing the new version via the port
===>  Deinstalling for pkg
pkg-static: sqlite error while executing SELECT DISTINCT(p.id), origin, p.name, p.name as uniqueid, version, comment, desc, message, arch, maintainer, www, prefix, flatsize, licenselogic, automatic, locked, time, manifestdigest, vital FROM packages AS p LEFT JOIN pkg_categories ON p.id = pkg_categories.package_id LEFT JOIN categories ON categories.id = pkg_categories.category_id LEFT JOIN flavors ON flavors.package_id = p.id  WHERE (p.name GLOB ?1 OR p.name || '-' || version GLOB ?1) ORDER BY p.name in file pkgdb.c:100: no such table: flavors
pkg-static: sqlite error while executing SELECT DISTINCT(p.id), origin, p.name, p.name as uniqueid, version, comment, desc, message, arch, maintainer, www, prefix, flatsize, licenselogic, automatic, locked, time, manifestdigest, vital FROM packages AS p LEFT JOIN pkg_categories ON p.id = pkg_categories.package_id LEFT JOIN categories ON categories.id = pkg_categories.category_id LEFT JOIN flavors ON flavors.package_id = p.id  WHERE (p.name GLOB ?1 OR p.name || '-' || version GLOB ?1) ORDER BY p.name in file pkgdb.c:100: no such table: flavors
===>   Deinstalling
No packages matched for pattern 'pkg'

Checking integrity... done (0 conflicting)
1 packages requested for removal: 0 locked, 1 missing
*** Error code 1

Stop.
make[1]: stopped making "deinstall install" in /usr/ports/ports-mgmt/pkg
*** Error code 1

Stop.
make: stopped making "reinstall" in /usr/ports/ports-mgmt/pkg
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20260721-47353-pmsv3v env UPGRADE_TOOL=portupgrade UPGRADE_PORT=pkg-2.7.5 UPGRADE_PORT_VER=2.7.5 make reinstall
--->  Restoring the old version
Installing pkg-2.7.5...
Extracting pkg-2.7.5: 100%
pkg: warning: database version 42 is newer than libpkg(3) version 39, but still compatible
** Fix the installation problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! ports-mgmt/pkg (pkg-2.7.5)    (install error)
 てなことになります。  「Gemini」伍長に尋ねると。
ログにあるこのエラーがすべてを物語っています。

pkg-static: sqlite error ... no such table: flavors
pkg: warning: database version 42 is newer than libpkg(3) version 39

pkg 2.7.5 のアンインストールによって、古い pkg-static(DBバージョン39想定)が使われました。しかし、すでに /var/db/pkg/local.sqlite は新しいスキーマ(バージョン42 / flavors テーブル等が存在する前提)に更新済みでした。

そのため、古い pkg-static が SQLite を読みに行こうとして「そんなテーブル(flavors)存在しないぞ!」とクラッシュし、アンインストール・再インストールのループ処理が失敗しています。
 ということらしい。

3. 対策

 「portupgrade」を使わずに、きっちり「make」します。

cd /usr/ports/ports-mgmt/pkg

make clean

make NO_DIALOG=yes

make reinstall FORCE_PKG_REGISTER=yes
 これで、更新できました。

4. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。

audiobook.jp
5G CONNECT
EaseUS
アフィリエイトのアクセストレード
それがだいじWi-Fi
Amazonギフトカード
損保との違い
健康サポート特集
葬送のフリーレン Prime Video
earthcar(アースカー)
ネットオークションの相場、統計、価格比較といえばオークファン
ハイスピードプラン
【usus ウズウズ】
JETBOY
薬屋の独り言
ベルリッツ
U-NEXT
TikTok Shop 【リピート用プログラム】
サウンドハウス