如何在 Linux 上使用 AppImage

已发表: 2022-09-27
蓝色背景上的笔记本电脑,显示 Linux 命令提示符。
fatmawati achmad zaenuri/Shutterstock.com

AppImages 让 Linux 开发人员可以将他们的应用程序打包到一个文件中,该文件可以安装在任何 Linux 发行版上。 这极大地简化了事情。 以下是如何使用它们,并将它们集成到您的桌面中。

在 Linux 上安装软件

安装软件应该简单方便。 事实证明这有多简单和多方便很大程度上取决于您的发行版的包管理器。 包管理器是允许您下载其他 Linux 程序并安装它们的软件应用程序。

衍生 Linux 发行版倾向于使用其父发行版的包管理器。 例如,许多 Debian 变体和衍生产品使用apt ,RedHat 和 Fedora 发行版使用dnf ,Arch 系列发行版使用pacman 。 所以,值得庆幸的是,没有多少包管理器有发行版。

即便如此,从开发人员的角度来看,支持所有不同的包格式意味着将您的应用程序包装到 Debian 系列的 DEB 文件中,以及 RedHat 系列的 RPM 中,等等。 这是很多额外的开销。

这也意味着,如果开发人员和其他任何人都没有为您的发行版创建安装包,则您无法安装该软件。 至少,不是本地的。

如何将 Linux 安装包转换为其他格式
相关如何将 Linux 安装包转换为其他格式

您也许可以将来自不同发行版的软件包硬塞到您的计算机上,但这不是一种没有风险的方法,也不能保证有效。 如果您知道自己在做什么,您可以下载源代码并在您的计算机上构建应用程序,但这远非简单方便。

Snap 和 Flatpak 等项目旨在克服为每个发行版打包应用程序的问题。 如果您可以将一个包包装到一个文件中,以便它与适当的库和它所具有的任何其他依赖项捆绑在一起,那么它(实际上)对主机操作系统没有要求,它应该能够在任何操作系统上运行分配。

AppImage 项目就是这样一个倡议。 AppImage 是项目的名称,AppImages 是包装应用程序的名称。

AppImage 的工作原理

AppImage 文件不是传统意义上的安装。 构成应用程序包的组件文件都包含在一个文件中。 它们不会被解包并存储在文件系统的不同目录中。

包管理器安装的应用程序会将其可执行文件复制到适当的“/bin”目录中,其man页将存储在“/usr/share/man”目录中,依此类推。 AppImages 不会发生解包和复制步骤。

AppImage 中有一个文件系统,通常是 squashFS 文件系统。 运行应用程序所需的文件存储在此文件系统中,而不是在 Linux 安装的主文件系统中。 执行 AppImage 时,它​​会启动其内部帮助程序之一,该程序将 squashFS 文件系统安装在“/tmp/mount”中,以便可以从您的主文件系统访问它。 然后它会启动应用程序本身。

这就是为什么从 Snaps、Flatpaks 和 AppImages 启动应用程序比运行常规应用程序稍慢的原因。 为了使所有这些工作,主机文件系统必须安装名为“用户空间中的文件系统”的东西。 这是 AppImages 放在主机上的唯一依赖项。 FUSE 通常预装在现代 Linux 发行版上。

使用 AppImage 文件

您需要做的第一件事是为您想要的应用程序下载 AppImage。 这些不会在您的发行版的存储库中。 通常,您可以在应用程序本身的网站上找到它们。

我们将下载并使用开源 3D 计算机辅助设计包 FreeCAD。 浏览到 FreeCAD 下载页面并单击“64 位 AppImage”按钮。

FreeCAD 下载页面

下载后,在终端窗口中找到该文件。 除非您更改了 Web 浏览器的默认设置,否则它可能位于您的“下载”目录中。 我们需要使 AppImage 可执行。 我们将使用chmod命令添加-x (可执行)权限。

 chmod +x FreeCAD-0.20.0-Linux-x86_64.AppImage 

使用 chmod 命令使 AppImage 可执行

我们已经下载了我们的文件并使其可执行。 要执行它,我们可以按名称调用它。

 ./FreeCAD-0.20.0-Linux-x86_64.AppImage 

启动 AppImage 文件

这就是我们在 Fedora 和 Manjaro 上要做的所有事情。 在 Ubuntu 22.04 上,我们必须安装一个库文件。 FUSE 已经安装在 Ubuntu 22.04 上,但它比大多数 AppImages 使用的版本更新。 安装库文件不会影响已安装的 FUSE 版本。

 sudo apt install libfuse2 

安装 libfuse2 库文件

这立即解决了问题,我们可以在 Ubuntu Jammy Jellyfish 22.04 上毫无问题地启动 AppImages。

从 AppImage 运行的 freeCAD 应用程序

