标签 snap 下的文章

Canonical 说他们与各个主要的 GNU/Linux 发行版的开发者们正在一起努力将 Snap 软件包格式变成通用二进制软件包格式。

如你所知, Snap 是一种安全的、易于安装的、沙盒化的软件包格式,它可以让开发者将他们的软件的更新包随时发布给用户,而不必等待发行版的更新周期。

Snap 来自 Canonical 为其物联网操作系统 Snappy Ubuntu Core 所开发 Snappy 技术。从 Ubuntu 16.04 LTS (Xenial Xerus)开始,Canonical 也将这种软件包格式推向了其桌面和服务器产品。

“来自多个 Linux 发行版及公司的开发者们宣布将协作开发 ‘snap’ 通用 Linux 软件包格式——一个将可以用在任何 Linux 桌面、服务器、云或设备上的二进制软件包。”Canonical 说,“snapcraft.io 社区正在开发一种可以在任何 Linux 环境中用于任何 Linux 软件的单一发布机制。”

Snap 已经可以原生工作在 Arch Linux、Debian、Fedora 和 Ubuntu 上

此刻,我们注意到 Snap 软件包格式已经可以原生地工作在一些流行的 GNU/Linux 操作系统上,比如 Arch Linux、Fedora、Debian GNU/Linux、OpenWrt,和 Ubuntu 及其官方分支,包括 Kubuntu、Xubuntu、Ubuntu MATE、Ubuntu GNOME、Ubuntu 麒麟和 Lubuntu 等。

之后,其它的主流 GNU/Linux 发行版也将很快会将 Snap 软件包作为一种通用二进制格式发布给使用者,这包括 openSUSE、Linux Mint、Red Hat Enterprise Linux、CentOS 和 elementary OS 等。当然,即便是没有列在这里的 GNU/Linux 发行版支持 Snap 格式也是很容易的。

Canonical 已经介绍过开发者们如何将其软件打包成 Snap 格式,通过 Snap 在任何基于 Linux 内核的主流操作系统上发布软件都很容易,发布第三方 Linux 软件要比之前更加容易了。

当然, Snap 将不会替代各个发行版的默认软件包格式,它将是一种对现有的软件包格式的补充,可以用于在所有的 GNU/Linux 操作系统上发布任何开源或闭源的应用。

像 Mozilla Firefox、LibreOffice 和 Krita 这样的流行软件已经在进行 Snap 打包工作。Mozilla 的 Firefox 产品副总裁 Nick Nguyen 说:“随着引入 Snap 格式,持续优化 Firefox 成为了一种可能,这可以让 Linux 用户第一时间得到最新的功能。”

数字绘画工具 Krita 3.0 本月初也发布了其 Snap 软件包,Ubuntu 用户可以在自己的系统上安装这个软件包了。“在一个私有仓库中维护一个 .deb 软件包是复杂而耗时的,而 Snap 更容易维护、打包和分发”,Krita 基金会的项目负责人 Boudewijn Rempt 说。

如果你想将你的软件以 Snap 格式发布到任何支持的 GNU/Linux 操作系统上,欢迎去看看 snapcraft.io 网站。

在 Linux 分发应用不总是那么容易。有各种不同的包格式、基础系统、可用库,随着发行版的一次次发布,所有的这些都让人头疼。然而,现在我们有了更简单的东西:Snap。

Snap 是开发者打包他们应用的新途径,它相对于传统包格式,如 .deb,.rpm 等带来了许多优点。Snap 安全,彼此隔离,宿主系统使用了类似 AppArmor 的技术,它们跨平台且自足的,让开发者可以准确地将应用所需要的依赖打包到一起。沙盒隔离也加强了安全,并允许应用和整个基于 snap 的系统,在出现问题的时候可以回滚。Snap 确实是 Linux 应用打包的未来。

创建一个 snap 包并不困难。首先,你需要一个 snap 基础运行环境,能够让你的桌面环境认识并运行 snap 软件包,这个工具叫做 snapd ,默认内置于所有 Ubuntu 16.04 系统中。接着你需要创建 snap 的工具 Snapcraft,它可以通过一个简单的命令安装:

$ sudo apt-get install snapcraft

这个环境安装好了之后就可以 snap 起来了。

Snap 使用一个特定的 YAML 格式的文件 snapcraft.yaml,它定义了应用是如何打包的以及它需要的依赖。用一个简单的应用来演示一下,下面的 YAML 文件是个如何 snap 一个 moon-buggy 游戏的实际例子,该游戏在 Ubuntu 源中提供。

