linux · 2024年 1月 22日 0

flatpak

概述

Flatpak是一种Linux应用程序打包和部署技术,它允许应用程序以独立的容器形式运行在各种Linux发行版上,无需依赖特定的库或版本。Flatpak提供了一个安全、简单和可靠的方式,让开发人员和用户在不同Linux发行版之间共享应用程序。Flatpak应用程序被称为“Flatpak包”或“Flatpak应用”。

如何安装Flatpak?

在大多数Linux发行版中,Flatpak已经预安装,但如果您的系统没有安装Flatpak,您可以按照以下步骤安装它:

打开终端并输入以下命令以安装Flatpak:

对于Debian/Ubuntu发行版:
sudo apt install flatpak

对于Fedora发行版:
sudo dnf install flatpak

对于OpenSUSE发行版:
sudo zypper install flatpak

添加Flatpak官方仓库:

flatpak remote-add –if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
这将允许您通过Flatpak安装各种应用程序。

如何添加新的Flatpak仓库?

打开终端并输入以下命令,以添加新的Flatpak仓库:
flatpak remote-add –if-not-exists <仓库名称> <仓库URL>

将 <仓库名称> 替换为您想要使用的仓库名称,将 <仓库URL> 替换为您要添加的仓库URL。例如,如果您要添加GIMP Flatpak仓库,则可以使用以下命令:

flatpak remote-add –if-not-exists gimp https://flathub.org/repo/appstream/org.gimp.GIMP.flatpakref

更新Flatpak仓库缓存:
flatpak update

现在,您可以使用Flatpak安装、运行和管理该仓库中的应用程序。例如,要安装GIMP,请使用以下命令:

flatpak install gimp

如何清理Flatpak的缓存?

打开终端并输入以下命令,以清理Flatpak缓存:
flatpak uninstall –unused
这将卸载您系统中未使用的Flatpak应用程序。

输入以下命令,以清理Flatpak运行时缓存:
flatpak uninstall –unused –runtime
这将卸载您系统中未使用的Flatpak运行时。

输入以下命令,以清理Flatpak缓存:
flatpak uninstall –unused –all
这将卸载您系统中未使用的Flatpak应用程序和运行时,以及清理Flatpak缓存。

完成后,您可以通过输入以下命令检查磁盘空间是否已释放:

df -h

这将显示您系统中所有分区的磁盘空间使用情况。

如何修复损坏的Flatpak应用程序?

打开终端并输入以下命令,以查找应用程序的运行时:
flatpak info –show-runtime <应用程序名称>

将 <应用程序名称> 替换为您要修复的应用程序名称。例如,如果您要修复GIMP应用程序,则可以使用以下命令:

flatpak info –show-runtime org.gimp.GIMP
这将显示GIMP应用程序使用的运行时的详细信息。

输入以下命令,以重新安装应用程序的运行时:
flatpak uninstall –force-remove <运行时名称>
flatpak install <运行时名称>

将 <运行时名称> 替换为应用程序使用的运行时名称。例如,如果GIMP使用的运行时是org.gnome.Platform,则可以使用以下命令:

flatpak uninstall –force-remove org.gnome.Platform flatpak install org.gnome.Platform
这将重新安装应用程序使用的运行时。

输入以下命令,以重新安装应用程序:
flatpak uninstall –force-remove <应用程序名称>
flatpak install <应用程序名称>

将 <应用程序名称> 替换为要修复的应用程序名称。例如,如果您要修复GIMP应用程序,则可以使用以下命令:

flatpak uninstall –force-remove org.gimp.GIMP flatpak install org.gimp.GIMP
这将重新安装应用程序并在运行时中重建损坏的部分。

完成这些步骤后,您的Flatpak应用程序应该能够正常运行。

Flatpak的优势是什么?

应用程序隔离性
Flatpak应用程序在独立的容器中运行,不会影响其他应用程序或系统设置,从而实现了更好的应用程序隔离性和安全性。

