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

DK *_*ose 351 packaging appimage

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

是的,Linux;Linux 软件包以 .appimage 的形式分发给 32 位和 64 位发行版,并且应该可以在所有主要 Linux 发行版上运行而不会出现任何问题。该团队目前没有提供原生 .deb(或 .rpm)安装程序的计划。

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

duf*_*fte 409

基本信息

关于安装

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

AppImages 无需安装或无需 root 权限即可下载和运行。

使其可执行

您可以使 appImage 可执行,如下所示:

chmod a+x exampleName.AppImage
Run Code Online (Sandbox Code Playgroud)

执行它

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

./exampleName.AppImage
Run Code Online (Sandbox Code Playgroud)

附加信息

关于应用图片

您可以在此处找到有关 appImage 的一些一般信息。

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

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

维基百科补充说

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

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

README.md对的AppImageKit项目提供了很多附加的信息像用例问题空间目标

用例

  • 作为用户,我想转到上游下载页面,从原作者那里下载一个应用程序,然后在我的 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 可能不需要对基本操作系统进行任何不寻常的准备。因此,他们不能依赖特殊的内核补丁、内核模块或默认情况下不随目标发行版提供的任何应用程序。

  10. 不需要root。

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

  • appimage 如何在启动之间保留设置? (11认同)
  • @DanDascalescu:您的问题应该提升为 AskUbuntu 上的完整问题,而不仅仅是评论。你会问吗? (6认同)

小智 42

在运行 AppImage 之前,您需要使其可执行。这是一个 Linux 安全功能。有两种主要方法可以使 AppImage 可执行文件:

使用图形用户界面

如何使 AppImage 可执行

或者

使用命令行

chmod a+x Some.Appimage
Run Code Online (Sandbox Code Playgroud)

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


dad*_*x86 28

两个系统的基本思想可能看起来相似,但 snaps 和 Appimages 之间存在一些设计差异。

我想到的一些“大”是:

  1. 安全,在条件限制:卡包在沙箱中运行,并且不允许他们摆脱它,达到了系统,他们应该的其他部分碰。这是一个更强大的安全层,与权限系统并行运行。显然,在开始(以及以后)处理它时有点令人沮丧,但是如果您从系统管理的角度考虑它,这就是管理员希望他们的用户做到的事情。

  2. 安全性:安装从网上取下来的软件,就像在街上舔电线杆一样安全。有时什么也没有发生,有时你会遇到一些非常大的健康问题。Snap 包有其适当的存储库,由 Canonical 控制,就像通常的标准 Ubuntu 存储库一样。您可以继续安装.deb文件,但这将是您的选择,而不是设计问题。

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

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

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

我发现它们在我的工作系统上特别有用,在那里我没有root访问权限(只有管理员可以访问),但我需要特定软件的最新版本,幸运的是,开发人员以 Appimage 形式提供了这些软件。

有点怕里面确实有恶意代码,所以尽量查了一下发布者的身份。我不是 100% 确定这个软件是良性的,但我已经尽力了。

  • 基本上,每个人都试图在 linux 上实现 OSX 应用程序打包,但没有完全实现。 (3认同)
  • 我不知道它是如何工作的 :) 当然,snap 和 Appimages 不能很好地与许多其他软件之间共享许多依赖项的软件一起使用。它们对于已经独立的软件或几乎没有依赖性的软件来说完全没问题,但风险在于有许多相同库的副本来执行相同的任务,就像在 Windows 中一样。这应该在 snap 包中解决(依赖于 snap 库的软件会安装该版本的库,然后另一个需要相同库版本的软件可能会使用它,就像通常的系统一样)。 (2认同)

小智 16

虽然 snap 只关注 Ubuntu,但 AppImage 是跨发行版的,也可以在 Fedora、Debian、OpenSUSE、CentOS 等上运行。

