AppImage的背景故事 [Interview]

作为 Linux 用户,你可能遇到过 应用图像. 这是一种可移植的打包格式,允许您在任何 Linux 发行版上运行应用程序。

使用 AppImage 非常简单。 您只需要授予它执行权限并双击即可运行它,就像 Windows 中的 .exe 文件一样。 这解决了 Linux 中的一个主要问题,因为不同类型的发行版具有不同类型的打包格式。 你不能安装 .deb 文件(Debian/Ubuntu) Fedora 反之亦然。

我们与 AppImage 的开发者 Simon 讨论了他创建这个项目的方式和原因。 阅读 Simon 分享的有关 AppImage 的一些有趣的背景故事和见解。

与 AppImage 的创建者 Simon Peter 互动

这是 FOSS:很少有人知道 AppImage 背后的人。 分享一些关于你自己的背景信息怎么样?

西蒙: 大家好,我是 Simon Peter,常驻德国法兰克福附近。 我的背景是经济和工商管理,但我在空闲时间一直是一个修补匠和黑客,从我毕业后就一直在科技行业工作。

不过,AppImage 严格来说是我喜欢在业余时间工作的一种爱好。 当我在从这里到那里的火车上时,我做了很多 AppImage 工作。 不知怎的,我似乎一直在移动。 专业上,我在一家大型电信公司的产品管理部门工作。

这是 FOSS:您为什么创建 AppImage?

西蒙: 我能拿到的第一台电脑是 麦金塔 在 80 年代后期。 对我来说,这是简单性和可用性方面的基准。 当我开始在桌面上尝试 Linux 时,我一直希望它能够像早期的 Mac 一样优雅且易于操作,并为我提供尽可能多的灵活性。

当我在 90 年代末第一次尝试 Linux 时,我不得不经历一个繁琐的过程,格式化和分区硬盘,安装东西——这花了很多时间,而且真的很麻烦。 几年后,我试用了 Linux Live CD-ROM。 这是一个彻底的游戏规则改变者。 您弹出 CD,启动计算机,一切正常,开箱即用。 无需安装,无需配置。 每当您重新启动机器时,系统始终处于出厂状态。 正是我喜欢它的方式。

只有一个缺点:您无法在只读 CD 上安装其他应用程序。 软件包总是坚持在 /usr 中写入,而 Live CD 是不可写入的。 因此,我问自己:为什么我不能将应用程序放在任何我想要的地方,比如在 USB 驱动器或网络共享上,就像我在 Mac 上使用的那样? 如果每个应用程序都只是一个我可以放在任何我想要的地方的单个文件,那该有多酷? 因此,AppImage 的想法诞生了(当时以“klik”的名义)。

事实证明,随着时间的推移,Live 系统变得更加强大,但我仍然喜欢“一个应用程序 = 一个文件”理念带来的简单性和自由度。 例如,我想控制东西在我的硬盘上的位置。 我想决定更新或不更新什么以及何时更新。 对于大多数任务,我需要具有最新应用程序的稳定、很少更改的操作系统。 直到今天,我运行的都是 Live 系统,因为操作系统“开箱即用”,无需任何安装或配置,而且每次我重新启动机器时,我都有一个“全新”的、已知良好的状态。

It’s FOSS:您过去面临哪些挑战,现在面临哪些挑战?

西蒙: 人们告诉我这个想法很疯狂,我不知道“事情是如何在 Linux 上完成的”。 就在我开始屈服的时候,我看到了一个关于 Linus Torvalds 的视频,我注意到所有的人都在抱怨许多相同的事情,我一直觉得在为 Linux 分发应用程序时太复杂了。 当我在看他的咆哮时,我也注意到,嘿,AppImage 实际上解决了许多这样的问题。 一段时间后,Linus 遇到了 AppImage,他显然很喜欢这个主意。 这让我想,也许这不是一个愚蠢的想法,因为人们一直让我相信直到那时。

今天,人们倾向于将 AppImage 与 Snap 和 平板包装. 我认为这是将苹果与橙子进行比较。 AppImage 不仅不是“新的”(它已经存在了十多年了),而且它的目标和设计原则也与其他系统截然不同。 AppImage 是关于单文件应用程序包的全部内容,可以通过 Web 浏览器和文件管理器来“管理”。 它适用于“纯粹的道德”、最终用户,而不是系统管理员。 它不需要包管理器,不需要root权限,不需要在系统上安装任何东西。 它为应用程序开发人员和用户提供了完全的自由。

它是 FOSS:AppImage 是一个“通用打包系统”,您可以在其中与 Snap(由 Ubuntu 支持)和 Flatpak(由 Fedora)。 您打算如何与这些大公司“战斗”?

西蒙: 看? 那就是我的意思。 AppImage 在一个完全不同的竞争环境中发挥作用。

AppImage 想要成为 Windows 的 exe 文件或 PortableApps 以及 dmg 文件中的应用程序在 Mac 上的样子——但更好。

此外,Snap(由 典范) 不能开箱即用 Fedora和 Flatpak(由 红帽) 在 Ubuntu 上不能开箱即用。 AppImages 可以在任一系统上运行,甚至更多,无需安装任何东西。

它是 FOSS:您如何看待 AppImage 的采用? 你对它的成长满意吗?

