ページ目次
信頼されていないパッケージのインストールが必要です
Ubuntuのパッケージを更新しようと、aptコマンドを叩いたある日、こう言われました。なんだそれは。とりあえずターミナルからapt-getでやればなんとかなるんだろ。
$ sudo apt-get update
W: GPG エラー (この辺忘れた。。とりあえずmysql-server的な文字があったような。。。)
ならない。爆
GPGエラーは公開鍵(パブリックキー)の更新で解決する
期限切れキーの確認
調べてみると、パッケージには信頼性を保証するために認証キー(公開鍵)があり、それがちょくちょく期限切れを起こすことがあるらしい。
下記のコマンドで端末にインストールされているキーを確認してみます。
$ sudo apt-key list
pub 1024D/5072E1F5 2003-02-03 [期限切れ: 2017-02-16]
uid MySQL Release Engineering <mysql-build@oss.oracle.com>
期限切れのキーを発見。なるほど。これを更新すればいいのね。
新しい公開鍵をキーサーバーから取得する
早速新しいキーを下記の要領でサーバーから取得します。下記がそのコマンド。(ちなみに、apt-key adv –keyserver –recv-keysでもいけるみたい)
【gpg –keyserver 取得するキーをホストするサーバーURL –recv-keys 公開鍵ID】
今回は以前にインストールしていたMySQL5.7のキーということなのでそれを取得します。
ググっていると下記のコードにそれらしきことが記載されているので、キーサーバーとやらはそのURLを使うことにします。
https://gist.github.com/fideloper/e774cb62d8be28da8a93
$ sudo gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 5072E1F5
gpg: 鍵5072E1F5をhkpからサーバha.pool.sks-keyservers.netに要求
gpg: 鍵5072E1F5:"MySQL Release Engineering <mysql-build@oss.oracle.com>"新しい署名を62個
gpg: 処理数の合計: 1
gpg: 新しい署名: 62
これで新しいキーのダウンロードができました!
鍵をリストに追加して、ようやくアップデート
キーが無事取得できたので、取得したキーファイルを書き出してリストに追加するという作業をおこないます。
gpgコマンドオプションの「–armor」は、ASCII(テキスト)形式へ変換する場合に指定するオプションです。
// ASCII形式で書き出した鍵をリストに追加
$ sudo gpg --export --armor 5072E1F5 | sudo apt-key add -
$ sudo apt-get update
これでなんとかなりました。めでたしめでたし。
ちなみに
認証(公開)鍵は、下記のMySQLリファレンスに記載されているテキストをそのままコピー&ペーストしてもいけそうです。(5.6とありますが)
MySQL 5.6 リファレンスマニュアル: GnuPG を使用した署名確認