## 应用程序依赖管理
Flatpak应用程序可以打包其所需的所有依赖项,这意味着它们可以在不同的Linux发行版上运行,并且不需要在系统上安装特定的库或版本。

## 更新管理
Flatpak应用程序可以自动更新,这意味着您始终可以使用最新版本的应用程序,并且不需要手动更新。

## 多发行版支持
Flatpak应用程序可以在不同的Linux发行版之间共享,这使得应用程序的分发和使用更加简单和方便。

社区支持

Flatpak由一个庞大的社区支持,这意味着它可以获得广泛的支持和贡献,从而使其更加稳定、可靠和安全。

Flatpak如何解决软件依赖性问题?

Flatpak通过打包应用程序的所有依赖项来解决软件依赖性问题。这些依赖项通常是库和其他系统组件,应用程序需要它们来运行。

在传统的Linux软件包管理系统中,解决软件依赖性问题通常需要手动安装和管理依赖项。这可能会导致版本冲突、依赖项缺失等问题,从而导致应用程序无法正常运行。

Flatpak通过将应用程序的依赖项打包在一个独立的容器中来解决这些问题。这个容器称为“运行时”,它包含了应用程序运行所需的所有依赖项。当您安装Flatpak应用程序时,它会自动下载和安装所需的运行时,确保应用程序可以在任何系统上运行。

此外,Flatpak还支持多个运行时版本的共存,这意味着您可以在系统上同时安装多个不同版本的运行时,而不会发生任何冲突。这使得不同版本的应用程序可以使用不同版本的运行时,从而保持依赖性的兼容性。

Flatpak如何保证软件的安全性?

## 应用程序隔离
Flatpak应用程序在独立的容器中运行,与其他应用程序和系统组件隔离。这意味着即使应用程序存在漏洞或恶意代码,也无法对系统或其他应用程序造成损害。

## 应用程序签名
Flatpak应用程序使用数字签名进行验证,以确保它们来自可信的来源。这使得用户可以确认应用程序是否被篡改或被恶意软件替换。

## 沙箱环境
Flatpak应用程序运行在沙箱环境中,这意味着它们无法访问系统文件或其他敏感数据。此外,沙箱环境可以限制应用程序的访问权限,以防止它们执行恶意操作。

更新管理

Flatpak应用程序可以自动更新,以确保用户始终使用最新版本的应用程序。这可以减少应用程序受到已知漏洞或安全问题的风险。

安全审核

Flatpak应用程序需要通过Flatpak的安全审核过程才能被批准发布。这个过程包括自动和手动审查,以确保应用程序没有安全漏洞或恶意行为。

Reference

微信wechat-universal-flatpak

安装flatpak

sudo apt install flatpak

添加 Flathub 仓库

sudo flatpak remote-add –if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

下载wechat-universal

Releases · web1n/wechat-universal-flatpak · GitHub 39 或:

wget https://github.com/web1n/wechat-universal-flatpak/releases/download/2404090034/com.tencent.WeChat.flatpak

安装

sudo flatpak install com.tencent.WeChat.flatpak

启动应用

flatpak run com.tencent.WeChat //或通过菜单启动亦可

Reference

Snap, AppImage和 Flatpak之间差异

我们为什么需要Snap, Flatpak 和 AppImage?
早些时候,想要为各种Linux发行版分发应用程序的开发人员在打包方面面临许多挑战。这是因为市场上有许多Linux发行版,并且都使用不同的包管理系统。

例如,Ubuntu和其他基于debian的发行版使用 .deb包扩展,而Fedora、CentOS、RHEL使用 .rpm包扩展。这也适用于命令行(CLI)包管理器。此外,基于debian的发行版使用APT,而基于rhel的发行版使用DNF。因此,这些包(dnf、rpm等)最好的名称应该是与发行版相关的包格式。因此,开发人员必须按照目标发行版——Application_One.deb, Application_One.rpm等等打包他们的应用程序。

