修復 Ubuntu 中的 「Key is stored in legacy trusted.gpg keyring」 問題
如果你在 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.
首先,這不是一個錯誤,而是一個警告信息。警告並不會導致程序停止工作。即使你在更新過程中看到這個警告信息,你也可以繼續升級你的系統。
如果你不想看到這個警告信息,你可以採取一些手動步驟來擺脫它。
有兩種方法;正確的方法和快速而不優雅的方法。閱讀這兩種方法,看看你對哪一種感到滿意。
方法 1:導入密鑰(正確但複雜的方法)
首先,列出所有添加到你系統中的 GPG 密鑰。
sudo apt-key list
這將顯示一個存儲在你系統中的巨大的密鑰列表。你在這裡要做的是尋找與警告信息相關的密鑰。
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 文件是否存在來驗證。
再次運行更新,現在你應該不會再看到警告信息了。
方法 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」 的警告信息。
總結
我曾經寫過一篇關於 棄用 apt-key 的詳細文章。顯然,那篇文章讓一些讀者感到困惑,因此我寫了這篇文章,給他們提供擺脫該信息的直接步驟。
正如我之前所說,這是一個警告信息,目前可以忽略。解決這個問題的責任在於外部軟體開發者和 Ubuntu 開發者。外部軟體開發者應該確保他們的 GPG 密鑰不再被添加到 /etc/apt/trusted.gpg
文件中。
終端用戶不應該為他們的懶惰而承擔痛苦。
那麼,你是用哪種方法來擺脫 「key is stored in legacy」 的警告信息的呢?第一個方法還是第二個方法?
via: https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/
作者:Abhishek Prakash 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive