Canonical 演示为任意发行版创建一个 Snap 商店是如何的简单
Snappy 和 Flatpak 之间的争吵仍在继续中,现在 Canonical 在刚刚发布的 Fedora 24 上演示了创建一个厂商无关的 Snap 商店是多么的简单。
Snap 宣传它是面向各个主要 Linux 发行版的通用二进制软件包格式,人们对此非常关注,也有很多议论。就在几天前, Canonical 和 Ubuntu 的创始人 Mark Shuttleworth 对这些人们重点关注的问题做了一番答复,表示 Canonical 并不指望别的操作系统使用 Ubuntu 的 snap 商店,你们完全可以自己搞嘛,就是个 HTTPS 而已。
针对指责 Snap 商店没有开源的意见,Canonical 的 Ubuntu 产品与战略总监 Dustin Kirkland 说,“事实上,你可以在任何支持 Snap 的操作系统上运行你的 Snap 商店,真的。”
一个可以提供 Snap 软件包服务的最简单的示例商店
Dustin 给我们介绍了一个由开发者 Bret Barker 发布在 GitHub 上的一个概念性的独立 Snap 商店,这个软件以 Apache 许可证开源,你可以在 GitHub 上 fork 它,并安装到任何 GNU/Linux 发行版上去。
服务器端(Snap 商店)
“首先,我启动一个 AWS 实例,当然,我可以启动一个 Ubuntu 16.04 LTS 实例,但实际上我启动的是一个 Fedora 24 实例。”
如果你的机器上已经有了 snap 环境,你可以直接用:
snap install snapstore-example
来安装这个示例商店。
如果没有,你可以手动来安装。首先安装 python 虚拟环境:
sudo dnf install python-virtualenv
克隆这个示例商店的代码:
git clone https://github.com/noise/snapstore.git
cd snapstore
设置虚拟环境并安装依赖包:
virtualenv env
. env/bin/activate
pip install -r requirements.txt
运行:
python store.py
这样 snap 商店就安装好了,它会监听在默认的 5000 端口上。
客户端
在 Fedora 24 上运行
sudo dnf install snapd
来安装 Snappy,它同时也会安装必要的依赖包,如: squashfs-tools、kernel-modules。
你可以通过安装一个测试包来看看 snap 是否正常工作:
sudo snap install hello
如果正常的话,然后修改 /etc/environment
,加入你的商店 URL,强制 snapd (Snappy 守护进程)与刚刚创建的 Snap 商店连接:
SNAPPY_FORCE_CPI_URL=http://localhost:5000/api/v1/
重启 snapd:
sudo service snapd restart
这个示例商店支持如下命令来查找和安装 snap 软件包:
snap find foobar25
sudo snap install foobar25