更多文章请关注: https://eightplus.github.io/
最近手痒,想着要去体验snap软件包的开发,结果自己写的程序打成deb包安装和启动时,一切正常,而打成snap包安装后,由图形程序自动拉起dbus的时候则遇到问题,资料堆里找https://docs.snapcraft.io/,各种尝试,反正就是我配置的system dbus相关的.service和.conf文件根本没作用,最终使用plug和slot的方式,并且是手动启动system dbus的方法才让图形程序从dbus daemon获取到数据(貌似是目前snap还不支持dbus的自动启动???)。目前还没找到完美的解决办法,很受打击啊,各种尴尬,无奈,在这里写篇文章,当做snap体验的笔记记录,希望自己不要对snap忘记的太快。
1、在源码文件中中打开终端,执行:$snapcraft init,会自动生成snap文件,里面有个snapcraft.yaml文件
2、修改snapcraft.yaml文件,具体见源码中的写法,如果您发现错误,请告知小的,在此先表示口头感谢啦!源码地址:
https://github.com/eightplus/system-tool
3、终端执行:$snapcraft ,生成snap包
4、安装snap包:$sudo snap install system-tool_1.0.2_amd64.snap --devmode --dangerous
5、安装完成后,终端运行 $snap interfaces 可以查看到plug和slot都蹦出来了,如下图。有资料显示,如果要让我的dbus服务程序和图形程序进行通信,还需要终端执行:$sudo snap connect system-tool:daemon-plug system-tool:daemon-slot ,对应的disconnect操作是:$sudo snap disconnect system-tool:daemon-plug system-tool:daemon-slot。而不太懂snap的我,硬是没有执行该命令,结果dbus和图形程序还是通信成功了,一脸懵逼状态。
6、无比尴尬的手动启动dbus服务,打开终端执行:$sudo system-tool.system-tool-daemon
7、启动图形程序:$system-tool, 效果如下图:
8、当然,我这个体验的snap程序例子很low,容我告知您如何快点卸载 $sudo snap remove system-tool
9、如果想将自己开发的snap发布到snap商店,首先注册一个Ubuntu One帐号,注册地址:https://dashboard.snapcraft.io/openid/login
10、有了帐号之后干嘛,自然是一条流水线生成操作步骤啦:登录->注册应用名->上传snap包->退出:
$snapcraft login
$snapcraft register system-tool (只有第一次上传该应用时才需要注册应用名)
$snapcraft push system-tool_1.0.2_amd64.snap --release beta
$snapcraft logout
11、上传后,你可以在邮箱等着snapcraft系统给你回邮件啦!很遗憾,由于我使用了自定义的plug和slot,自动审核失败了,我满腔热血的,居然就这样被拒绝了,需要人工审核,我也不知道何时能人工复审完成,能不能审核成功。
12、不知道会不会有人看,也不知道会不会有人看了后要体验下我的这个snap包,不管了,我脸皮厚,我贴出来:
https://dashboard.snapcraft.io/snaps/system-tool/