Chromiumのように頻繁なアップデートが実施されるソフトウェアを、OSのバージョンやディストリビューション、アーキテクチャなどを問わず、パッケージ間の依存関係に悩まされることなくセキュアに管理する ―Ubuntuが開発したコンテナ方式のユニバーサルなパッケージ管理システム「Snap」は、「(パッケージごとにライブラリをインストールするため)ディスク消費量が多い」という欠点があるものの、「複数のバージョンを共存させられる」「パッケージ管理がクリーン」「隔離されたセキュアな実行環境」といったメリットから、Snap対応のソフトウェアの数は拡大傾向にある。
Snapはdebに比較して可搬性が高いため、メンテナンスの手間が削減されるという点も開発者にとっては魅力のひとつだが、その一方で「パッケージを構成するライブラリに対応するソースコードのバージョンや依存関係を確認しにくい」という声もあがっていた。その解決策のひとつとして、ベルギー・ヘント大学のMerlijn Sebrechtsが、自身のブログでSnapパッケージの中身を検証する方法を紹介している。
- How to verify the source of a Snap package -Merlijn Sebrechts
Snapパッケージには、パッケージのビルド時に使われたソースを確認するために「snap/snapcraft.yaml」と「snap/manifest.yaml」という2つのファイルが含まれている。snapcraft.yamlはその名の通り、snapcraftがビルドする際に使用したソースリポジトリを示し、manifest.yamlはsnapcarft.yamlで示した情報よりもさらに詳細に、ビルドに使われたソースのバージョンや依存関係、gitコミットしたリポジトリ、ダウンロードしたバイナリのチェックサムなどを表示する。Sebrechtsはmanifest.yamlを「パッケージビルドの"記録(recording)"」と呼んでいるが、まさにパッケージビルドの記録を克明に、正確に残した"マニフェスト"といえる。なお、LaunchpadおよびGitHubでビルドされたパッケージは、ビルド先のURL(build_url)もビルドログの一部としてmanifest.yamlに含まれる。
manifest.yamlを使うにはSnapをダウンロードし、手動でファイルを閲覧する必要がある。また、パッケージビルドの記録が残っていても、その記録を再利用してパッケージを作ることは現時点ではできない。使い勝手にはまだ改良の余地が多いが、LaunchpadやGitHubから入手したSnapパッケージの詳細を確認する方法として覚えておきたい。