name: moon-buggy
version: 1.0.51.11
summary: Drive a car across the moon
description: |
A simple command-line game where you drive a buggy on the moon
apps:
  play:
    command: usr/games/moon-buggy
parts:
  moon-buggy:
    plugin: nil
    stage-packages: [moon-buggy]
    snap:
      – usr/games/moon-buggy

上面的代码出现了几个新概念。第一部分是关于如何让你的应用可以在商店找到的信息,设置软件包的元数据名称、版本号、摘要、以及描述。apps 部分实现了 play 命令,指向了 moon-buggy 可执行文件位置。parts 部分告诉 snapcraft 用来构建应用所需要的插件以及依赖的包。在这个简单的例子中我们需要的所有东西就是来自 Ubuntu 源中的 moon-buggy 应用本身,snapcraft 负责剩下的工作。

在你的 snapcraft.yaml 所在目录下运行 snapcraft ,它会创建 moon-buggy1.0.51.11amd64.snap 包,可以通过以下命令来安装它:

$ snap install moon-buggy_1.0.51.11_amd64.snap

想了解更复杂一点的 snap 打包操作,比如基于 Electron 的 Simplenote 可以看这里,在线教程在这里,相应的代码在 Github。更多的例子可以在 Ubuntu 开发者站点找到。


via: https://insights.ubuntu.com/2016/06/01/apps-to-snaps/

作者:Jamie 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

最近发布的 Ubuntu 16.04 LTS 版本带来了一些新功能,其中之一就是对 ZFS 格式文件系统的支持。另一个值得广为讨论的特性就是 Snap 软件包格式。不过,据 CoreOS 的开发者之一所述,Snap 软件包并不像声称的那样安全。

什么是 Snap 软件包?

Snap 软件包的灵感来自容器。这种新的封装格式允许开发人员为运行于 Ubuntu 长期支持版本 (LTS)之上的应用程序发布更新。这就可以让用户虽然运行着稳定版本的操作系统,但却能够让应用程序保持最新的状态。之所以能够这样,是因为软件包本身就包含了程序运行的所有依赖。这可以防止依赖的软件更新后软件挂掉。

snap 软件包的另外一个优势是应用与系统的其它部分是隔离的。这意味着如果你改变了 snap 软件包的一些东西,它不会影响到系统的其它部分。这也可以防止其它的应用访问你的隐私信息,从而使骇客根据难以获取你的数据。

然而……

Matthew Garrett 的说法,Snap 软件包不能完全兑现上述承诺。Garret 作为 Linux 内核的开发人员和 CoreOS 的安全性方面的开发者,我想他一定知道自己在说些什么。

据 Garret 说, “仅需要克服一点点困难,安装的任何 Snap 格式的软件包就完全能够将你所有的私有数据复制到任何地方”。

ZDnet 的报道:

“为了证明自己的观点,他在 Snap 中构建了一个仅用于验证其原理的用于破坏的软件包,它首先会显示一个可爱的泰迪熊,然后将会记录 Firefox 的键盘按键事件,并且能够窃取 SSH 私钥。这个仅用于验证原理的软件包实际上注入的是一个无害的命令,但是却能够修改成一个窃取 SSH 密钥的 cURL 会话。”

但是稍等……

难道 Snap 真的有安全缺陷?事实上却不是!

Garret 自己也说,此问题仅出现在使用 X11 窗口系统上,而对于那些使用 Mir 的移动设备无效。所以这个缺陷是 X11 的而不是 Snap 的。

X11 是如何信任应用程序的,这是一个众所周知的安全风险。Snap 并没有更改 X11 的信任模型。所以一个应用程序能够看到其它应用程序的行为并不是这种新的封装格式的缺点,而是 X11 的。

Garrett 实际上想表达的只是,当 Canonical 歌颂 Snap 和它的安全性时,Snap 应用程序并不是完全沙盒化的。和其他二进制文件一样,它们也存在风险。

请牢记 Ubuntu 16.04 当前还在使用 X11 而不是 Mir 的事实,从未知的源下载和安装 Snap 格式的软件包也许还是有风险的,然而其它不也是如此嘛?!

相关链接: 如何在 Ubuntu 16.04 中使用 Snap 软件包。期待您分享关于 Snap 格式及其安全性的观点。


via: http://itsfoss.com/snap-package-securrity-issue/

