如何在 Debian 上重新生成 /etc/apt/trustdb.gpg?

adr*_*nos 10 debian apt gpg

假设有人删除(或损坏)了以下文件。

/etc/apt/trustdb.gpg
Run Code Online (Sandbox Code Playgroud)

怎么再生呢?

slm*_*slm 9

我找到了这两种方法。第一种似乎是最安全的方法。

方法 #1 - 使用 apt

$ sudo -i
$ apt-get clean
$ cd /var/lib/apt
$ mv lists lists.old
$ mkdir -p lists/partial
$ apt-get clean
$ apt-get update
Run Code Online (Sandbox Code Playgroud)

方法#2 - apt-key

您可以使用此命令获取apt-key生成相应gpg命令以下载适用于 Canonical 的相应密钥。

$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
gpg: requesting key 437D05B5 from hkp server keyserver.ubuntu.com
gpg: key 437D05B5: "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" 25 new signatures
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: new signatures: 25
Run Code Online (Sandbox Code Playgroud)

发生了什么?

如果你使用这个命令,你可以窥探一下第二种方法:

$ sudo -i
$ bash -x apt-key update |& less
+ set -e
+ unset GREP_OPTIONS
++ mktemp
+ SECRETKEYRING=/tmp/tmp.ZhVikJSB3s
+ trap 'rm -f '\''/tmp/tmp.ZhVikJSB3s'\''' 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+ GPG_CMD='gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.ZhVikJSB3s'
++ id -u
+ '[' 0 -eq 0 ']'
++ apt-config shell TRUSTDBDIR Dir::Etc/d
+ eval 'TRUSTDBDIR='\''/etc/apt/'\'''
...
Run Code Online (Sandbox Code Playgroud)

这个命令也可以作为普通用户使用,而不是 root!

$ apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5                             Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.kZ1TEwcI5s --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
gpg: requesting key 437D05B5 from hkp server keyserver.ubuntu.com
gpg: error writing keyring `/etc/apt/trusted.gpg': file write error
gpg: key 437D05B5: "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>" 26 new signatures
gpg: error reading `[stream]': file write error
gpg: Total number processed: 0
gpg:         new signatures: 26
Run Code Online (Sandbox Code Playgroud)

参考