###導入###
| この投稿は、Ubuntu Core でプロトタイプから完成品まで ROS を開発するシリーズへの追加です。「ファクトリーイメージを作成したいが、作りたくない」という質問に答えたものです。私のスナップを公開してください」 もちろん、この質問も答えもロボット工学に特有のものではありません。この投稿では、この質問に 2 つの方法で答えます。
|
始める前に、Ubuntu Core イメージの作成に関する背景知識を知っておく必要があります。[Ubuntu Core 3 記事シリーズの ROS プロトタイプから完成品への開発 (特にパート 5)] を読んでいれば、必要なものはすでに揃っています。背景知識として、まだ見ていない場合は、Ubuntu Core イメージの作成に関するチュートリアルを確認してください。
最新情報があり、私が「モデル定義」または「モデル アサーション」と言うときに何を言っているのかを理解している場合は、さまざまな方法でプライベート sanps を使用して Ubuntu コア イメージを作成してみましょう。
方法 1: スナップをストアにアップロードしない
これは最も簡単な方法です。まず、このモデル定義の例を見てください - amd64-model.json:
リーリー
これをモデル アサーションに変換しましょう:
リーリー
モデル アサーション: amd64.model を取得した後、それを ubuntu-image に渡してすぐに使用すると、壁にぶつかります:
リーリー
実際には、ストアには kyrofa-test-snap という名前のスナップはありません。ここで、モデル定義 (および変換されたアサーション) には一連のスナップ名のみが含まれることに注意することが重要です。その名前のスナップがローカルにある場合は、ストアに存在しない場合でも、 --extra-snaps オプションを使用してアサーション内でその名前を照合することで、それを使用するように ubuntu-image に指示できます。
リーリー
これで、スナップをストアにアップロードせずに、プライベート スナップがプリインストールされた Ubuntu コア イメージ (pc.img という名前) を取得できました。しかし、これには大きな問題があり、ubuntu-image は警告を表示します: 接続されたストア経由でスナップをプレインストールしないことは、これらのイメージを書き込んだデバイス上でスナップを更新する方法がないことを意味します。新しいイメージを作成してデバイスに再フラッシュすることによってのみ更新できます。
方法 2: ブランド ストアを利用する
ストア アカウントに登録して、dashboard.snapcraft.io にアクセスすると、実際には標準の Ubuntu ストアでスナップが表示されます。システムに snapd を新しくインストールした場合、デフォルトでこのストアからダウンロードされます。 Ubuntu ストアでプライベート スナップを公開することはできますが、それを使用する権限を持っているのは自分 (および追加したコラボレーター) だけであるため、イメージにプレインストールすることはできません。この状況でミラーを作成する唯一の方法は、スナップを公開することですが、それはこの投稿の目的には役立ちません。
この使用例では、ブランド ストアと呼ばれるものがあります。ブランドストアは引き続き Ubuntu ストアでホストされていますが、特定の企業またはデバイス向けにカスタマイズされた特殊なバージョンです。ブランド ストアは、標準の Ubuntu ストアを継承する場合も継承しない場合もあり、ブランド ストアはすべての開発者に公開するか、特定のグループに制限するかを選択できます (プライベートに保つことが私たちの希望です)。
これは有料機能であることに注意してください。ブランドストアへの申し込みが必要です。リクエストが承認されると、ユーザー名の下にある「アクセスできるストア」にアクセスして、新しいストアを表示できるようになります。
そこには、アクセスできる複数のストアが表示されます。標準の Ubuntu ストアと新しいブランド ストアの 2 つが少なくとも存在します。ブランド ストア (赤いボックス) を選択し、ストア ID (青いボックス) を入力して記録します。これは後で必要になります。
ブランド ストアでの名前の登録またはスナップのアップロードは、標準ストアではなくブランド ストアにアップロードされることを除いて、標準ストアと同じ方法を使用します。ブランド ストアを非公開にすると、これらのスナップは外部ユーザーに表示されなくなります。ただし、ここで注意する必要があるのは、初めてスナップをアップロードするときは、Web インターフェイスから操作する必要があることです。その後は、通常どおり Snapcraft で作業を続けることができます。
では、これらはどのように変化したのでしょうか?私の「kyrofal-store」は Ubuntu ストアからスナップを継承しており、安定版チャネルでリリースされた「kyrofa-bran-test-snap」も含まれています。このスナップは Ubuntu ストアでは入手できず、検索しても見つかりません:
リーリー
ただし、前に記録したストア ID を使用して、Ubuntu ストアではなくブランド ストアからスナップをダウンロードするモデル アサーションを作成できます。次のように「store」キーを JSON ファイルに追加するだけです:
リーリー
方法 1 の方法を使用して署名すると、次のように、ブランド ストアのプライベート スナップがプリインストールされた Ubuntu Core イメージを簡単に作成できます。
リーリー
これで、方法 1 の最後と同じように、工場用に pc.img が準備されました。また、この方法を使用して作成されたイメージ内のすべてのスナップはストアからダウンロードされるため、通常どおり自動的に更新されます。
###結論は###
これまでのところ、これを行う方法は 2 つだけです。この記事を書き始めたとき、3 番目の方法 (スナップを非公開にし、それを使用してミラーを作成する) があるのではないかと考えましたが、それは不可能であることがわかりました。
また、社内展開やエンタープライズストアでのご要望も多くいただいており、まだ製品は発表されていませんが、ストアチームで検討中です。入手可能になりましたら記事を書きます。
###お役に立てれば!