为了使Linux系统的软件开发和打包的整个过程更加简单和快速,开发人员构建了与发行版无关的包格式。它们包括Snap、Flatpak和AppImage。因此,通过这些包格式分发的任何应用程序都可以在支持这些框架的任何Linux系统上运行。

因此,让我们深入研究每一种包格式。

Flatpak

Flatpak由红帽员工亚历山大·拉尔森(Alexander Larsson)开发,并于2015年正式发布。它是用C编程开发的,提供了在Linux发行版上安装应用程序的一种快速和直接的方法。

Flatpak的工作原理是将一个应用程序组合并编译成一个包。此前,Flatpak被称为xdg-app。这个特定的框架使用了在沙箱环境中运行应用程序而不需要根特权的概念。因此,一些flatpak应用程序不能访问和利用系统的全部资源。

Flatpak应用程序主要针对三种桌面环境——FreeDesktop、KDE和GNOME。不幸的是,Flatpak不支持任何后端工具,因为它只生成在Desktop环境中运行的应用程序。这是这个包管理器的一个主要缺点,因为它不支持服务器,除非您安装像GNOME这样的桌面环境(DE)。

与Snap类似,Flatpak有一个名为Flathub的在线商店,用户可以在那里找到并下载他们想要的应用程序。Flathub首次发布时,只允许开发者发布免费和开源的应用程序。然而,在更新了他们的条款和条件之后,开发人员现在甚至可以发布专有包。

snap

Snap是由Canonical开发和维护的一个包管理器,于2014年首次发布。Snap是基于debian的发行版(比如Ubuntu)最好的备选包管理器之一。除了作为一个包存储,它还支持一个命令行界面来安装包。例如,要使用snap安装Brave浏览器,请执行以下命令:

sudo snap install braveCopy

它最初是为Ubuntu开发的,但已经很容易被其他Linux发行版采用,包括Arch、Linux Mint、CentOS、Gentoo和Fedora。这些发行版还包括对Snapcraft框架的支持。为了方便地维护包,Snap为所有Snap应用程序使用了一个中央包存储库。

Snap有一个在线应用商店(Snapcraft),用户可以在那里找到并安装应用程序。这对用户来说是一个相当大的优势,因为他们有一个大的库来搜索他们需要的任何软件包。Snapcraft也由canonical维护和控制。

此外,Snapcraft框架允许开发者开发他们的包,并将它们上传到Snap商店。你可以在Snapcraft页面的底部看到这些指导方针。-如何在30分钟内搞定一款应用。

AppImage

这个包格式是由Simon Peter开发的,并以Kik的名字首次发布到市场上。AppImage使用了与Java编程相同的概念——“编写一次,随处运行”或“一个应用程序,一个文件”。

AppImage包包含应用程序本身及其运行所需的所有依赖项。一旦你下载了文件,就说balena-etcher.AppImage,你不需要安装文件。只需为它分配正确的权限,使其可执行,然后运行它。例如,运行balena-etcher.AppImage文件,我将使用下面的命令:

sudo chmod +x balena-etcher.AppImage
./balena-etcher.AppImageCopy

像Snap和Flatpak包格式一样,AppImage也有一个在线仓库来查找和下载AppImage包——AppImage网站。

要更新AppImage包,您需要在下载文件时查看提供的更新指南。您也可以使用AppImage Updater或下载新版本的应用程序。AppImage支持Arch Linux、Centos、Debian、Fedora、OpenSUSE、Red Hat Linux和Ubuntu。

REFERENCE

使用 Flatseal 管理 Flatpak 的权限

添加访问文件夹权限

sudo flatpak override com.tencent.WeChat –filesystem=/home/alex/

删除访问文件夹权限

sudo flatpak override com.tencent.WeChat –nofilesystem=/home/alex/

REFERENCE

linuxcn

TOC