【Chromebook】apt-key が deprecated だから必死になってやったこと(ただしYarn に限る)
No Thinking, No Life
あれは2009年。
「週刊アスキー」別冊の Ubuntu 特集本を買った。CD-ROM も付いていた。
頑張って購入した Power Mac G4 Quicksilver が、アップデート対象から外れてしまったので、世間でちょっと盛り上がっていた Ubuntu(Linux ディストリビューション)を入れて、G4 を蘇らせようと画策してのことだった。
バージョンは、Ubuntu 9.04(Jaunty Jackalope)か、Ubuntu 9.10(Karmic Koala)だったと思う。オレンジっぽい色の背景画像に、アフリカの太鼓みたいな起動音が鳴り響いたときは感動した。
とはいえ、大変なのはそこからだった。
初めての Linux コマンドは呪文に見えた。ただひたすら、意味もわからずターミナルにコマンドを打ち込んだ。
その中で覚えた、パッケージを管理するコマンド
$ sudo apt-get update
$ sudo apt-get upgrade
そしてそれを、Chromebook 上の Debian になっても、何も考えずにそのままターミナルに打ち込んでいた。(Ubuntu は Debian 系だし)
apt-key is deprecated(廃止予定).
ところが、Debian 11 bullseye にアップデートしてから、’sudo apt-get update’ と打つと、警告が出るようになった。
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
「apt-key」が deprecated ってどういうこと?
技術評論社の記事によると、この時点で(2021年)すでに「apt-key」は廃止予定と書かれている。
そうか、突然で戸惑ったけど、実際はおばちゃんが Chromebook を買う前から「apt-key」は廃止予定だったのか。
で、この「apt-key の廃止」というのは、(難しくて上手く説明できないけれど)システム(Debian)に使うパッケージのリポジトリの鍵(key)と、どちらかと言うとセキュリティリスクの高いサードパーティのリポジトリの鍵を、今までは一緒に扱っていたけれど、今後は別々に扱うことになったから、サードパーティのパッケージは、廃止予定の「apt-key」を介さずにインストールしてね。と、言っていると理解した。(おばちゃんの脳みその限界)
・・・って、だから、どうしろというのよ。
apt-key で登録されている鍵を見る
と、とりあえずだ。
「apt-key」が何なのか、少しでも手がかりが欲しい。
調べているうちに「apt-key」に登録されている鍵のリストを表示する方法がわかったので、中身を見てみる。
$ apt-key list
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
/etc/apt/trusted.gpg
--------------------
pub rsa4096 2016-10-05 [SC]
72EC F46A 56B4 AD39 C907 BBB7 1646 B01B 86E5 0310
uid [ 不明 ] Yarn Packaging <yarn@dan.cx>
sub rsa4096 2016-10-05 [E]
sub rsa4096 2019-01-02 [S] [有効期限: 2026-01-23]
sub rsa4096 2019-01-11 [S] [有効期限: 2026-01-23]
/etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc
------------------------------------------------------------
pub rsa4096 2023-01-21 [SC] [有効期限: 2031-01-19]
…(略)
うげげ、いつもの訳わからん英字と数字の羅列だ。
あれ?
リストの中で Debian が使ってそうな鍵は、/etc/apt/trusted.gpg.d/ にあるのに、Yarn だけ /etc/apt/trusted.gpg になっている。Yarn はサードパーティだ。
(注:LibreOffice から Google スプレッドシートに乗り換えたので、LibreOffice はアンインストールしています)
もしかして・・・Yarn おまえなのか?
サードパーティの鍵を削除する
兎にも角にも、警告の原因を Yarn に絞った。
検索しまくって、解決への手順を進める。
【追記の追記】最初から npm で Yarn を削除すれば鍵も一緒に削除できたんですかね? 削除できなかった場合に ‘apt-key del’ すればよかったのか? 沼です・・・
(1) apt-key のリストから Yarn を削除する。
$ sudo apt-key del 86E50310(フィンガープリント末尾8桁)
【追記の注意書き】 Yarn のリストのファイルは削除したのですが場所(ディレクトリ)がうろ覚えです。万が一、この記事を参考にする方がおられましたら、きちんとした情報のご確認をお願いいたします。すみません。
$ rm /etc/apt/sources.list.d/yarn.list
(2) npm でインストールした Yarn 本体を削除する。
【追記の追記の追記】~/.npm まで削除しなくてもよかった気がしてきました。いい加減ですみません。
$ npm uninstall -g yarn
$ npm cache clear --force
$ rm -rf ~/.npm
$ rm -rf ~/.yarn
(3) これで警告が消えるか試す
$ sudo apt update
おおっ、警告が消えた!
Corepack を使う
とりあえず Yarn の削除はできた。
で、ここからが問題。Yarn はやっぱり必要だから、なんとかしてエラー(警告)のない方法でインストールしたい。
・・・
そうよ、公式サイトよ。おばちゃん以外にも、迷える(子)羊はいるはずよ。
Corepack?
なんだか、公式が npm を使ってインストールすることを勧めていない。
「Corepack」ってのを推してる。
ふむふむ。Node.js 14.19 / 16.9 から「Corepack」が Node.js に最初から入ってるっぽい。
$ node -v
v20.10.0
$ corepack -v
0.22.0
おおっ、入ってる! これで行くか。
$ corepack enable
「Corepack」を有効化して
今まで使用していた Yarn はバージョン1.x で、この機会に最新のバージョン4.x を試してみたいから、グローバルじゃなくてプロジェクト毎にインストールすることを選ぶ。
2024.4.5追記「下記の方法は無謀でした」
いじっているうちにところどころエラーが出たため、試行錯誤した結果、現行プロジェクトの Yarn 1.x -> 4.x バージョンアップは諦めました(自分の技術力が足りないため)。現在は初心に戻って、Macbook と Debian 共に「nvm + npm」で Node.js 環境を作っています。
今回の教訓は「己を知って無理はしない」
(以下、元記事)
と、その前に Yarn 経由でインストールした Next.js(node_modules)をプロジェクト内(VSCode のターミナル)で削除する。
$ rm -rf node_modules
$ rm yarn.lock
さあ、「Corepack」の出番よ。
$ corepack use yarn@* # sets the latest version in the package.json
Yarn 4.1.1 になってる・・・
しかも、pacakage.json にあるリストのパッケージも一緒にインストールされたみたい。よし、
$ yarn dev
なんの問題もなく、テストサイト(http://localhost:3000/)が表示された。
ちなみに「apt-key」の警告も出ない。
長かったけど、最後はあっさりクリアしたよ。
【今回のメモ】git に追跡されているファイルをローカルで除外したい
$ git update-index --skip-worktree .gitignore
WEBデザイナー(自営業)のおばちゃんです。最近はBlenderネタ多めです。