使用 AppImage 进行 Linux 软件包管理

AppImage 在自包含环境中分发应用程序,这些环境可在任何 Linux 发行版上运行。
103 位读者喜欢这篇文章。
Gift box opens with colors coming out

Opensource.com

管理 Linux 机器(尤其是远程机器)的一个重要部分是管理和安装软件。当本地应用程序出现问题,或者文件系统上的某些东西损坏并需要修复时,您通常希望推送更新,而无需长途跋涉到物理屏幕前。正如我在我的 Pluralsight 课程 Linux 系统维护和故障排除 中解释的那样,当然很多问题可以通过 Bash 脚本解决,但仍然有很多情况下,除了传统的二进制文件之外别无选择。

想象一下,您的一些远程系统需要安装新的应用程序,以便使用这些计算机的团队成员能够执行某些业务功能。能够利用主要 Linux 存储库系统(如 Debian 或 RPM)的集成和自动化,可以使您的管理任务轻松得多。

正如 Linus Torvalds 不厌其烦地提醒我们,许多 Linux 软件管理系统的问题在于 Linux 软件管理系统太多了。多年来,应用程序开发甚至 Linux 采用都因这样一个事实而变得复杂:您在为 Debian 存储库准备软件上投入的所有时间和精力,如果您想将它们放入 RPM 系统,将无济于事。对于 SUSE 的 Zypper 管理器来说,这也没有帮助。

解决软件孤岛问题的一个有希望的解决方案是使用自己的自包含环境分发应用程序,这些环境可在任何 Linux 发行版上运行。在这个年轻且不断发展的领域中,一个标准选项是 AppImage

使用 AppImage

我完全支持 AppImage。与我提到的其他软件包管理系统一样,如果您需要,它也提供了大量的复杂性。但是,AppImage 的核心实际上非常简单。AppImage 不是像大多数其他软件包管理器那样通过存储库工作,而是可以被直接发送或通过网站共享的单个独立文件。

这是一个关于它优点的例证。当我在研究 AppImage 时,我在一个技术论坛上偶然发现了一个非常古老的讨论,这让我找到了一个同样古老且被废弃的 GitHub 项目以及相关的 YAML 和配方文件。它们旨在自动构建生成 AppImage 软件包所需的归档文件所需的相当复杂的基础架构。尽管该基础架构都是为在五年前发布的 Ubuntu 版本上运行而构建的,但当我将它们放在一起并针对它运行 appimagetool 命令时,它创建了一个 AppImage 文件,该文件在我当前的桌面上无缝运行。我不认为有太多五年前的 GitHub 项目具有如此复杂性,可以在不进行大量修改的情况下使用其他技术运行。

但我不会深入探讨那里。相反,我将向您展示它如何与一个非常简单的 Hello World 应用程序一起工作。首先,确保 AppStream 软件包已在本地安装。

对于基于 Debian 的系统,运行

$ sudo apt install appstream

对于 RPM 系统,使用

$ sudo dnf install appstream

克隆 本文 中引用的 Git 仓库,我的示例基于此文

$ git clone https://github.com/boolean-world/appimage-resources
$ cd appimage-resources
$ ls hello-world-appimage

接下来,cd 进入 Git 创建的新目录,并四处看看。这里有两个目录。使用 hello-world-appimage;另一个是更复杂的项目,您也应该考虑尝试一下。

helloworld.desktop 文件是 Linux GUI 系统读取以了解如何处理它们呈现桌面图标的方式的文件。事实证明,当前文件的编写方式稍后会给您带来麻烦,因此进行一个小的编辑:添加 Categories= 行并将其值设置为 GNOME。并且不要忘记末尾的分号

$ nano hello-world-appimage/helloworld.desktop
	add Categories=GNOME;

AppImage GitHub 项目 下载 appimagetool 二进制文件的预编译副本。务必访问 GitHub 站点——那里有大量优秀的文档和资源。下载二进制文件后,使该文件可执行并将其指向 hello-world-appimage 目录。但首先,您需要告诉它您想要的架构。由于某种原因,名称以 x86_64 结尾的工具在选择是否使用 x86_64 构建应用程序时会变得不稳定(我不确定那里发生了什么)

$ wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
$ chmod +x appimagetool-x86_64.AppImage 
$ ARCH=x86_64 ./appimagetool-x86_64.AppImage hello-world-appimage

如果您没有看到任何愤怒的错误消息,那么您就可以运行它了

$ ls
$ ./hello-world-appimage-x86_64.AppImage

结论

AppImage 是软件包管理的一个非常有效的选择。当您探索它时,我认为您会发现它是 Linux 发行版提供的默认设置的绝佳替代方案。

接下来阅读
标签
David Clinton
DAVID CLINTON 是一位系统管理员、教师和作家。他管理过、撰写过并为许多重要的技术主题(包括 Linux 系统、云计算(尤其是 AWS)和容器技术(如 Docker))创建过培训材料。

2 条评论

我也是 AppImage 的粉丝。我还没有成功地将 Python 应用程序打包到最新版本的 AppImage 中,但我很喜欢使用我从 Krita 和其他项目下载的 AppImage。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© . All rights reserved.