我正在开发一个更大的软件的快照,构建快照、删除旧快照、安装新快照需要很长时间。
我想迭代创建 snap 包并更快地进行测试。我知道 snap 包构建得很好,现在我感兴趣的是测试启动应用程序及其集成等内容。有办法吗?
答案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.
第二步,snapd
利用目录的内容来“安装” snap。现在你可以试用这个包,同时仍然可以对其进行更改。
例子
让我们用一个例子来说明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
限制条件下运行的同时对实时系统进行更改。这通常是快速启动并运行 snap 并进行全面测试的好方法。
笔记:在snapd
2.0.10 (2016-07-09) 之前,您必须在运行之前删除 snap snapcraft clean
,否则snapd
会陷入糟糕的状态,并抱怨无法找到已安装的 snap。2.0.11 中还有一些修复,也应该会在几天后发布。