Linux中國

修復 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.

ubuntu key is stored legacy

首先,這不是一個錯誤,而是一個警告信息。警告並不會導致程序停止工作。即使你在更新過程中看到這個警告信息,你也可以繼續升級你的系統。

如果你不想看到這個警告信息,你可以採取一些手動步驟來擺脫它。

有兩種方法;正確的方法和快速而不優雅的方法。閱讀這兩種方法,看看你對哪一種感到滿意。

方法 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

在我的例子中,倉庫有 packagecloudslacktechnologies 等關鍵詞。它顯示在 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」 的警告信息的呢?第一個方法還是第二個方法?

via: https://itsfoss.com/key-is-stored-in-legacy-trusted-gpg/

作者:Abhishek Prakash 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國