スナップを作成するときに、どのようにしてより迅速に反復できますか?


10

私はより大きなソフトウェアのスナップに取り組んでいて、スナップを構築し、古いものを削除し、新しいものをインストールするのに非常に長い時間がかかります。

スナップの作成とテストをより迅速に繰り返したいと思います。スナップは問題なくビルドできることはわかっていますが、今はアプリの起動やその統合などのテストに興味があります。これを行う方法はありますか?

回答:


8

序文

これを行う1つの方法は、を使用することsnap tryです。その--helpメッセージから:

The try command installs an unpacked snap into the system for testing
purposes. The unpacked snap content continues to be used even after 
installation, so non-metadata changes there go live instantly. Metadata
changes such as those performed in snap.yaml will require reinstallation 
to go live.

また、オプションが付属しています。

--devmode     Install in development mode and disable confinement

これは、制限ビットをテストし、インターフェイスの使用を正しく行う場合に特に役立ちます。

使用法

これを使用する方法は簡単です、単に実行してください:

snapcraft prime
snap try prime/

最初のステップでsnapcraftは、

Final copy and preparation for the snap.

また、2番目のステップsnapdでは、ディレクトリの内容を使用してスナップを「インストール」します。これで、パッケージを変更しながら、パッケージをいじることができます。

Snappy Playpenの例を使用して、これを使用する方法を示します。

構築と使用が比較的速いため、consulを使用しています。

$ git clone https://github.com/ubuntu/snappy-playpen
$ cd snappy-playpen/consul/
snappy-playpen/consul$ snapcraft prime
Preparing to pull consul 
[...]
Staging consul 
Priming consul 
snappy-playpen/consul$ 

次に、別のバージョンがインストールされていないことを確認してから、インストールを続行します。

snappy-playpen/consul$ which consul
snappy-playpen/consul$ snap try prime

Name    Version  Rev  Developer  Notes
consul  0.6.4    x1              try
snappy-playpen/consul$ consul --help
usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    agent          Runs a Consul agent
[...]
snappy-playpen/consul$ 

ここまでは順調ですね。正常に動作するようです。それでは、/bin/echo物事がどのように機能するかを確認するためだけに置き換えましょう:

snappy-playpen/consul$ cp /bin/echo prime/bin/consul 
snappy-playpen/consul$ consul --help
Usage: /snap/consul/x1/bin/consul [SHORT-OPTION]... [STRING]...
   or:  /snap/consul/x1/bin/consul LONG-OPTION
Echo the STRING(s) to standard output.
[...]
daniel@daydream:/tmp/test/snappy-playpen/consul$  

ご覧のように、prime制限された状態で実行しながら、ライブシステムに変更を加えることができます。これは通常、スナップを起動して実行し、完全にテストするための良い方法です。

注:ではsnapd2.0.10(2016年7月9日)の前に、あなたが実行する前に、スナップをtemoveしなければならなかったsnapcraft cleanか、snapd取り付けられたスナップを見つけることができないことについての悪い状態と駄々をこねるになるだろう。2.0.11にはさらにいくつかの修正が予定されており、数日でリリースされる予定です。


1
1つのsnapcraft cleanrunまたはsnapdが現在不良な状態になり、マウントされたスナップが見つからないことを知らせる前に、スナップを削除する必要があることを言及することを検討してください。そのための修正が進行中ですが、まだリリースされていません。
カイル

良いですね!今すぐ情報を追加します。
dholbach

1
ええ、「スナップトライ」はまさにこのユースケースのためのものです。これにより、squashfsを作成し続けて再マウントしなくても、ディレクトリを作成してスナップを構築できます。そのディレクトリで作業するだけで(効果的に読み取り/書き込みスナップが作成されます)、満足するまで繰り返し、そのディレクトリからsquashfsを作成します。
Mark Shuttleworth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.