ARM64 という表示は、互換性に関する一つの問いを片づけ、さらに難しい三つの問いを残す。実行ファイルを誰が作ったのか、どのソース改訂に由来するのか、次のセキュリティ修正を誰が届けるのかは分からない。古いフォーラムの回答がコミュニティビルドを指しているとき、その三つが導入の妥当性を決める。何かをダウンロードする前に、それらを切り分けよう。

マネージャーかクライアントか:まず正しい成果物を選ぶ

Outline はサーバーを管理するマネージャーと、端末を接続するクライアントを提供しており、両者は別のアプリケーションだ。上流のリポジトリは二つの役割を区別し、それぞれのインストール経路へリンクしている。Raspberry Pi にマネージャーを入れても、その Pi 用のクライアントにはならない。二つの経路は更新の日程も異なる。どちらの役割も存在するので、問いは端末がどちらを担うべきかである。

使っているオペレーティングシステムの現在のクライアント経路を確認する。一般的な Linux の項目はアーキテクチャの一覧表ではなく、あらゆるボードを約束するものでもない。ダウンロードページは、存在するものの一覧として読み、存在すべきものの一覧として読まないこと。

ARM 対応を求める過去の課題は、今日公開されているものについて何も語らない。それは過去の空白の記録として扱い、現在についての声明として扱わない。ダウンロードできる経路だけが、意味のある証拠だ。

インストール済みのシステムは実際にどのアーキテクチャで動いているのか?

ボード名だけでなく、リリースと検討対象の成果物を記録する。実行ファイルとそのネイティブ部品を対象に合わせる。64 ビットのカーネルは 32 ビットのユーザー空間を動かせるので、箱の表示だけではどちらか分からない。

クライアントのソースには共有のインターフェースコードとプラットフォーム固有の部品が含まれる。インターフェースだけを再ビルドしてもプラットフォーム移植にはならない。どれほどきれいにコンパイルできても同じだ。アーキテクチャが実際に現れるのはネイティブの部品である。インターフェースだけに触れた再ビルドは動作し、それでもネイティブ側で失敗する。

uname -m とインストール済みシステムのパッケージアーキテクチャが、ここで重要な二つの事実だ。デバイス上で読み、ビルド元のマシンで読まないこと。この段階で食い違えば、以後の比較はすべて無効になる。

コミュニティビルドはリリースの責任者を増やす

公式の経路に対象向けのサポートされた成果物がなければ、コミュニティビルドはインストールではなく導入の判断になる。公開者、ソース改訂、上流からの変更、ビルド手順を特定する。

次に、将来の修正が導入にどう届くかを問う。更新は上流から来ることも、フォークから来ることも、誰かが実行を覚えておく必要のある手動の再ビルドから来ることもある。第三の選択肢は、静かに起きなくなるものだ。

最新に見えるリポジトリは、すでに手元にあるバイナリをどの改訂が作ったかを語らない。ビルド手順を、成果物が自分について報告する内容と比べる。両者が食い違うなら、信用すべきでないのは成果物のほうだ。

チェックサムが証明することと、しないこと

チェックサムは特定のバイトを識別する。同じ非公式のビルド者が公開したチェックサムは、そのビルド者を上流プロジェクトにするわけでも、そのバイトの中身を教えるわけでもない。ダウンロードが無傷で届いたかには答えるが、それは有用でも狭い問いだ。それはファイルの性質であり、公開した人の性質ではない。

起動に成功した画面写真は、一つのマシンについての証拠だ。バイナリやその更新経路のレビューではない。どちらの成果物も、ソースを読むことの代わりにはならない。

出所と必要な権限が確認されるまで、見慣れないビルドを本番の機密から遠ざけておく。まずは専用アカウントを持つ使い捨ての環境で実行する。安く済み、意見が試験に変わる。

これが実験なのか機器なのかを決める

管理者が、サポート対象向けにレビュー済みのソースを意図的にビルドし、依存関係・パッケージ・更新の責任を負うことはある。それは保守された上流の成果物を入れるのとは別のサポートモデルだ。無人で動く機器なら、責任ある所有者が維持できるモデルを選ぶ。

成果物の識別情報、プラットフォーム、検証結果、更新の責任者を導入のそばに記録する。判断が完了するのはそれらが一致したときであり、ARM のバイナリが一度起動したときではない。

関連記事