什么是“AppImage”? 我该如何安装?

我刚刚阅读了Meet Etcher,一款时尚的开源USB图像编写工具 。 它谈到下载AppImage。

是的,Linux; Linux软件包作为32位和64位发行版的.appimage发布,应该可以在所有主要的Linux发行版中运行而不会出现任何问题。 该团队目前没有计划提供本机.deb(或.rpm)安装程序。

什么是AppImages? 它们与快照有何不同?

基本信息

关于安装

我在这里引用appImage项目页面:

可以在不安装或需要root权限的情况下下载和运行AppImages。

使其可执行

您可以按如下方式使appImage可执行:

 chmod a+x exampleName.AppImage 

执行它

您可以按如下方式执行appImage:

 ./exampleName.AppImage 

附加信息

关于appImage

你可以在这里找到关于appImage的一些一般信息。

我在这里引用appImage项目页面:

AppImage格式的关键思想是一个app =一个文件。 每个AppImage都包含一个应用程序以及应用程序运行所需的所有文件。 换句话说,除了目标基本操作系统中包含的内容之外,每个AppImage都没有依赖关系。

维基百科补充道

AppImage(以及前身klik和portablelinuxapps)不会安装传统意义上的软件(即,它不会将文件放在系统中的所有位置)。

它每个应用程序使用一个文件。 每个都是自包含的:它包括应用程序所依赖的所有库,而不是基本系统的一部分。 在这方面,它类似于“应用程序虚拟化”。 即使他们不是超级用户,他们也可以使用AppImage文件,或者他们使用的是Live CD。 AppImage文件通常比编译和安装应用程序更简单,因为实际上没有安装。 AppImage文件是一个临时安装的压缩映像,允许访问程序,但不必提取程序或修改底层系统。

AppImageKit项目的README.md提供了许多其他信息,例如用例问题空间目标

用例

  • 作为用户,我想访问上游下载页面,从原始作者下载应用程序,并在我的Linux桌面系统上运行它,就像我在Windows或Mac应用程序中一样。

  • 作为测试人员,我希望能够从连续构建服务器获取最新的应用程序,并在我的系统上进行测试,无需编译,也不必担心我可能会搞砸我的系统。

  • 作为一名应用程序作者或ISV,我想为Linux桌面系统提供软件包,就像我为Windows和OS X一样,而不需要将其“分配”到一个发行版中,而不必为不同的发行版构建。

目标

  1. 要简单。

    AppImage旨在成为一种易于理解,创建和管理的非常简单的格式。

  2. 保持二进制兼容性。

    AppImage是二进制软件分发的格式。 作为AppImage打包的软件旨在与尽可能多的系统尽可能二进制兼容。 应该大大减少(重新)编译软件的需要。

  3. 是分布式的。

    AppImage应该在为其创建的所有基本操作系统(发行版)上运行(以及更高版本)。 例如,您可以同时定位Ubuntu 9.10,openSUSE 11.2和Fedora 13(及更高版本),而无需为每个目标系统创建和维护单独的软件包。

  4. 无需安装。

    AppImages包含的应用程序格式允许它直接从存档运行,而无需先安装。 这与Live CD相当。 在Live CD之前,必须首先安装操作系统才能使用它们。

  5. 始终保持应用程序的压缩。

    由于应用程序始终保持打包状态,因此硬盘上永远不会解压缩。 计算机在访问时即时解压缩应用程序。 由于在大多数系统上解压缩比从硬盘读取更快,因此除了节省空间之外,这还具有速度优势。 此外,完全删除了安装所需的时间。

  6. 允许将应用放在任何地方。

    AppImages是“可重定位的”,因此允许用户从任何位置(包括CD-ROM,DVD,可移动磁盘,USB记忆棒)存储和执行它们。

  7. 使应用程序只读。

    由于AppImages是按设计只读的,因此用户可以合理地确定应用程序在操作期间不会自行修改。

  8. 不需要重新编译。

    必须能够从已存在的二进制文件创建AppImages,而无需重新编译。 这大大加快了AppImage的创建过程,因为不需要编译器。 这也允许第三方将封闭源应用程序打包为AppImages。 (尽管如此,对于上游应用程序开发人员来说,专门为了生成AppImage而从源代码构建是有益的。)

  9. 保持基本操作系统不受影响。

    由于AppImages旨在在未由管理员专门准备的普通系统上运行,因此AppImages可能不需要对基本操作系统进行任何exception准备。 因此,默认情况下,它们不能依赖特殊的内核补丁,内核模块或任何未随目标分发一起提供的应用程序。

  10. 不要求root。

    由于AppImages旨在由最终用户运行,因此他们不应该重新安装要安装或使用的管理帐户(root)。 然而,如果需要,它们可以由管理员安装(例如,在多用户场景中)。

