一个讨论:
为什么linux发行版之间不能有一个统一的二进制软件包标准?
flatpak 和 snap, 可以看作是 linux 软件的 打包技术 ( 应该可以看作对于 Windows msi 的模仿吧 )
https://www.reddit.com/r/linu...
flatpak 和 snap 是 Linux 上的应用软件打包方式,未来可能会流行
flatpak 的安装
https://flatpak.org/setup
使用
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak search Eolie
flatpak --user install flathub org.gnome.Eolie
flatpak list
flatpak run Eolie
flatpak 的目录结构( 用 flatpak 安装软件 是不需要 sudo 权限的 )
https://github.com/flatpak/flatpak/wiki/Filesystem
snap 的安装
https://docs.snapcraft.io/installing-snapd
使用
snap search midori
sudo snap install midori
snap list
snap run midori
snap 的目录结构
https://docs.snapcraft.io/the-system-snap-directory
显然,Flatpak 是 Fedora 主导开发的,Snap 是 Canonical 主导开发的
RPM 和 deb 的分裂有望被 Flatpak 和 Snap 替代。关键词:安全性、沙盒、一次构建 多平台分发。
Linux社区出现了两种新的应用打包格式,其一是Ubuntu力推的snap格式,另一种是Red Hat主导开发的Flatpak格式,两种包格式都利用了沙盒隔离应用,增强安全性
App store for Flatpak
App store for Snap
Apps for winepak
AppImage 连一个 App Store 都没有,你叫一个开发者打包完了东西给谁用?
我看到的 Flatpak 胜过 Snap 的地方是:
1.有一个很好的中间层( Flatpak runtime )(Snap 有类似的东西嘛?我没发现),所以可以做到支持类似 winepak 的玩法。Flatpak runtime 是由 Flatpak 官方维护的。
2.Flatpak 已经做到了在服务器和IoT小型设备(比如树莓派)的流行,桌面平台只是它的一个方面而已;Snap 似乎是主攻电脑桌面平台的,Canonical (和 Debian community 无关)做的事情 往往没有财大气粗的 RedHat 靠谱,前者仅仅是网络宣传方面做得比较好罢了,具体的 隔离应用的沙盒技术是怎样的 我没有看到。Snap 官方似乎仅仅维护了一个 Snap core ,how could it be this simple? It seems like it is not ready at all.
3.我不相信一个没钱的公司(Canonical)会来好好兼容一个有钱的公司的平台(RedHat),而 Canonical 这家公司做生意的方式一贯如此,就像它在 ownCloud 的故事里的前科:看似开源又依赖社区 实则太多的不透明。看看几家 Linux 公司(commercial Linux companies: Red Hat, SUSE, Canonical),哪个像它一样做生意?这个公司在业界已经臭掉了,只能靠取悦小白用户说事。就像我不相信一个穷人能慷慨地‘分给’富人什么好东西,穷人没这个义务 做也不用指望穷人能做好。
4.我相信未来 Linux 桌面软件一定是越来越傻瓜化(也就是向 Windows msi 式的打包技术靠拢的),一句话:containers are the future of apps on Linux.
5.It’s pretty clear that in the container-centric world, Linux does need a new app delivery mechanism —— 找到一个合适的软件分发方式,这难道不是一个电脑公司从一开始就该做的事情吗?(这里是指 它的意义极大,有奠基作用。) Windows 有 Windows msi 作为软件打包方式 便于安装,从一开始就是这样做的。30年了,这也是这个世界上 Windows 软件远远多于 Linux 软件的原因。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。