西蒙: 截至 2020 年初,目前有大约 1000 个由各自应用程序作者制作的官方 AppImage,它们通过了我的兼容性测试,可以在仍然受支持的最古老的 Ubuntu LTS 版本上运行,而且在我们发言时,还有数百个正在开发中。 “家喻户晓”的应用程序,如 Inkscape、Kdenlive、KDevelop、LibreOffice、PrusaSlicer、Scribus、Slic3r、Ultimaker Cura(太多而无法一一列举)正在以 AppImage 格式分发。 这让我非常高兴,当我在 Twitter 上看到一个新版本发布时,我总是很兴奋,然后能够立即下载并运行 AppImage,而无需等待我的 Linux 发行版携带该新版本,并且无需不得不扔掉旧的(已知良好的)版本,只是因为我想尝试新的(出血边缘)版本。

AppImage 的采用对于夜间和连续构建尤其有效。 这是因为 AppImage 的“一个应用程序 = 一个文件”概念特别适合试用软件,您可以在其中保留多个版本以用于测试目的,而无需将任何东西安装到正在运行的系统中。 AppImage 可能发生的最糟糕的事情是应用程序无法启动。 在这种情况下,提交错误,删除文件,完成。 分发包可能发生的最糟糕的事情:完全系统损坏……

它是 FOSS:AppImage 的一个主要问题是并非所有开发人员都提供更新 AppImage 版本的简单方法。 有什么处理建议吗?

西蒙: AppImage 具有“二进制增量更新”的概念。 将其视为“应用程序的差异”。 一个新版本的应用程序出来了,你只下载已经改变的部分,并将它们应用到旧版本中。 结果,您可以同时获得旧版本和新版本,并且可以将它们保持并行,直到您确定不再需要旧版本,然后将其丢弃。

一般来说,我不想对 AppImage 强制执行任何操作。 应用程序作者可以自由控制整个体验。 到目前为止,应用程序作者必须做一些设置工作才能使 AppImages 具有此更新功能。 话虽如此,我相信如果我们让开发人员能够轻松地“免费”获得可用的二进制增量更新,那么许多人会提供它们。 为此,我目前正在开发一组用 Go 编写的新工具,它将几乎自动设置更新,我希望这将显着增加带有此功能的 AppImage 的百分比。

它是 FOSS:Nitrux 是少数严重依赖 AppImage 的发行版之一。 或者还有其他这样的分布吗? 可以做些什么让 AppImage 更受欢迎?

西蒙: Linux 发行版传统上认为自己不仅仅是基本操作系统本身——它们还想控制应用程序的分发。 现在,随着苹果和微软试图在他们的桌面平台上获得对应用程序分发的更多控制,Linux 领域的趋势正在慢慢逆转,人们慢慢开始明白,如果他们专注于基础操作系统,发行版可能会更加精致并将应用程序的打包留给应用程序作者。

为了让 AppImage 更受欢迎,我认为用户和应用程序作者应该继续宣传上游提供的 AppImage 在许多情况下比分发包工作得更好。 使用 AppImage,您可以获得一个软件堆栈,应用程序作者有机会挑选出哪些版本的库可以协同工作,测试和调整功能和性能。 谁会惊讶于结果往往比在某个发行版组合在一起时的某个随机时间点碰巧在 Linux 发行版中的任何版本的“随机”组合更好?

桌面环境可以极大地提高可用性,不仅适用于 AppImage,而且适用于任何其他类型的未安装的“侧载”应用程序。 只需看看桌面环境如何处理双击缺少可执行位的可执行文件即可。 有些人在这方面做得很好,比如 深度Linux. 东西往往会在那里“正常工作”。

最后,我目前正在开发一组用 Go 编写的新工具,我希望它能够极大地简化 AppImages 的生产和消费,并使它们变得更加愉快。 我的目标是让用户的事情变得不那么复杂,消除对配置的需求,让事情“正常工作”,就像在早期的 Macintoshes 上一样。 有没有 Go 开发者有兴趣加入这项工作?

它是 FOSS:我可以看到有一个网站列出了可用的 AppImage 应用程序。 您是否有计划将其与 Linux 上的其他软件管理器集成或为 AppImage 创建一个软件管理器?

西蒙: appimage.github.io 列出了已通过我在仍受支持的最旧 Ubuntu LTS 版本上的兼容性测试的 AppImage。 创建应用商店或软件经理的项目可以免费使用这些数据。 我自己对这些东西不太感兴趣,因为我总是直接从相应项目的下载页面下载 AppImages。 我典型的 AppImage 发现是这样的:

  1. 在 Twitter 上读到 PrusaSlicer 有这个很酷的新功能
  2. 转到 PrusaSlicer GitHub 项目并阅读那里的发行说明
  3. 在那里,下载 AppImage 并让它在几秒钟后运行

所以就我个人而言,我不需要应用中心和应用商店,但如果人们喜欢它们,他们可以自由地将 AppImages 放在那里。 我只是从来没有觉得有必要……

这是 FOSS:您对 AppImage 未来有什么计划(您计划添加的新功能)?

西蒙: 进一步简化事情,删除配置选项,让事情“正常工作”。 减少获得用于生产和使用 AppImage 的核心 AppImage 体验所需的 GitHub 项目数量,包括二进制增量更新、沙盒等方面。提高可用性。

这是 FOSS:AppImage 项目赚钱吗? 您从最终用户那里寻求什么样的支持(如果有的话)?

西蒙: 不,AppImage 不赚钱。

我只是要求读者传播这个词。 告诉您最喜欢的应用程序的作者您希望查看 AppImage,以及原因。

Team It’s FOSS 祝贺 Simon 的辛勤工作。 请随时在评论部分向他传达任何信息和疑问。