作者:John Paul 译者:dongfengweixiao 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在 Ubuntu 在线峰会 2016 的最后一天议程中,开发者们对 Ubuntu 16.10 之后的 Ubuntu 桌面的发展做了一些重要的讨论。

正如标题所说,Ubuntu 桌面的未来将会采用 Snap(Snappy)和 Mir 上的 Unity 8,这是 Canonical 的 Ubuntu 桌面经理 Will Cooke 的观点。Canonical 已经在向这方面努力推进了,在 Ubuntu 16.04 LTS 中已经支持通过 Ubuntu Snappy Store 安装 Snap 了。

Snappy 正在慢慢占领 Ubuntu 桌面

目前看起来,从 Ubuntu 16.10 开始,我们就可以从 Ubuntu Snappy Store 中安装 Snap 应用了;而且各个主要的应用,如 LibreOffice 和 Mozilla Firefox 都会默认以 Snap 的方式安装在 Live 镜像中。Canonical 也正在开发一种将各种软件包从 .deb 格式转换为 snap 格式的方式。

举个例子说,如果你已经有一台 Ubuntu 16.04 LTS ,其中的 LibreOffice 是以 .deb 格式安装的,如果你要升级到 Ubuntu 16.10 或 17.04,而那时 LibreOffice 是以 snap 格式出现的,这个转换过程将是平滑的,你不会丢失任何配置。至少,关键性的应用,比如 Chromium、LibreOffice 和 Firefox 到时候都会只以 snap 格式提供。

Unity 7 将走入末期,Unity 8 将接过它的大旗

Will Cooke 说 Unity 7 桌面将进入其末期,也就是说它不会再增加太多的功能,也不会投入更多的精力了。这是因为 Unity 8 日益得到关注,它会在 Ubuntu 16.10 之后的某个时间段成为默认桌面环境。可以看看下面的进度图,从 Unity 7 到 8 之间的转换将在 Ubuntu 16.10 和 17.04 之间发生。

 title=

Ubuntu 桌面上从 Unity 7 到 Unity 8 的转换计划

当然,Unity 8 现在在 Ubuntu 16.04 LTS 上已经可以用了,不过还是技术预览版,仍然需要不少工作才能达成目标。到 Ubuntu 16.10 时,它就会进一步完善,Unity 8 会默认地成为 Unity 7 的可选替代桌面环境,你不需要手动地来安装它。GTK 和 Chromium 的 Mir 后端也可以正常工作了。

其它

今年稍晚时间,Ubuntu 桌面上还会有另外一个有趣的功能会出现,就是在重启过程中,可以通过 Ubuntu 软件包管理器离线安装更新。

Ubuntu 16.10 中,GTK 和 GNOME 软件族也会保持同步更新,以便 Ubuntu GNOME 这样的衍生版可以继续工作。不过,看起来 Qt4 会被放弃,这样可以在 ISO 镜像中为有用的软件们腾出更多的空间。

4/21 日,Canonical 揭晓了他们最新的 Ubuntu Linux 操作系统 Ubuntu 16.04 LTS(Xenial Xerus),在这个版本中,有个重要的功能是,Ubuntu 16.04 LTS 可以同时支持 deb 和 snap 两种软件包格式。snap 软件包格式用在 Canonical 的物联网操作系统 Snappy Ubuntu Core 中。

snap 软件包格式用来设计配合 Canonical 的新一代显示服务器 Mir 协同工作,它默认用在 Ubunut Touch 移动操作系统上,支持 Ubuntu 电话,以及新的 Ubuntu 平板: BQ Aquaris M10 Ubuntu 版,以给用户提供一流的安全性。

通过在 Ubuntu 桌面版和 Ubuntu 服务器版中支持安装 snap 软件包,Canonical 在给 Ubuntu 用户及时地提供软件更新方面取得了长足进展。Mozilla 是第一个在 Ubuntu 上以 snap 软件包格式提供软件的厂商,估计今年稍晚时候就会提供 Firefox 的 snap 包。

在 X11 下 snap 软件包并不安全

据著名的 CoreOS 安全开发者及 Linux 内核贡献者 Matthew Garrett 称, Canonical 的新式 snap 软件包格式用在 X.Org 服务器(X11 Window 系统)下很不安全,而 X11 目前仍旧是 Ubuntu 16.04 LTS 的默认显示服务器。