AppImage 不需要来自 Linux 发行版的运行时或基础设施支持,因此可以在任何地方运行。它使应用程序作者能够像在 Windows 和 OS X 上一样将他们的软件直接发送给 Linux 用户;没有 Canonical 或软件作者和最终用户之间的任何其他人。

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

  • Snap 可以在 Ubuntu 以外的发行版上运行,包括 Arch Linux、Fedora、Linux Mint、CentOS、openSUSE 和 Debian。 (3认同)
  • 不确定这是否也是适合您的解决方案 - 但 16.04 源代码中提供了开箱即用的 Leafpad(版本:0.8.18.1)。bintray 提供的 Leafpad 版本“仅” 0.8.17 - 所以更旧。 (2认同)

Pio*_*rek 8

以上答案都没有帮助我,因为没有一个实际显示如何安装AppImage。我所说的安装通常是指:将可执行文件放置在磁盘上通常存储可执行文件的位置,并使其可以通过应用程序启动器进行访问。

\n

以 Arduino IDE 为例:

\n
    \n
  1. 使 AppImage 可执行
  2. \n
\n
chmod +x ./arduino-ide_nightly-20230209_Linux_64bit.AppImage\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 将其移动到应用程序目录:
  2. \n
\n

引用AppImage 文档

\n
\n

关于 AppImage 格式的一个重要点是您可以将 AppImage 文件存储在任何您想要的位置。[...] 如果您不想将它们留在 $HOME/Downloads 中,那么 $HOME/Applications 是一个不错的选择。许多第三方工具(尤其是管理桌面集成的工具)也使用此位置。其他选项包括 $HOME/.local/bin 和 $HOME/bin,它们主要对 CLI 工具有用。

\n
\n
mv arduino-ide_nightly-20230209_Linux_64bit.AppImage ~/Applications/\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 将其添加到应用程序启动器:
  2. \n
\n

为此,我们需要添加桌面条目(更多信息请参见此处

\n
touch ~/.local/share/applications/arduino-ide.desktop\n
Run Code Online (Sandbox Code Playgroud)\n

在您喜欢的文本编辑器中打开它并添加配置,类似于:

\n
[Desktop Entry]\nVersion=1.0\nName=Arduino IDE\nExec=/home/piotrek/Applications/arduino-ide_nightly-20230209_Linux_64bit.AppImage\nTerminal=false\nType=Application\nCategories=Utility;Development;\n
Run Code Online (Sandbox Code Playgroud)\n

只需记住将“Exec”更改为指向存储 AppImage 的位置即可。

\n
    \n
  1. 使其可执行
  2. \n
\n
[Desktop Entry]\nVersion=1.0\nName=Arduino IDE\nExec=/home/piotrek/Applications/arduino-ide_nightly-20230209_Linux_64bit.AppImage\nTerminal=false\nType=Application\nCategories=Utility;Development;\n
Run Code Online (Sandbox Code Playgroud)\n

此时,您的应用程序应该已出现在应用程序启动器中。

\n

如果您使用 KDE,您可能需要右键单击任务栏上的应用程序启动器图标,选择“编辑应用程序”,然后单击“保存”。然后 KDE 将刷新其缓存,应用程序将出现在启动器中。

\n

如果您使用 GNOME,请运行gsettings reset org.gnome.shell app-picker-layout以刷新列表(或登录/注销)

\n


ins*_*ign 6

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

安装保险丝

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

例如,在 Ubuntu 上:

sudo apt-get install fuse
sudo modprobe fuse
sudo usermod -a -G fuse $USER
Run Code Online (Sandbox Code Playgroud)

例如,在 openSUSE 上:

sudo zypper install fuse
Run Code Online (Sandbox Code Playgroud)

倒退

如果不想安装 FUSE,可以挂载或解压 AppImage。

要挂载 AppImage 并运行应用程序,只需运行

sudo mount -o loop Some.AppImage /mnt
/mnt/AppRun
Run Code Online (Sandbox Code Playgroud)

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


Shr*_*gde 6

现在,AppImageLauncher使启动/创建桌面文件变得非常简单和方便。试试看