6 个版本 (主要破坏)
11.0.0 | 2023 年 5 月 23 日 |
---|---|
10.0.0 | 2023 年 5 月 15 日 |
9.0.0 |
|
8.0.0 | 2023 年 4 月 3 日 |
0.0.2 |
|
#895 在 文件系统
每月 70 次下载
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