创建快照时如何更快地迭代?


10

我正在开发更大的软件,并构建该软件,删除旧软件,安装新软件只需要很长时间。

我想遍历创建快照并更快地进行测试。我知道快照的构建很好,现在我对测试启动应用程序及其集成之类的东西感兴趣。有没有办法做到这一点?

Answers:


8

前言

一种解决方法是使用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中利用目录的内容“安装”快照。现在,您可以使用该程序包,同时仍然可以对其进行更改。

让我们使用Snappy Playpen中的示例演示如何使用它。

我们正在使用领事,因为它的构建和使用相对较快:

$ 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 cleansnapd将进入一个糟糕的状态,并抱怨自己无法找到安装卡扣。为2.0.11列出了更多修复程序,这些修复程序也将在几天内发布。


1
您可能会考虑提到,应该在运行snapcraft clean或捕捉当前陷入不良状态并抱怨无法找到已安装的捕捉之前,将捕捉移除。该修复程序正在进行中,但尚未发布。
凯尔(Kyle)

好一个!立即添加信息。
dholbach '16

1
是的,“快照尝试”正是针对此用例。它使您可以建立目录并在其中建立快照,而无需继续制作squashfs并重新安装它。您只需在该目录中工作(实际上具有读写快照)即可进行迭代,直到满意为止,然后将squashfs移出该目录。
Mark Shuttleworth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.