命令行工具
ivan-hc/AM avatar
ivan-hc/AM

AM:用 AUR 的思路管理 AppImage,到底解决了什么问题

AppImage 包管理器:AppImage 沙箱、本地和系统安装、更新所有 AppImage、AppImage 和便携式应用程序的可扩展数据库、AppImage 和其他 GNU/Linux 二进制文件的列表、通过拖/放集成 AppImage 或安装未列出的 AppImage、旧 AppImage 类型的转换...等等!以前所未有的方式管理 AppImage!

1,365 个 Star128 个 ForkShellGPL-3.0

秒懂

它是什么?
AM 是一套用 Shell 脚本打造的 AppImage 包管理器,试图让 AppImage 的安装、更新和卸载像 APT 管理 deb 一样规范。本文从它的安装流程、数据库机制和实际限制出发,判断它适合谁、不适合谁。
适合谁用?
AM 适合那些已经习惯命令行、并且愿意接受“脚本数据库”模式的 Linux 用户,尤其是希望批量管理多个 AppImage、又不想手动处理 .desktop 文件和图标的人。不适合追求开箱即用、希望有统一沙箱安全边界、或者依赖官方仓库维护的普通桌面用户。
能商用吗?
可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Shell(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

AppImage 的散养困境

AppImage 的优点是免安装、可携带,但这也带来管理上的麻烦。下载下来的文件放在哪里、如何更新、怎么出现在应用菜单里,这些问题通常要用户自己解决。AM 想做的就是把这些杂事收拢起来,用一套命令行工具统一处理。它的定位很明确,不是像 Flatpak 那样提供沙箱和集中仓库,而是更像 AUR helper,用一个由 Shell 脚本组成的数据库,为每个应用定义下载、解压、集成菜单的具体步骤。

安装的两种模式:系统级与用户级

AM 提供两种安装方式。系统级安装需要 sudo 或 doas 权限,默认把应用集成到 /opt 之类的系统目录,所有用户都能使用。用户级安装使用 --user 参数,把应用放在当前用户的主目录下,不需要 root 权限。安装流程在 README 中写得很清楚,顺序是:创建基础目录和卸载脚本,下载包,创建版本文件和更新脚本,最后提取图标和 .desktop 文件。这个顺序决定了 AM 的更新机制,每个应用都有一份独立的版本文件和更新脚本,更新时逐个执行。

数据库机制:AUR 思路的移植

AM 的核心是一个大型数据库,里面每个应用对应一个 Shell 脚本,脚本描述了如何下载、解压和集成该应用。这个设计明显借鉴了 Arch 用户软件仓库(AUR),好处是扩展灵活,任何人都可以为新应用添加脚本。但代价是质量参差不齐,因为脚本由不同维护者编写,没有统一的打包格式。AM 官方也承认这一点,在 README 中强调它不负责单个应用的故障,如果某个应用无法运行,那是上游开发或打包的问题。这种免责声明在包管理器中很少见,但也是事实。

依赖的真相:核心依赖与可选依赖

AM 本身是 BASH 脚本,依赖 coreutils、curl、grep、sed 这四个核心命令。前三者大多数发行版预装,curl 则不一定。可选依赖就复杂了,比如处理 .7z 包需要 7z,处理 .deb 包需要 ar,处理 .tar 包需要 tar,还有各种校验和工具。这意味着 AM 能安装的格式越多,你的系统需要预装的工具就越多。这不是一个开箱即用的工具,更像一个需要按需装配的瑞士军刀。如果你只装 AppImage,那依赖问题不大,但如果你想用 AM 安装其他便携格式,就得先检查系统里有没有对应的解压工具。

更新策略:真正的批量更新

AM 主打的功能之一是“更新所有 AppImage”。它通过每个应用自己的更新脚本来检查新版本,然后下载替换。这个机制比手动下载要省心,但也有隐患。更新脚本由数据库维护者编写,如果上游应用改变了下载地址或版本号格式,脚本可能失效。AM 提供了 am -d {PROGRAM} 命令,可以把脚本下载到桌面,让用户查看来源,这算是一种信任验证手段。但说实话,对于非技术用户来说,看 Shell 脚本判断安全性并不现实。

一个真实的限制:沙箱只是表面

AM 的 README 中提到了“sandbox AppImages”,但仔细看,它并没有提供真正的沙箱机制。AppImage 本身通常依赖系统的库和权限,AM 只是负责集成,不提供隔离。如果你需要强沙箱,应该考虑 Flatpak 或 Firejail。AM 的优势在于管理便利,而不是安全边界。这一点在 README 中也没有详细说明,属于容易被误解的地方。另一个限制是,AM 的数据库是集中式的,但脚本是社区维护的,不像 APT 有官方仓库的审核流程。所以,对于安全敏感的环境,AM 可能不是首选。

替代方案:AppImageLauncher 与手动管理

与 AM 最接近的替代品是 AppImageLauncher,它的做法是双击 AppImage 时自动集成到应用菜单,并处理更新。区别在于,AppImageLauncher 更偏向桌面集成,不提供数据库和命令行批量管理,也不支持从列表安装新应用。另一个极端是完全手动管理,自己下载 AppImage,放到固定目录,手动创建 .desktop 文件。AM 介于两者之间,它提供了比手动更自动化的流程,但又比 AppImageLauncher 更强大,因为你可以用 am -l 列出可用应用,用 am -s 搜索关键词。选择哪个,取决于你是喜欢命令行还是图形界面。

维护成本与许可证

AM 采用 GPL-3.0 许可证,这意味着如果你修改并分发它,需要开源你的修改。对于个人使用,这不是问题。维护成本方面,AM 的更新频率较高,从 2026 年 6 月到 8 月就有多个版本发布,说明项目活跃。但活跃也意味着脚本接口可能变化,升级 AM 本身可能需要重新生成应用列表。另外,依赖的第三方工具(如 7z、tar)需要你自己维护,因为 AM 不会替你安装它们。卸载 AM 时,需要先卸载所有通过它安装的应用,否则会留下孤儿文件。

编辑结论

AM 适合那些已经习惯命令行、并且愿意接受“脚本数据库”模式的 Linux 用户,尤其是希望批量管理多个 AppImage、又不想手动处理 .desktop 文件和图标的人。不适合追求开箱即用、希望有统一沙箱安全边界、或者依赖官方仓库维护的普通桌面用户。在采用之前,建议先查看 portable-linux-apps.github.io/apps 上是否有你需要的应用,并确认你的发行版已经安装 curl 和 coreutils。另外,要意识到 AM 的数据库由社区脚本组成,每个应用的脚本质量参差不齐,安装前最好用 am -d {PROGRAM} 下载脚本到桌面检查来源,再决定是否信任。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记