Answers:
一种解决方法是使用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
仍在受限状态下运行事物的同时对实时系统进行更改。通常,这是快速启动并运行并经过全面测试的好方法。
注:随着snapd
2.0.10(2016年7月9日)之前,你必须运行之前temove卡snapcraft clean
或snapd
将进入一个糟糕的状态,并抱怨自己无法找到安装卡扣。为2.0.11列出了更多修复程序,这些修复程序也将在几天内发布。
snapcraft clean
或捕捉当前陷入不良状态并抱怨无法找到已安装的捕捉之前,将捕捉移除。该修复程序正在进行中,但尚未发布。