前言
和snap比较类似的有三种打包方式:
Snap Flatpak appimage
Appimage是将所有的资源打包在一起,以一个类似与独立exe的方式执行,虽然简单使用,但是解压资源和本地缓存数据都比较麻烦。
Flatpak和snap十分类似,但是他却需要桌面GUI才能使用,不能在云服务上执行。
Snap目前来看最为全面,除了开源性让人诟病,支持的权限管理和物联网方面的都还可以。
Snap打包的基础入门步骤
安装snap管理器:
sudo apt install snapd
重启linux:
之后查看环境:
sudo systemctl status snapd
可以看到:
这样就运行起来snap
到这里和做包是没有关系的,但是想要安装snap包到你的电脑,就必须安装该管理器。
做包工具:
snapcraft:
安装:
sudo snap install snapcraft --classic
这里基础使用,不打算进行上传到snap的唯一官方商店,就不尝试进行注册账号了。
新建一个文件夹,然后:
snapcraft init
可以看到该文件夹下出现了一个snap文件,里面是一个yaml文件,将yanl文件修改为:
name: hello-world-cli
version: "0.1"
summary: Hello World
description: |
This demo is intended to show how to build your first snap
This code is part of the Snapcraft example tour at
https://developer.ubuntu.com/snapcraft-getting-started
grade: stable
confinement: strict
base: core20
parts:
hello:
plugin: dump
source: ./bin/
apps:
hello-world-cli:
command: hello
这里除了parts上面的是包的基础信息之外,还包含parts来指定hello的二级制文件的位置,apps部分是来exprots出命令来提供给安装的用户使用。
当前的目录如下:
执行make.sh:
snapcraft --use-lxd
等待编译出:
hello-world-cli_0.1_amd64.snap
注意:这里可能会有各式各样的问题,推荐虚拟机安装ubuntu20.04进行打包尝试来避免一些问题。
安装测试:
snap install --dangerous ./hello-world-cli_0.1_amd64.snap
然后调用:
hello-world-cli就可以看到自己的打印。
吐槽:这个官网连个完整的例子都没有,文档也是坑人的很,使用起来资料匮乏,哎好难!