web-dev-qa-db-ja.com

apt-get updateで「公開鍵がありません」

apt-get update、次のエラーが発生します。

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR

(...)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553
141

他の回答は、キー '8B48AD6246925553'が示すパッケージに存在するかどうかによって、機能するかどうかにかかわらず機能します。

キーが必要な場合は、そのキーを取得する必要があります。また、キーを見つける場所は、キーサーバーにあります(ほとんどのキーサーバーで実行できます)。

Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
184
mariotomo

以下の手順ではなく、@ mariotomoの回答に従うことをお勧めします


次のキーIDに使用できる公開キーはありません によると、これにより修正されます:

Sudo aptitude install debian-archive-keyring

参考文献

78

私はお勧め:

$ Sudo apt-get install debian-archive-keyring
$ Sudo apt-key update

これはdebian-keyringをインストールしないため、他のアプローチよりも優れています。

40
Greg Alexander

エラー次のキーIDに使用できる公開キーがありませんは、重大なセキュリティ問題を示しています:anオペレーティングシステムパッケージの公開キーがないため、その公開キーとの整合性をチェックできません。

メッセージが次の場合:

There is no public key available for the following key IDs: 1397BC53640DB551

このコマンドを使用して、どのリポジトリがキーを使用しているかを確認できます。

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done

この例では、GoogleのChrome用リポジトリです。

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

Googleやその政府などを信頼している場合は、キーがどこにあるかを調べて、次のように追加する必要があります。

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
17
Ivan Ogai

Linux Mint(カーネルバージョン3.13.0-24)でも同じ問題に直面し、次のコマンドを使用して解決できました。

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

注意すべき点:

1)コマンドが順番に実行された2)コマンドがrootユーザーとして実行された

礼儀 this 答え。

3
Ankur Kumar

私の答えは、次のbashスクリプトレットの@mariotomo(私が賛​​成した人)のわずかなアップグレード(IMHO、YMMV)です。

  • gpgも使用します
  • さらにパラメータ化
  • (別のキーサーバーも使用しますが、この場合はほとんど違いがないと思います)

「ドライラン」のeval行をコメント化することもできます。スクリプトレットは、実際には何もせずに、意図したことだけを表示します。これを使用するたびにNO_PUBKEYの値を必ず変更してください(必要に応じてKEYSERVERも変更できます):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | Sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done
1
TomRoche

別の方法として:

$ Sudo apt-get install debian-keyring debian-archive-keyring
$ Sudo apt-key update

他のソリューションが機能しない場合は、killall -q gpg-agentを実行します。うまくいくかもしれません。

Ubuntu 18.04のPPAリポジトリでも同様のエラーが発生し、先月インターネットでさまざまな解決策を試した後、gpg-agentを偶然見つけて強制終了しました。その後、PPAリポジトリはSudo apt-get updateの実行時に更新を開始しました。セキュリティを危険にさらす可能性があることは知っていますが、PPAからのパッケージが必要な場合がありますが、GPGでは許可されません。その後、gpg-agentを再度起動すると、通常の状態に戻ります。

0
MSharq