AppImage 在自足的环境中分发应用, 它适用于任何 Linux 发行版。linux
管理 Linux 机器(尤为是远程机器)的一个重要分就是管理和安装软件。当本地应用程序出现问题时,或者文件系统上的某些文件损坏须要修复时,你一般会但愿推送更新,而没必要走不少路坐在物理屏幕前。正如我在 Pluralsight 课程《Linux 系统维护和故障排除》中所解释的那样,许多问题固然能够经过 Bash 脚本解决,可是仍有不少状况下,除了老式的二进制文件外,没有其余选择。git
想象一下,你的某些远程系统须要安装新的应用程序,这样使用这些计算机的团队成员就可以执行某些业务。可以利用 Debian 或 RPM 之类的主要 Linux 仓库系统的集成和自动化,可使你的管理任务变得更加容易。github
正如 Linus Torvalds 永不厌倦地提醒咱们的那样,太多的 Linux 软件管理系统的问题是 Linux 软件管理系统太多了。多年来,应用开发甚至是 Linux 的采用都变得越发复杂起来,由于你为了提供你的软件(好比,放到 Debian 仓库)而投入的全部时间和工做,对于你想让它们进入 RPM 系统并无什么帮助,对于 SUSE 的 Zypper 管理器也同样,没有什么帮助。bash
解决软件孤岛问题的一种有前途的方案是分发具备自足环境的应用,它们能够在任何 Linux 发行版上运行。在这个年轻且不断发展的领域中,选择之一是 AppImage。架构
我全面投入到了 AppImage。就像我提到的其余软件包管理系统同样,若是你须要的话,有不少复杂的功能可使用。可是,从本质上讲,AppImage 很是简单。AppImage 不像大多数其余包管理器同样经过仓库工做,它使用单个、独立的文件,能够直接发送或经过网站共享。app
下面是个展现它的美妙之处的例子。当我在用 AppImage 时,我在一个技术论坛上看到了一个很老的讨论,它让我找到了一个一样久远且废弃的 GitHub 项目以及相关的 YAML 和配方文件。它们旨在自动构建准备生成 AppImage 包所需的至关复杂的基础架构。尽管该基础架构所有是在 5 年前的 Ubuntu 版本上构建的,可是当我将它们放在一块儿并运行 appimagetool
命令时,它建立了一个 AppImage 文件,它可在我当前的桌面上无缝运行。我不认为有不少有五年历史的 GitHub 复杂项目可使用其余技术运行,而无需认真重作。工具
可是这里我我不会介绍这个案例。相反,我将用一个简单的 Hello World 程序向你展现它是如何工做的。首先,请确保本地已安装 AppStream 包。网站
对于基于 Debian 的系统,运行:ui
$ sudo apt install appstream
复制代码
对于 RPM 系统,请使用:spa
$ 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
。另外一个是更复杂的项目,你也应该考虑尝试一下。
Linux GUI 系统会读取 helloworld.desktop
文件来知道如何呈现桌面图标。事实证实,当前的这个文件会在之后给你带来点麻烦,所以请进行一些小修改:添加 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 发行版默认软件包系统的很好的替代品。
via: opensource.com/article/20/…
做者:David Clinton 选题:lujun9972 译者:geekpi 校对:wxy