使用AppImage进行Linux软件包管理

系统 Linux
AppImage 在自足的环境中分发应用, 它适用于任何 Linux 发行版。

[[330214]]

AppImage 在自足的环境中分发应用, 它适用于任何 Linux 发行版。

管理 Linux 机器(尤其是远程机器)的一个重要分就是管理和安装软件。当本地应用程序出现问题时,或者文件系统上的某些文件损坏需要修复时,你通常会希望推送更新,而不必走很多路坐在物理屏幕前。正如我在 Pluralsight 课程《Linux 系统维护和故障排除》中所解释的那样,许多问题当然可以通过 Bash 脚本解决,但是仍有很多情况下,除了老式的二进制文件外,没有其他选择。

想象一下,你的某些远程系统需要安装新的应用程序,这样使用这些计算机的团队成员就能够执行某些业务。能够利用 Debian 或 RPM 之类的主要 Linux 仓库系统的集成和自动化,可以使你的管理任务变得更加容易。

正如 Linus Torvalds 永不厌倦地提醒我们的那样,太多的 Linux 软件管理系统的问题是 Linux 软件管理系统太多了。多年来,应用开发甚至是 Linux 的采用都变得愈加复杂起来,因为你为了提供你的软件(比如,放到 Debian 仓库)而投入的所有时间和工作,对于你想让它们进入 RPM 系统并没有什么帮助,对于 SUSE 的 Zypper 管理器也一样,没有什么帮助。

解决软件孤岛问题的一种有前途的方案是分发具有自足环境的应用,它们可以在任何 Linux 发行版上运行。在这个年轻且不断发展的领域中,选择之一是 AppImage

使用 AppImage

我全面投入到了 AppImage。就像我提到的其他软件包管理系统一样,如果你需要的话,有很多复杂的功能可以使用。但是,从本质上讲,AppImage 非常简单。AppImage 不像大多数其他包管理器一样通过仓库工作,它使用单个、独立的文件,可以直接发送或通过网站共享。

下面是个展示它的美妙之处的例子。当我在用 AppImage 时,我在一个技术论坛上看到了一个很老的讨论,它让我找到了一个同样久远且废弃的 GitHub 项目以及相关的 YAML 和配方文件。它们旨在自动构建准备生成 AppImage 包所需的相当复杂的基础架构。尽管该基础架构全部是在 5 年前的 Ubuntu 版本上构建的,但是当我将它们放在一起并运行 appimagetool 命令时,它创建了一个 AppImage 文件,它可在我当前的桌面上无缝运行。我不认为有很多有五年历史的 GitHub 复杂项目可以使用其他技术运行,而无需认真重做。

但是这里我我不会介绍这个案例。相反,我将用一个简单的 Hello World 程序向你展示它是如何工作的。首先,请确保本地已安装 AppStream 包。

对于基于 Debian 的系统,运行:

  1. $ sudo apt install appstream

对于 RPM 系统,请使用:

  1. $ sudo dnf install appstream

克隆这篇文章中提及的 Git 仓库,我会基于它示例:

  1. $ git clone <https://github.com/boolean-world/appimage-resources>
  2. $ cd appimage-resources
  3. $ ls hello-world-appimage

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

Linux GUI 系统会读取 helloworld.desktop 文件来知道如何呈现桌面图标。事实证明,当前的这个文件会在以后给你带来点麻烦,因此请进行一些小修改:添加 Categories= 这行并为其赋予值 GNOME。不要忘记最后的分号:

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

从 AppImage GitHub 项目下载 appimagetool 预编译的二进制文件。访问 GitHub 的原因之一:那里有很多出色的文档和资源。下载二进制文件后,使文件可执行,并将 hello-world-appimage 目录传给它。但是首先,你需要告诉它你想要的架构。由于某些原因,一个名字以 x86_64 结尾的工具都不能自行确定是否该使用 x86_64 来构建应用程序(我不知道这是怎么回事)。

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

如果你没有看到任何错误消息,那么表示完成了,请运行:

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

总结

AppImage 是软件包管理的非常有效的选择。当你探索它时,我想你会发现它是 Linux 发行版默认软件包系统的很好的替代品。

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2016-01-29 14:32:19

Linux软件包管理

2016-12-27 10:34:57

Linux命令软件包管理

2022-05-04 11:10:58

Linuxdnf 命令

2022-05-07 11:08:50

Linuxapt 命令

2021-02-28 13:26:15

Linux软件包管理器软件仓库

2010-01-11 17:49:08

Fedora软件包

2010-01-05 10:14:09

Ubuntu软件包

2017-02-06 19:58:31

DebianLinux软件包

2013-09-29 10:14:24

YUM软件包管理Linux YUM

2010-02-05 14:46:20

Ubuntu软件包

2010-01-06 16:33:24

Ubuntu软件包

2018-11-22 08:00:00

Linux软件包管理器Nix

2020-06-01 07:00:00

WingetWindows 10软件包管理器

2010-01-11 18:59:45

Fedora Core

2010-02-03 16:29:56

2015-09-14 16:12:23

命令DNFLinux

2020-06-28 13:56:01

UbuntuAptSynaptic

2021-05-28 16:00:45

Windows操作系统微软

2021-01-30 09:23:27

Windows操作系统微软

2023-01-17 07:40:59

LinuxAppImage应用程序
点赞
收藏

51CTO技术栈公众号