美文网首页
Snap 中的通道(上)

Snap 中的通道(上)

作者: Snapcraft | 来源:发表于2017-09-11 22:31 被阅读16次
题图:by 梵高——《收获的景象》

我们在介绍 snap 包的时候,总会提到其功能集中的一个重要特性,那就是我们可以通过将 snap 包发布到不同的通道,以此来表明它的稳定性,或者是否可以用于生产环境中。通道名一共有 稳定候选测试边缘 四种,它们的稳定性依次递减。

从开发人员的角度来看,在边缘通道中发布新改变是很有意义的,这可以让那些愿意接受还不太稳定产品的用户,提前体验一些新功能,并提交使用过程中可能遇到的问题。当边缘通道中的新功能打磨得更光滑后,就可以将更新后的 snap 包发布到测试通道和候选通道,一旦它被认为已经适合所有人使用,再将其发布到稳定通道。

搜索和跟随

我们可以使用 snap find 命令来搜索 snap 包,但是这条命令只会显示在稳定通道中找到的 snap 包。如果想安装其他通道中的 snap 包,需要通过命令行参数明确指定相应的通道(如:snap install --channel=candidate)。开发者可以通过博客、推特或与用户直接沟通的方式来宣传发布到风险更高通道中的 snap 包。

每个用户都可以订阅四个通道中的任何一个,但是开发者无需将 snap 包明确的发布到每个通道,因为我们可以使用被称为 跟随 的功能。如果某个通道当前没有发布 snap 包的某个修订版本,那么它此时就处于 关闭 状态,并且商店将自动为其提供下一个更稳定通道的修订版本。

例如,所以如果某个开发者只将 snap 包发布到了稳定通道:

$ snapcraft release my-snap 37 stable
Track   Arch   Channel    Version  Revision
latest  amd64  stable     37       37
               candidate  ^        ^
               beta       ^        ^   
               edge       ^        ^

然后,某个用户通过下面的命令订阅了候选通道:

snap install my-snap --channel=candidate

最终他会安装修订版本为 37 的 my-snap 包。

当开发人员将后续修订版本发布到稳定通道时,那些从候选通道中安装的用户也会获得稳定通道中的更新。

当开发人员想发布某些不同的内容时,通道就显得更有用了。例如,当一个新的候选版本(修订版本号为 50)要发布时,开发人员可以做:

$ snapcraft release my-snap 50 candidate
Track   Arch   Channel    Version  Revision
latest  amd64  stable     37       37
               candidate  50       50
               beta       ^        ^
               edge       ^        ^

The ‘candidate’ channel is now open.

当 snap 包被显式地发布到某个通道时,这个通道将停止跟随前一个通道,并且将当前状态切换到 打开 。开发人员也可以将更新的版本发布到稳定通道中:

$ snapcraft release my-snap 51 stable
Track   Arch   Channel    Version  Revision
latest  amd64  stable     51       51
               candidate  50       50
               beta       ^        ^
               edge       ^        ^

此时,从候选通道中安装或更新时仍然会得到已明确发布的修订版本 50。

如果开发人员不想继续手动维护这个通道,可以通过关闭通道来恢复跟随的行为。

$ snapcraft close my-snap candidate
Track   Arch   Channel    Version  Revision
latest  amd64  stable     51       51
               candidate  ^        ^
               beta       ^        ^
               edge       ^        ^

The candidate channel is now closed.

在我们的示例中,已经安装了候选版本的用户现在将刷新到修订版本 51,并且会开始获得稳定通道中后续的更新。

除了这些表示不同稳定性的通道外,我们还可以通过设置 grade: devel 或者 confinement: devmode(在 snap 包的 snapcraft.yaml 文件中)来限制 snap 包只能发布到边缘和测试通道。

深入理解通道

我们已经知道四个通道名是 snap 的重要组成部分,但其实前面提到的通道名只是整个通道名的一部分,它们实际上应该叫做 风险(risk)。完整的通道名总共有三个部分:轨道(track)风险(risk)分支(branch),它们为开发人员提供了强大的机制,用于控制向用户交付软件。一个完整的通道名是这样的:

轨道/风险/分支

其中只有风险(我们一直称其为“通道”)组件是必须要有的(并且是唯一一个被限制在一组选项中的组件,即只能在稳定、候选、测试和边缘风险中选一个)。所有的 snap 包都有一个最近的轨道,这也是为什么当我们没有指定轨道时,系统仍能正常工作的原因。分支组件是可选的。所以当你说稳定通道的时候,它实际上指的是 最近的轨道/稳定通道,当你说测试通道的时候,它实际上指的是 最近的轨道/测试通道,等等。

在第二部分中,我们将深入了解轨道和分支。同一个轨道中可以使用多个“稳定”版本,因此,出于兼容性的考虑,用户可以选择使用最新的“稳定”版本,或者使用更旧的主要版本。分支是专门用来发布 snap 包的“临时”通道 ,这对将“热补丁”和改动的代码提供给特定的用户非常有用。


所有文章都在 Snapcraft 公众号首发,欢迎关注 : )

相关文章

网友评论

      本文标题:Snap 中的通道(上)

      本文链接:https://www.haomeiwen.com/subject/mdkqsxtx.html