这个问题本质上是由于 X11 的古老设计,众所周知它在安全性上很差。Matthew Garrett 制作了一个简单的 snap 软件包来演示这个问题,它可以做到从其它的 X11 软件中偷取数据,比如可以获取你在 Mozilla Firefox 浏览器中输入的内容。

“我做了一个快速的概念验证,从 git 上获取了 XEvilTeddy,安装 Snapcraft (它在 16.04 中), 用 snapcraft 制作 snap,然后运行 sudo snap install xevilteddy*.snap,接着执行 /snap/bin/xevilteddy.xteddy。这是一个可爱的泰迪熊,真萌~ 现在打开 Firefox 并输入东西,然后去看看你的终端窗口。哦,天哪,我的小秘密呢... 再开一个终端窗口,然后将输入焦点放到其上,哦,我的天,一个被劫持的命令,它被替换成一个 curl 会话,可以上传你的 SSH 私钥到鬼才知道的某个地方。”

到目前为止,snap 格式还没流行起来,特别是因为目前只有很少的软件包支持这种格式。但是这也许不久就会改变,越来越多的开发者会以 snap 格式提供他们的软件,所以 Canonical 需要为使用 X11 的 Ubuntu 的安全性做些工作。

这也是为何大多数 GNU/Linux 发行版应该尽快切换到 Wayland 或 Mir 显示服务器的另外一个原因,尤其是现在的大多数桌面环境(如 GNOME 和 KDE)都支持它们了。不过,从另外一方面说,这个 snap 的安全问题不会影响到 Ubuntu 服务器操作系统,因为它根本没有显示服务器。

我们按照 Mr. Garrett 的指导,在一个最新更新的 Ubuntu 16.04 LTS 的机器上使用 Snapcraft 创建了 xevilteddy 的 snap 包。成功的创建了 snap 并安装之后,我们确认,当你看到如下的截屏时,这表明 xevilteddy 应用可以偷取你在另外一个 X11 应用中输入的任何内容,也能够使用 curl 将你的 SSH 密钥发送到远程的站点去。

Mozilla 宣布在 Ubuntu 16.04 LTS 中将以 snap 软件包格式发布 Firefox 的后继版本,这意味着在 Ubuntu 中 Firefox 也将是即时更新的了,和在 Mac 和 Windows 中一样。

Canonical 刚刚发布了 Ubuntu 16.04 LTS ,在这个版本中最显著的变化之一是同时支持了 snap 软件包格式——之前这种软件包格式只在用于嵌入式设备和物联网设备的 Snappy Ubuntu Core OS 中使用。

看起来 Canonical 和 Mozilla 重建了他们的合作关系,Mozilla 以后将会以 snap 格式分发 Firefox 软件。

“今天,Mozilla 和 Canonical 重新建立了合作关系,Firefox 成为了 Ubuntu 上的默认浏览器。我们作为 Ubuntu 的合作伙伴已有十年了。”, Mozilla 的 Firefox 产品副总裁 Nick Nguyen 说,“Canonical 和 Mozilla 都是开源软件的产物,也都是由社区支持的组织。”

对于普通的 Ubuntu 用户来说这意味着什么?

Canonical 总是在上游发布了 Firefox 几天内就会发布更新,有时候是在同一天发布,但是这种情况很少。而 Firefox 以 snap 格式发布则意味着在 Ubuntu 16.04 中会没有延迟地得到更新。

没错,就像 Windows 和 Mac OS X 中一样,用户可以马上得到最新的 Mozilla Firefox 更新,而不用等 GNU/Linux 发行版的软件包维护人员上传到软件库中。对于 Mozilla 来说,Firefox 以 snap 软件包格式发布意味着他们可以不断地为 Ubuntu 优化 Firefox。

“和我们的快速工程发布周期一样,snap 格式可以让我们给 Linux 用户提供最新的功能,特别是对于安全补丁来说”, Nick Nguyen 说,“使用 snap 格式,新功能也可以发布给使用老版本的操作系统的用户。”

Firefox 的 snap 格式什么时候可以用?

据 Mozilla 说,给 Ubuntu Linux 使用的 snap 格式的 Firefox 浏览器会在今年稍晚时间发布第一个版本,当然,Mozilla 也还会为其它的 GNU/Linux 操作系统的用户提供64位和32位的二进制以及源代码。

当前在 Ubuntu 16.04 LTS 和其它的 Linux 操作系统中的 Firefox 版本是 45.0.2,根据官方的发布周期,下一个主要版本 Firefox 46.0 将在下周发布。