什么是“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一样,而不需要将其“分配”到一个发行版中,而不必为不同的发行版构建。
目标
-
要简单。
AppImage旨在成为一种易于理解,创建和管理的非常简单的格式。
-
保持二进制兼容性。
AppImage是二进制软件分发的格式。 作为AppImage打包的软件旨在与尽可能多的系统尽可能二进制兼容。 应该大大减少(重新)编译软件的需要。
-
是分布式的。
AppImage应该在为其创建的所有基本操作系统(发行版)上运行(以及更高版本)。 例如,您可以同时定位Ubuntu 9.10,openSUSE 11.2和Fedora 13(及更高版本),而无需为每个目标系统创建和维护单独的软件包。
-
无需安装。
AppImages包含的应用程序格式允许它直接从存档运行,而无需先安装。 这与Live CD相当。 在Live CD之前,必须首先安装操作系统才能使用它们。
-
始终保持应用程序的压缩。
由于应用程序始终保持打包状态,因此硬盘上永远不会解压缩。 计算机在访问时即时解压缩应用程序。 由于在大多数系统上解压缩比从硬盘读取更快,因此除了节省空间之外,这还具有速度优势。 此外,完全删除了安装所需的时间。
-
允许将应用放在任何地方。
AppImages是“可重定位的”,因此允许用户从任何位置(包括CD-ROM,DVD,可移动磁盘,USB记忆棒)存储和执行它们。
-
使应用程序只读。
由于AppImages是按设计只读的,因此用户可以合理地确定应用程序在操作期间不会自行修改。
-
不需要重新编译。
必须能够从已存在的二进制文件创建AppImages,而无需重新编译。 这大大加快了AppImage的创建过程,因为不需要编译器。 这也允许第三方将封闭源应用程序打包为AppImages。 (尽管如此,对于上游应用程序开发人员来说,专门为了生成AppImage而从源代码构建是有益的。)
-
保持基本操作系统不受影响。
由于AppImages旨在在未由管理员专门准备的普通系统上运行,因此AppImages可能不需要对基本操作系统进行任何exception准备。 因此,默认情况下,它们不能依赖特殊的内核补丁,内核模块或任何未随目标分发一起提供的应用程序。
-
不要求root。
由于AppImages旨在由最终用户运行,因此他们不应该重新安装要安装或使用的管理帐户(root)。 然而,如果需要,它们可以由管理员安装(例如,在多用户场景中)。
两个系统的基本概念可能看起来相似,但是快照和Appimages之间存在一些设计差异。
我想到的一些“大”的是:
-
安全 ,就限制而言 。 Snap软件包在沙箱中运行,不允许它们从沙箱中逃脱并到达系统中不应触及的其他部分。 这是一个更强大的安全层,与权限系统并行运行。 显然,在开始时(以及稍后)处理它时会有点令人沮丧,但如果你从系统管理的角度考虑它,那么这就是管理员想要的用户。
-
安全。 安装从网络上取下的软件,就像在街上舔竿一样安全。 有时没有任何事情发生,有时你会遇到一些非常大的健康问 Snap软件包有适当的存储库,由Canonical控制,就像通常的标准Ubuntu存储库一样。 您可以继续并从周围安装
.deb
文件,但这将是您的选择,而不是设计问题。 -
安装。 AppImages意味着相当于“便携式Windows可执行文件”。 所有库都是自包含的,任何用户都可以下载并执行其中一个。 另一方面,
snap
包是正确的包,它们需要通过apposite包管理器安装(以root
身份或sudo
)(snap install tic-tac-toe
会抛出错误:它需要sudo
!) -
去除。 要删除快照包,您需要使用具有正确权限的包管理器
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
要么
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
的正确数字。