这一切都很棒。 但是如果你想吃蛋糕怎么办? 想象一下,如果有一种使用 AppImages 的方法不需要您从终端窗口启动它们。 能够像常规的原生应用程序一样启动 AppImage 应用程序会更方便。

这里有一个明显的矛盾——AppImages 的全部意义在于它们不安装传统意义上的自身,包括它们不集成到您的桌面中。 但是 AppImageLauncher 仍然可以。

AppImageLauncher

AppImageLauncher 监视指定目录。 它扫描目录,寻找 AppImage 文件。 对于它找到的每一个,它都会提取应用程序图标(如果有的话)并将 AppImage 集成到桌面中,就像一个常规应用程序一样。

对于添加到目录的每个新 AppImage,都会重复此操作。 当它检测到 AppImage 已被删除时,它会删除集成。 因此,只需将下载的 AppImage 文件拖放到受监控的目录中,它们就会集成到您的桌面环境中。

如果您使用的是 Ubuntu 或 Fedora,请转到 AppImageLauncher 下载页面并单击“发布构建(最新)”部分中的“资产”链接。

对于 Fedora,点击“appimagelauncher-XXX.x86_64.rpm”链接,对于 Ubuntu,点击“appimagelauncher_XXX.bionic_arm64.deb”文件。 “XXX”代表软件的版本号。

AppImageLauncher RPM 和 DEB 下载链接

请注意,有 AppImageLauncher Lite和 AppImageLauncher 的链接。 使用 AppImageLauncher 链接。

导航到您下载的文件,然后双击它开始安装。 在 GNOME 上,这将启动“软件”应用程序。

在 Ubuntu 软件程序中打开的 AppImageLauncher DEB 文件

在 Manjaro 上,您可以使用以下命令安装 AppImageLauncher:

 sudo pacman -S appimagelauncher 

在 Manjaro 上安装 AppImageLauncher

您可以通过按“Super”键启动 AppImageLauncher。 在大多数键盘上,它位于左侧的“Ctrl”和“Alt”键之间。 在搜索栏中输入“appim”。

AppImageLauncher 图标将出现。 单击它以启动应用程序。

AppImageLauncher 主屏幕

有一点点配置要做。 我们需要告诉 AppImageLauncher 我们希望它监控哪个目录。 单击“文件夹”图标并浏览到您通常存储 AppImage 的目录。我们选择了“下载”目录。 如果你愿意,你可以选择一个子目录,也许是“/Downloads/apps”。

将 /home/dave/Downloads 设置为监控目录的 AppImageLauncher 应用程序

如果您希望 AppImageLauncher 将它在其他目录中找到的 AppImage 移动到您的监视目录中,请确保选中“询问是否将 AppImage 文件移动到应用程序目录”复选框。 但是如果 AppImageLauncher 只监控一个目录,它如何在其他任何地方找到 AppImages 呢?

答案在于“appimagelauncherd”选项卡。 单击“appimagelauncherd”选项卡,您会看到 AppImage 可以监控多个目录。

AppImageLauncher 应用程序的 appimagelauncherd 选项卡

单击绿色的“加号”图标以添加更多目录。 确保选中“自动启动自动集成守护程序”复选框。 做出选择后,单击“确定”按钮。

等待几分钟,然后按“Super”键并键入受监控目录中的 AppImage 名称的第一部分。 在我们的例子中,我们只有一个。

只要您输入“free”,您应该会看到 FreeCAD 的图标。 单击它会启动应用程序。 如果 AppImage 文件不包含图标,则使用通用齿轮图标,FreeCAD 就是这种情况。

为了进一步测试,我们下载了 Subsurface 应用程序的 AppImage 文件。 我们等了大约 30 秒以确保它已被发现并集成,然后按下“Super”键,输入“sub”,应用程序图标出现。 这一次,已经找到并使用了该应用程序的正版图标。

单击图标启动应用程序。 我们甚至不需要使用chmod来使 AppImage 可执行。

从 AppImage 运行的 Subsurface 应用程序

另一个不错的方法是右键单击图标可以让您从上下文菜单中删除 AppImage。

地下上下文菜单

还有一个选项可以将图标固定到您的启动器,使 AppImages 的使用与本机应用程序一样方便。

AppImage 正在兴起

在我们的测试机器上,从 AppImages 启动的应用程序加载速度略快于 Flatpak 应用程序,并且比 Snap 应用程序快很多。 使用 AppImages 不需要安装任何底层框架,因此除了应用程序本身所需的空间外,使用 AppImages 的硬盘占用空间为零。

可选的 AppImageLauncher 应用程序增加了一些技巧,但没有它您也可以愉快地使用 AppImages。

越来越多的应用程序提供 AppImages。 如果您发现自己尝试安装的东西似乎不在您的发行版存储库中,请查看该应用程序的网站。 他们很可能有一个 AppImage。

相关: apt 与 apt-get:Linux 有什么区别?