AppImages 让 linux 开发人员可以将他们的应用程序打包到一个文件中,该文件可以安装在任何 Linux 发行版上。这极大地简化了事情。以下是如何使用它们,并将它们集成到您的桌面中。
在 Linux 上安装软件
安装软件应该简单方便。最终结果是多么简单和多么方便很大程度上取决于您的发行版的包管理器。包管理器是允许您下载其他 Linux 程序并安装它们的软件应用程序。
衍生 Linux 发行版倾向于使用其父发行版的包管理器。例如,许多 Debian 变体和衍生产品使用 .RedHat 和 Fedora 发行版 ,以及 Arch 系列发行版使用. 所以,值得庆幸的是,没有多少包管理器有发行版。
apt
dnf
pacman
即便如此,从开发人员的角度来看,支持所有不同的包格式意味着将您的应用程序包装到Debian 系列的 DEB 文件中,以及 RedHat 系列的 RPM 中,等等。这是很多额外的开销。
这也意味着,如果开发人员和其他任何人都没有为您的发行版创建安装包,则您无法安装该软件。至少,不是本地的。
您也许可以将来自不同发行版的软件包硬塞到您的计算机上,但这不是一种没有风险的方法,也不能保证有效。如果您知道自己在做什么,您可以下载源代码并在您的计算机上构建应用程序,但这远非简单方便。
Snap 和 Flatpak等项目 旨在克服为每个发行版打包应用程序的问题。如果您可以将一个包包装到一个文件中,以便它与适当的库和它所具有的任何其他依赖项捆绑在一起,那么它(实际上)对主机操作系统没有要求,它应该能够在任何操作系统上运行分配。
AppImage 项目就是这样一个倡议。AppImage 是项目的名称,AppImages 是包装应用程序的名称。
AppImage 的工作原理
AppImage 文件不是传统意义上的安装。构成应用程序包的组件文件都包含在一个文件中。它们不会被解包并存储在文件系统的不同目录中。
包管理器安装的应用程序会将其可执行文件复制到适当的“/bin”目录中,其页面将存储在“/usr/share/man”目录中,依此类推。AppImages 不会发生解包和复制步骤。
man
AppImage 中有一个文件系统,通常是squashFS 文件系统。运行应用程序所需的文件存储在此文件系统中,而不是在 Linux 安装的主文件系统中。执行 AppImage 时,它
会启动其内部帮助程序之一,该程序将 squashFS 文件系统安装在“/tmp/mount”中,以便可以从您的主文件系统访问它。然后它会启动应用程序本身。
这就是为什么从 Snaps、Flatpaks 和 AppImages 启动应用程序比运行常规应用程序稍慢的原因。为了使用所有这些工作,主机文件系统必须安装名为“用户空间中的文件系统”的东西。这是 AppImages 放在主机上的唯一依赖项。FUSE 通常预装在现代 Linux 发行版上。
使用 AppImage 文件
您需要做的第一件事是为您想要的应用程序下载 AppImage。这些不会在您的发行版的存储库中。通常,您可以在应用程序本身的网站上找到它们。
我们将下载并使用开源 3D 计算机辅助设计包 FreeCAD。浏览到 FreeCAD 下载页面 并单击“64 位 AppImage”按钮。
下载后,在终端窗口中找到该文件。除非您更改了 Web 浏览器的默认设置,否则它可能位于您的“下载”目录中。我们需要使用 AppImage 可执行。我们将使用该 命令来添加(可执行)权限。
chmod
chmod +x FreeCAD-0.20.0-Linux-x86_64.AppImage
我们已经下载了我们的文件并使其可执行。要执行它,我们可以按名称调用它。
./FreeCAD-0.20.0-Linux-x86_64.AppImage
这就是我们在 Fedora 和 Manjaro 上要做的所有事情。在Ubuntu 22.04上,我们必须安装一个库文件。FUSE 已经安装在 Ubuntu 22.04 上,但它比大多数 AppImages 使用的版本更新。安装库文件不会影响已安装的 FUSE 版本。
sudo apt install libfuse2
这立即解决了问题,我们可以在 Ubuntu Jammy Jellyfish 22.04 上毫无问题地启动 AppImages。
这一切都很棒。但是如果你想吃蛋糕怎么办?想象一下,如果有一种不需要您从终端窗口启动它们的方式来使用 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”代表软件的版本号。
请注意,有 AppImageLauncherLite和 AppImageLauncher 的链接。使用 AppImageLauncher 链接。
导航到您下载的文件,然后双击它开始安装。在GNOME上,这将启动“软件”应用程序。
在 Manjaro 上,您可以使用以下命令安装 AppImageLauncher:
sudo pacman -S appimagelauncher
您可以通过按“Super”键启动 AppImageLauncher。在大多数键盘上,它位于左侧的“Ctrl”和“Alt”键之间。在搜索栏中输入“appim”。
AppImageLauncher 图标将出现。单击它以启动应用程序。
有一点点配置要做。我们需要告诉 AppImageLauncher 我们希望它监控哪个目录。单击“文件夹”图标并浏览到您通常存储 AppImage 的目录。我们选择了“下载”目录。如果你愿意,你可以选择一个子目录,也许是“/Downloads/apps”。
如果您希望 AppImageLauncher 将它在其他目录中找到的 AppImage 移动到您的监视目录中,请确保选中“询问是否将 AppImage 文件移动到应用程序目录”复选框。但是如果 AppImageLauncher 只监控一个目录,它如何在其他任何地方找到 AppImages 呢?
答案在于“appimagelauncherd”选项卡。单击“appimagelauncherd”选项卡,您会看到 AppImage 可以监控多个目录。
单击绿色的“加号”图标以添加更多目录。确保选中“自动启动自动集成守护程序”复选框。做出选择后,单击“确定”按钮。
等待几分钟,然后按“Super”键并键入监控目录中的 AppImage 名称的第一部分。在我们的例子中,我们只有一个。
只要您输入“free”,您应该会看到 FreeCAD 的图标。单击它会启动应用程序。如果 AppImage 文件不包含图标,则使用通用齿轮图标,FreeCAD 就是这种情况。
为了进一步测试,我们下载了 Subsurface 应用程序的 AppImage文件。我们等了大约 30 秒以确保它已被发现并集成,然后按下“Super”键,输入“sub”,应用程序图标出现。这一次,已经找到并使用了该应用程序的正版图标。
单击图标启动应用程序。我们甚至不需要使用来使 AppImage 可执行。
chmod
另一个不错的方法是右键单击图标可以让您从上下文菜单中删除 AppImage。
还有一个选项可以将图标固定到您的启动器,使 AppImages 的使用与本机应用程序一样方便。
AppImage 正在兴起
在我们的测试机器上,从 AppImages 启动的应用程序加载速度略快于 Flatpak 应用程序,并且比 Snap 应用程序快很多。使用 AppImages 不需要安装任何底层框架,因此除了应用程序本身所需的空间外,使用 AppImages 的硬盘占用空间为零。
可选的 AppImageLauncher 应用程序增加了一些技巧,但没有它您也可以愉快地使用 AppImages。
越来越多的应用程序提供 AppImages。如果您发现自己尝试安装的东西似乎不在您的发行版存储库中,请查看该应用程序的网站。他们很可能有一个 AppImage。