将应用打包为 Snaps
在 Linux 上分發(fā)應(yīng)用不總是那么簡(jiǎn)單。你有不同的打包格式,基礎(chǔ)系統(tǒng),可用的庫(kù),和發(fā)行版本節(jié)奏,它們都讓人頭疼。但是現(xiàn)在我們有了更簡(jiǎn)單的東西:Snaps。
Snaps 是開(kāi)發(fā)者打包他們的應(yīng)用的一種新的方式,相對(duì)于更多傳統(tǒng)的打包格式,比如 .deb,.rpm 和其它的那些,它具有許多優(yōu)勢(shì)。Snaps 是安全的,相互隔離的,主機(jī)系統(tǒng)使用 AppArmor 這樣的技術(shù),它們是跨平臺(tái)的,且它們是自包含的,這允許開(kāi)發(fā)者打包它們的應(yīng)用需要的軟件。這種沙盒隔離也會(huì)提升安全性并允許應(yīng)用,及整個(gè)基于 snap 的系統(tǒng)在出現(xiàn)問(wèn)題時(shí)回滾。Snaps 真的是 Linux 應(yīng)用打包的未來(lái)。
創(chuàng)建一個(gè) snap 一點(diǎn)也不難。首先你需要基于 snap 的運(yùn)行時(shí)環(huán)境,它能夠在桌面環(huán)境中理解并執(zhí)行 snaps;這個(gè)工具被稱(chēng)為 snapd,且在所有 Ubuntu 16.04 系統(tǒng)中是默認(rèn)安裝的。接下來(lái)你需要工具來(lái)創(chuàng)建 snaps,Snapcraft,它可以通過(guò)如下命令簡(jiǎn)單的安裝:
$ sudo apt-get install snapcraft一旦這個(gè)環(huán)境可用,你就可以 snapping 了。
Snaps 使用一個(gè)特殊的 YAML 格式化的命名文件 snapcraft.yaml,它定義了如何打包應(yīng)用,以及它需要的任何依賴(lài)??匆粋€(gè)簡(jiǎn)單的應(yīng)用來(lái)說(shuō)明這一點(diǎn),下面的 YAML 文件是一個(gè)真實(shí)的如何 snap moon-buggy 游戲的例子,在 Ubuntu archive 中可以找到它。
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上面的代碼演示了一些新的概念。第一個(gè)部分是所有讓你的應(yīng)用在應(yīng)用商店中可以被找到的東西;設(shè)置打包元數(shù)據(jù)名稱(chēng),版本,概要,和描述。apps 部分實(shí)現(xiàn)了 play 命令,它指出了 moon-buggy 可執(zhí)行文件的位置。parts 部分告訴 Snapcraft,關(guān)于在將應(yīng)用與它所有依賴(lài)的東西一起構(gòu)建時(shí)所需要的插件。在這個(gè)簡(jiǎn)單的例子中,所有我們需要的東西就是來(lái)自于 Ubuntu archive 的 moon-buggy 應(yīng)用本身,Snapcraft 將關(guān)心其余的東西。
在放有 snapcraft.yaml 文件的目錄下運(yùn)行 snapcraft 命令,將創(chuàng)建 moon-buggy_1.0.51.11_amd64.snap,它可以通過(guò)運(yùn)行如下命令來(lái)安裝:
$ snap install moon-buggy_1.0.51.11_amd64.snap要查看復(fù)雜一點(diǎn)的 snapping 一些東西的例子的話(huà),比如基于 Electron 的 Simplenote 應(yīng)用,請(qǐng)看這里,線(xiàn)上的用戶(hù)指南在這里,其對(duì)應(yīng)的代碼位于 GitHub。更多例子可以在 Ubuntu 開(kāi)發(fā)者網(wǎng)站 找到。
原文
參考文檔:
將 Linux 軟件打包成 Snap 軟件包
總結(jié)
以上是生活随笔為你收集整理的将应用打包为 Snaps的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运行 Anbox
- 下一篇: QEMU 网络虚拟化