
如果你在 Ubuntu 22.04 及以后的版本中使用 PPA 或添加外部倉庫,你有可能會看到這樣的信息:
W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

ubuntu key is stored legacy
首先,這不是一個錯誤,而是一個警告信息。警告并不會導致程序停止工作。即使你在更新過程中看到這個警告信息,你也可以繼續升級你的系統。
如果你不想看到這個警告信息,你可以采取一些手動步驟來擺脫它。
有兩種方法;正確的方法和快速而不優雅的方法。閱讀這兩種方法,看看你對哪一種感到滿意。
方法 1:導入密鑰(正確但復雜的方法)
首先,列出所有添加到你系統中的 GPG 密鑰。
這將顯示一個存儲在你系統中的巨大的密鑰列表。你在這里要做的是尋找與警告信息相關的密鑰。
abhishek@itsfoss:~$ sudo apt-key list
[sudo] password for abhishek:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12]
418A 7F2F B0E1 E6E7 EABF 6FE8 C2E7 3424 D590 97AB
uid [ expired] packagecloud ops (production key) <abhishek@itsfoss>
pub rsa4096 2016-02-18 [SCEA]
DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD
uid [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <abhishek@itsfoss>
sub rsa4096 2016-02-18 [SEA]
/etc/apt/trusted.gpg.d/audio-recorder-ubuntu-ppa.gpg
----------------------------------------------------
pub rsa4096 2015-08-30 [SC]
42EF 41ED 9813 B713 D4F1 F06D 5CF1 2638 ACF9 669F
uid [ unknown] Launchpad PPA for Team audio-recorder
/etc/apt/trusted.gpg.d/danielrichter2007-ubuntu-grub-customizer.gpg
-------------------------------------------------------------------
pub rsa1024 2010-10-08 [SC]
59DA D276 B942 642B 1BBD 0EAC A8AA 1FAA 3F05 5C03
你要怎么做?仔細閱讀該信息:
W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy
在我的例子中,倉庫有 ??packagecloud?
?、??slacktechnologies?
? 等關鍵詞。它顯示在 ??apt-key?
? 列表輸出的頂部。在你的情況下,你可能需要滾動一下。
在這種罕見的情況下,由 Slack 添加的外部倉庫,有兩個 GPG 密鑰。其中一個已經過期,我會忽略它。你可能不會有這樣的情況。
你應該看到 ??pub?
? 后一行的最后 8 個字符(不包括空格):
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2014-01-13 [SCEA] [expired: 2019-01-12]
418A 7F2F B0E1 E6E7 EABF 6FE8 C2E7 3424 D590 97AB
uid [ expired] packagecloud ops (production key) <abhishek@itsfoss>
pub rsa4096 2016-02-18 [SCEA]
DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD
uid [ unknown] https://packagecloud.io/slacktechnologies/slack (https://packagecloud.io/docs#gpg_signing) <abhishek@itsfoss>
因此,從 ??DB08 5A08 CA13 B8AC B917 E0F6 D938 EC0D 0386 51BD?
? 這行中,我將提取最后8個字符 ??0386 51BD?
?,去掉空格,然后用它來導入 ??/etc/apt/trusted.gpg.d?
? 目錄下專用文件中的 GPG 密鑰:
sudo apt-key export 038651BD | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/slack.gpg
我在這里創建了一個新的文件 ??slack.gpg?
?,以防你沒有注意到它。我把它命名為 ??slack.gpg?
? 是因為它與我之前安裝的 Slack 應用有關。文件名并不重要,但它對識別有好處。
如果命令運行成功,你將不會看到任何信息。你可以通過檢查新創建的 gpg 文件是否存在來驗證。

import gpg key to trusted ubuntu
再次運行更新,現在你應該不會再看到警告信息了。
方法 2:復制到 trusted.gpd.d 目錄中(快速而不優雅的方法)
如果你覺得手動做上面的事情不舒服,那么,你可以忽略這個警告信息。我的意思是,忽略它總是一種選擇。
另一個選擇是把 ??/etc/apt/trusted.gpg?
? 文件復制到 ??/etc/apt/trusted.gpg.d?
? 目錄。畢竟,Ubuntu 只是抱怨說它需要 ??/etc/apt/trusted.gpg.d?
? 目錄下的 GPG 密鑰。
你仍然要使用終端。打開它并使用以下命令:
sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d
現在,如果你運行更新,你就不會再看到 “Key is stored in legacy trusted.gpg keyring” 的警告信息。

quick dirty way to fix apt key stored legacy
總結
我曾經寫過一篇關于 ??棄用 apt-key?? 的詳細文章。顯然,那篇文章讓一些讀者感到困惑,因此我寫了這篇文章,給他們提供擺脫該信息的直接步驟。
正如我之前所說,這是一個警告信息,目前可以忽略。解決這個問題的責任在于外部軟件開發者和 Ubuntu 開發者。外部軟件開發者應該確保他們的 GPG 密鑰不再被添加到 ??/etc/apt/trusted.gpg?
? 文件中。
終端用戶不應該為他們的懶惰而承擔痛苦。
那么,你是用哪種方法來擺脫 “key is stored in legacy” 的警告信息的呢?第一個方法還是第二個方法?