Memperbaiki GPG: Keydb Search Failed
Table of Contents
Latar Belakang Masalah
Saat akan membuka file yang dienkripsi dengan GnuPG (.gpg), saya mendapati error sebagai berikut.
[bandithijo@MacBookAir ~]$ gpgconf --kill all
[bandithijo@MacBookAir ~]$ gpgconf --launch gpg-agent
[bandithijo@MacBookAir ~]$ pass -c 'BanditHijo/example.com/bandithijo@example.com'
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: Note: database_open 134217901 waiting for lock (held by 1909) ...
gpg: keydb_search failed: Operation timed out
gpg: public key decryption failed: No secret key
gpg: decryption failed: No secret key
Ini adalah masalah klasik dari keyboxd (komponen baru di GnuPG 2.4+ yang bertugas mengelola public keyring lewat SQLite, menggantikan pubring.kbx).
Error ini disebabkan karena terjadi proses locking dari session yang crash. Hal ini membuat key tetap dalam keadaan terkunci, meskipun proses aslinya sudah mati/terminated. Yang biasanya menyebabkan hal ini adalah karena kunci/lock dipegang oleh PID yang ternyata sudah tidak aktif. Biasanya karena mesin sempat hang->force-shutdown. Solusinya sesederhana menghapus file lock nya secara manual.
Pemecahan Masalah
1. Matikan semua proses dari komponen gpg
Matikan semua komponen gpg yang terlibat secara eksplisit, termasuk keyboxd.
$ gpgconf --kill gpg-agent
$ gpgconf --kill keyboxd
$ gpgconf --kill dirmngr
$ pkill -9 -f gpg-agent
$ pkill -9 -f keyboxd
info
gpgconf --kill allterkadang tidak dapat menjangkau keyboxd, tergantung versi GnuPG-nya.
2. Hapus lock file yang stale
Karena yang terkunci adalah file lock, biasanya terdapat ekstensi .lock pada bagian akhir nama file db nya (misal: pubring.db.lock).
$ ls -la ~/.gnupg/public-keys.d/
$ rm -f ~/.gnupg/public-keys.d/pubring.db.lock
3. Hapus file .lock yang lain
Jika ada file dengan ekstensi .lock yang lain di ~/.gnupg/ (bukan di dalam public-key.d/), sebaiknya dihapus juga.
$ find ~/.gnupg/ -name '*.lock' -delete
4. Restart agent
Langkah terakhir tinggal restart agent.
$ gpgconf --launch gpg-agent
Selesi!
Referensi
-
iamyaash. GPG: Fix ‘database_open waiting for lock. Des 2025
Diakses tanggal: 2026-08-01 -
Tanin Srivaraphong. gpg: Note: database_open…waiting for lock (held by 30991)… Medium, Sep 2025
Diakses tanggal: 2026-08-01 -
thelinux.pro. Fixing GPG Lock Issues. Jun 2024
Diakses tanggal: 2026-08-01 -
Priyansh Khodiyar. Git commit signing and Troubleshooting GPG Key Issues. Medium, Mar 2025
Diakses tanggal: 2026-08-01