×

Linux软件新的打包方式:Flatpak

96
LanceAdd
2017.10.14 22:33* 字数 872

简单的介绍下他

Flatpak(前世为xdg-app) 是一种用于构建,分发,安装和运行应用程序的技术。它主要针对的是Linux桌面,通过在沙箱中隔离应用程序来提高Linux桌面的安全性,允许应用程序安装在任何Linux发行版上。

其实说白了就是解决了Linux软件安装时的依赖问题(和我一样使用debain系列并且使用gdebi的同学表示我们用的挺好的)解决过程就是把依赖一起打包进去。

现在deepin开始了仓库迁移计划,部分软件开始提供flatpak包安装,用deepin的小伙伴们还是过得比较滋润的。

毕竟为了发展成真正可以独当一面的伟大linux,deepin使用flatpak也是为了尽可能的回避Linux长久以来的依赖问题,并且由于类似于沙盒,不会干扰系统(绿色啊),算是一种比较实在的解决方法吧,这样也促使开发者竟可能的使用依赖较少的软件结构,这样也有利于软件的瘦身,不然要是像qt那种玩意,我估计是“哇,我还是不装了吧”

好吧不多说了上例子吧,这边使用官网的Helloworld例子吧(我也是刚刚接触,来传播一下而已)

第一步:install flatpak

Fedora用户(毕竟红帽亲儿子)

$ sudo dnf install flatpak

ubuntu用户:

$ sudo add-apt-repository ppa:alexlarsson/flatpak

$ sudo apt update

$ sudo apt install flatpak

第二步:install a runtime

Flatpak要求每一个应用指定一个只包含这个应用所需要的依赖的runtime,我们使用gnome的开发平台对应的runtime,为了安装他我们需要先使用ppa添加软件仓库

flatpak remote-add --from gnome https://sdk.gnome.org/gnome.flatpakrepo

然后安装

$ flatpak install gnome org.gnome.Platform//3.22

环境安装完成后我们就可以开始创建我们的经典项目HelloWod了

首先我们需要按照标准创建项目目录(app的源代码目录):

$ mkdir hello

$ mkdir hello/files

$ mkdir hello/files/bin

$ mkdir hello/export

然后我们需要在bin目录下创建一个简单的脚本打印HelloWorld

即在hello/files/bin下创建helloworld.sh

helloworld.sh中写入去下内容:

#!/bin/sh

echo "Hello world, from a sandbox"

然后我们需要提供一些关于我们应用的信息,我们载hello目录下创建一个文件metdata,内容为

[Application]

name=org.test.Hello

runtime=org.gnome.Platform/x86_64/3.22

command=hello.sh

指定应用,runtime以及一些其他信息

好了现在我们可以去打包应用了

打包扔仓库

flatpak build-export repo hello

这会创建一个本地仓库repo放我们的应用

好了我们已经打包好了我们的应用,可以开始安装了

flatpak --user remote-add --no-gpg-verify tutorial-repo repo

flatpak --user install tutorial-repo org.test.Hello

OK我们完成了,这个软件会安装的我们的当前用户的家目录下

让我们运行一下

flatpak run org.test.Hello

他会打印出:Hello world, from a sandbox

大功告成

希望deepin能帮忙汉化下官方文档,毕竟看着吃力。

剩下的周末更新,我得把我们宿舍的大作业给搞了,单撸代码的日子又到了

日记本
Web note ad 1