6 个版本 (主要破坏)

11.0.0 2023 年 5 月 23 日
10.0.0 2023 年 5 月 15 日
9.0.0 2023 年 5 月 15 日
8.0.0 2023 年 4 月 3 日
0.0.2 2023 年 1 月 26 日

#895文件系统

Download history 4/week @ 2024-03-12 2/week @ 2024-04-02

每月 70 次下载

GPL-3.0 许可证

32KB
449

App Image 包管理器 (AIP-Man)

描述

此项目的目标是创建一个便携式工具,用于管理 App Images 的安装、卸载和升级,这些 App Images 可用于各种 Linux 发行版,以及基于 AppImage 的发行版。

之所以叫 "aip-man",是因为听起来像 "ape man",这与制作这种便携式工具的简洁性或回归到猿类是一致的。我也觉得这很有趣。

构建

这是一个 Rust 项目,因此请运行 cargo build --release

您也可以从 crates.io 安装它

用法

aip-man 支持 5 个命令

  • 安装
    • 用法: aipman install <package-name>
    • install 命令将搜索全局包列表以查找您输入的包。然后,除非它已安装,否则将下载并安装该包。如果已安装且有新版本,则将升级到最新版本。
  • 卸载
    • 用法: aipman remove <package-name>
    • remove 命令将在安装了包的情况下将其从您的系统删除。
  • 升级
    • 用法: aipman upgrade
    • 此命令将拉取最新版本的包列表和版本,并在有可用版本的情况下升级已安装的包。
  • 列表
    • 用法: aipman list
    • 列出已安装的包。
  • 运行
    • 用法: aipman run <app-name> [args]...
    • 此命令将运行您安装的应用程序之一,因此您不必导航到安装目录即可启动它们。
    • 您还可以传递任何数量的参数给 AppImage。
  • 恢复
    • 用法: aipman restore
    • 此命令将备份文件 .aipman_backup.tar.gz 并将其解压缩到原来 ~/Applications 所在的位置。
  • 可用
    • 用法: aipman available
    • 此命令将打印所有可用软件包的列表。然后您可以像这样通过管道使用 grep 进行搜索:aipman available | grep -i -A 6 <我想搜索的软件包名称>

在提供子命令之前,可以传递三个额外的选项

  • 如果您想首先审查更改,可以添加 --ask/-a 标签,这将导致应用程序询问您是否想继续。默认为是。
  • 如果您想在更改之前创建备份,可以使用 --backup/-b 标签,可以通过 aipman restore 进行恢复。
  • 如果您想使用与全局软件包列表不同的仓库,可以使用 --repo URL/-r URL
    • 您还可以通过以下方式使用本地路径: --repo file://<文件路径>

贡献

请贡献力量!向 全局软件包列表 添加软件包或改进工具本身。我很乐意得到您的帮助!

为了贡献力量,您可能需要了解底层的工作原理,所以我将解释一下。

CLI 解析

aip-man 使用名为 clap 的 Rust 软件包来处理 CLI 解析。这样做是为了使维护和添加新功能变得极其简单。

每个子命令都在主函数中通过一个 match 语句来处理。

已安装的软件包

AppImage 软件包安装到 "$HOME/AppImages"。这是使用 Rust 的 dirs 库找到的。

在这个文件夹中,还将有一个包含每个软件包及其安装版本的清单。

软件包管理器将读取清单以了解已安装的软件包以及版本信息。在安装时,它将使用此信息检查软件包是否已存在且是最新的。在安装新软件包后,它还将更新清单。移除和升级命令也是如此。

清单的格式与全局软件包列表相同。

aip-man 使用 Rust 的 serde_json 库来解析清单。

全局软件包列表格式

全局软件包列表包含有关每个可用软件包的信息。

列表中条目的格式如下

[
    ...
    {
        "name": "<package name>",
        "version": "<version string>",
        "description": "<description>",
        "url": "<link to file to download>"
    }, {
        "name": "audacity",
        "version": "3.2.3",
        "description": "Audacity is an easy-to-use, multi-track audio editor and recorder for Windows, macOS, GNU/Linux and other operating systems. Audacity is free, open source software.",
        "url": "https://github.com/audacity/audacity/releases/download/Audacity-3.2.3/audacity-linux-3.2.3-x64.AppImage"
    },
    ...
]

如果您想更新软件包或添加新软件包,只需填写必要的信息,并在 GitHub 的列表 上提交 PR。

aip-man 使用 reqwest 库来获取全局软件包列表的信息,并再次使用 serde_json 来解析它。

安装到系统

显然,App 图像的想法是它们是应用程序。人们希望他们的应用程序出现在应用程序列表中并看到图标。

这是通过使用 appimaged 来实现的,这也是为什么它是依赖项的原因。

不过,这是自动发生的,所以没有代码来做这件事。

依赖关系

~7–21MB
~341K SLoC