我刚刚读认识 Etcher,一款时尚的开源 USB 映像写入工具。它谈论的是下载 AppImage。
是的,Linux;Linux 软件包以 .appimage 的形式分发,适用于 32 位和 64 位发行版,并且应该可以在所有主流 Linux 发行版中顺利运行。该团队目前没有计划提供原生 .deb(或 .rpm)安装程序。
什么是 AppImage?它们与 snap 有何不同?
答案1
基本信息
关于安装
我在这里引用了 appImage 项目页面:
无需安装或root权限即可下载并运行AppImages。
使其可执行
您可以按如下方式使 appImage 可执行:
chmod a+x exampleName.AppImage
执行
您可以按如下方式执行 appImage:
./exampleName.AppImage
附加信息
关于 appImage
您可以找到有关 appImage 的一些常规信息这里。
我在这里引用了 appImage 项目页面:
AppImage 格式的核心思想是,一个应用 = 一个文件。每个 AppImage 都包含一个应用以及该应用运行所需的所有文件。换句话说,每个 AppImage 除了目标基础操作系统中包含的内容外,没有其他依赖项。
维基百科添加
AppImage(以及前身 klik 和 portablelinuxapps)并不以传统意义上安装软件(即,它不会将文件放置在系统的各个地方)。
它为每个应用程序使用一个文件。每个文件都是独立的:它包含应用程序所依赖的所有库,这些库不属于基础系统。在这方面,它类似于“应用程序虚拟化”。即使不是超级用户,或者使用的是实时 CD,也可以使用 AppImage 文件。AppImage 文件通常比编译和安装应用程序更简单,因为实际上没有进行安装。AppImage 文件是一个压缩映像,它被临时安装以允许访问程序,但不必提取程序或修改底层系统。
的README.md
AppImageKit 项目提供了很多额外的信息,比如用例,问题空间和目标。
用例
作为用户,我希望转到上游下载页面,从原作者处下载应用程序,然后像运行 Windows 或 Mac 应用程序一样在我的 Linux 桌面系统上运行它。
作为一名测试人员,我希望能够从持续构建服务器获取应用程序的最新版本并在我的系统上进行测试,而无需编译,也不必担心可能会弄乱我的系统。
作为应用程序作者或 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 在设计上是只读的,因此用户可以合理地确信应用程序在运行过程中不会修改自身。
不需要重新编译。
AppImage 必须能够从已经存在的二进制文件创建,而无需重新编译。这大大加快了 AppImage 的创建过程,因为无需涉及编译器。这也允许第三方将闭源应用程序打包为 AppImage。(尽管如此,上游应用程序开发人员从源代码构建专门用于生成 AppImage 的内容也是有益的。)
保持基本操作系统不受影响。
由于 AppImage 旨在运行在未经管理员特别准备的普通系统上,因此 AppImage 可能不需要对基础操作系统进行任何特殊准备。因此,它们不能依赖于特殊内核补丁、内核模块或目标发行版默认不附带的任何应用程序。
不需要root。
由于 AppImages 旨在由最终用户运行,因此它们不需要管理员帐户(root)来安装或使用。但是,如果需要,它们可以由管理员安装(例如,在多用户场景中)。
答案2
答案3
这两个系统的基本思想可能看起来相似,但 Snaps 和 Appimages 之间存在一些设计差异。
我想到的一些“大”问题是:
安全, 按照禁闭:Snap 软件包在沙箱中运行,不允许它们脱离沙箱并到达系统的其他部分。不是touch。这是一个与权限系统并行运行的更强大的安全层。显然,一开始(以及以后)处理它时会有点令人沮丧,但如果从系统管理的角度考虑,这就是管理员希望为其用户提供的东西。
安全:安装从网上获取的软件就像在街上舔电线杆一样安全。有时什么事也不会发生,有时你会遇到一些非常严重的健康问题。Snap 软件包有其适当的存储库,由 Canonical 控制,就像通常的标准 Ubuntu 存储库一样。你可以继续安装
.deb
来自各地的文件,但这将是你的选择,而不是设计问题。安装:AppImage 相当于“可移植 Windows 可执行文件”。所有库都是独立的,任何用户都可以下载并执行其中一个。另一方面,
snap
软件包是真正的软件包,需要通过适当的软件包管理器(以root
或 的形式)安装(抛出错误:它需要!)sudo
snap install tic-tac-toe
sudo
移动:要删除 snap 包,您需要使用
snap remove ...
具有正确权限的包管理器。另一方面,AppImage 只是“存在”。那么有用户不想要那个 AppImage 吗?他/她只需删除文件,它就消失了。
虽然我强烈建议在使用 AppImages 时要小心,但我个人也使用其中一些。
我发现它们在我的办公系统上特别有用,我没有root
访问权限(只有管理员才有),但我需要特定软件的最新版本,幸运的是,开发人员以 Appimage 形式提供了该版本。
我有点担心这些软件中确实含有恶意代码,所以我尽可能地核实了发布者的身份。我不能 100% 确定这个软件是无害的,但我已经尽我所能了。
答案4
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 以--appimage-offset
找出偏移量的正确数字。