apt-key 及 /etc/apt/trusted.gpg 被棄用
apt update 提示訊息
Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
源由
不同來源的金鑰沒有被區別,導致可以從來源 A 接收由 B 金鑰簽名的套件。
替換指令
金鑰
# 原本
wget -qO - https://domain/filename.asc | apt-key add -
# 換成這個 (自己改檔名)
wget -qO - https://domain/filename.asc | gpg --dearmor > /usr/share/keyrings/filename.gpg
# 或是這個 (方便補 sudo)
wget -qO - https://domain/filename.asc | gpg --dearmor | tee /usr/share/keyrings/filename.gpg > /dev/null
存放於 /usr/share/keyrings 下面的金鑰不會自動被 apt 信任,後面說明如何設定。
存放於 /etc/apt/trusted.gpg.d 下面的金鑰會自動被 apt 信任。
軟體來源
# 原本
deb https://domain/...
# 換成 (路徑換成上一章節的儲存路徑)
deb [signed-by=/usr/share/keyrings/filename.gpg] https://domain/...
棄用 /etc/apt/trusted.gpg
# 列出現存金鑰,等等只需要動 /etc/apt/trusted.gpg 那部份的金鑰
$ apt-key list
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2020-01-01 [SC]
AAAA BBBB CCCC DDDD EEEE 0000 1111 2222 3333 4444
uid [ 未知 ] Name <username@domain>
...
# 逐一匯出金鑰
# 注意:指定金鑰是取其 id 的結尾 8 個字,而不是常見的取開頭!
apt-key export 33334444 | gpg --dearmour -o /usr/share/keyrings/filename.gpg
...
# 更改軟體來源設定 (見前面章節說明)
vim /etc/apt/source.list.d/filename.list
# 刪除 /etc/apt/trusted.gpg
rm /etc/apt/trusted.gpg
Leave a Comment