核心升級後執行 rpm 指令出現 rpmdb: unable to join the environment、db4 error(11) 等錯誤,原因在於舊版 RPM 資料庫格式與新核心 NPTL 執行緒庫不相容。設定 LD_ASSUME_KERNEL 強制使用舊版執行緒模型即可暫時繞過。
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
export LD_ASSUME_KERNEL=2.2.5
# 或
export LD_ASSUME_KERNEL=2.4.19
版本號視 glibc 支援範圍而定,通常 2.2.5 或 2.4.19 皆可嘗試。
編輯 /etc/profile 或 /etc/bashrc,加入:
export LD_ASSUME_KERNEL=2.2.5
重新登入或 source /etc/profile。
rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
rpmdb_verify Packages
若仍失敗,考慮從備份還原 /var/lib/rpm/ 或重新安裝 rpm 套件。
LD_ASSUME_KERNEL 為相容性權宜之計,長期應升級 RPM 至支援新核心執行緒庫的版本。