两个系统的基本概念可能看起来相似,但是快照和Appimages之间存在一些设计差异。

我想到的一些“大”的是:

  1. 安全 ,就限制而言 。 Snap软件包在沙箱中运行,不允许它们从沙箱中逃脱并到达系统中不应触及的其他部分。 这是一个更强大的安全层,与权限系统并行运行。 显然,在开始时(以及稍后)处理它时会有点令人沮丧,但如果你从系统管理的角度考虑它,那么这就是管理员想要的用户。

  2. 安全。 安装从网络上取下的软件,就像在街上舔竿一样安全。 有时没有任何事情发生,有时你会遇到一些非常大的健康问 Snap软件包有适当的存储库,由Canonical控制,就像通常的标准Ubuntu存储库一样。 您可以继续并从周围安装.deb文件,但这将是您的选择,而不是设计问题。

  3. 安装。 AppImages意味着相当于“便携式Windows可执行文件”。 所有库都是自包含的,任何用户都可以下载并执行其中一个。 另一方面, snap包是正确的包,它们需要通过apposite包管理器安装(以root身份或sudo )( snap install tic-tac-toe会抛出错误:它需要sudo !)

  4. 去除。 要删除快照包,您需要使用具有正确权限的包管理器snap remove ...来执行此操作。 另一方面,Appimages只是“存在”。 那么任何用户都不想要那个Appimage? 他/她只是删除文件,它就消失了。

虽然我强烈建议在使用Appimages时要谨慎,但我个人自己也会使用其中一些。

我发现它们对我的工作系统特别有用,我没有root访问权限(只有管理员有)但我需要最新版本的特定软件,幸运的是,开发人员以Appimageforms提供。

我有点担心它们中确实包含了一些恶意代码,因此我尽可能多地检查了发布者的身份。 我不是百分百肯定这个软件是良性的,但我尽我所能。

虽然snap专注于Ubuntu,但AppImage是交叉发行版,也可以在Fedora,debian,openSUSE,CentOS等上运行。

AppImage不需要Linux发行版的运行时或基础结构支持,因此可以在任何地方运行。 它使应用程序作者能够将他们的软件直接发送给Linux用户,例如do for Windows和OS X; 没有Canonical或其他任何“介于”之间的软件作者和最终用户。

如果应用程序以AppImage格式提供,则用户可以访问原作者的网站进行下载,例如,来自https://musescore.org/en/download的 MuseScore。 使AppImage可执行(使用文件管理器或chmod a+x ./yourAppImage ),然后只需双击即可运行应用程序。

在运行AppImage之前,需要使其可执行。 这是Linux安全function。 有两种主要方法可以生成AppImage可执行文件:

1.使用GUI

如何制作AppImage可执行文件

要么

2.在命令行上

 chmod a+x Some.Appimage 

现在双击您的文件以运行它或右键单击>运行

AppImages需要FUSE才能运行。 用户空间(FUSE)中的文件系统是一个允许非root用户挂载文件系统的系统。

安装FUSE

许多发行版都有一个开箱即用的FUSE设置。 但是,如果它不适合您,您可能需要手动安装和配置FUSE。

例如,在Ubuntu上:

 sudo apt-get install fuse sudo modprobe fuse sudo usermod -a -G fuse $USER 

例如,在openSUSE上:

 sudo zypper install fuse 

倒退

如果您不想安装FUSE,可以安装或解压缩AppImage。

要安装AppImage并运行应用程序,只需运行即可

 sudo mount -o loop Some.AppImage /mnt /mnt/AppRun 

如果这不起作用,您可能有一个实验类型2 AppImage 。 这些要求您将-o offset=...传递给mount命令。 使用--appimage-offset运行AppImage以--appimage-offset的正确数字。