1 个不稳定版本
0.1.0 | 2023 年 8 月 13 日 |
---|
#11 在 #保持
26KB
484 行
描述
一个帮助保持系统更新的工具。
此工具将记住您安装的应用程序并更新它们(即使是从 git 仓库中)。为此,您需要配置所有您希望在升级系统时运行的命令(请参阅 example_config
文件夹)。
另请参阅 topgrade,它提供了一种自动检测所有内容的解决方案。
用法
配置文件夹位于 您系统上的标准配置路径,命令应位于包管理器子文件夹中。例如,在 Linux 上,它位于 ~/.config/systemupdater/packagers/
只需启动程序即可,您在日常使用中不需要任何选项。
sup
命名约定
每个包管理器文件都按字母顺序执行。为了帮助维护一致的执行顺序,我们使用以下方案: <RANK>-<NAME>
。其中 <RANK>
是包管理器应执行的时间点对应的数字。而 <NAME>
是您想要叫它的名称。
当前默认的 <RANK>
分类如下
- 我们从 5 开始,每次增加 10,这样您可以在其中添加步骤(即使我们不期望有什么东西比系统更重要需要更新……可能是与系统安全相关的?)
- "05" 用于更新系统标准包管理器(
apt
、……) - "15" 用于其他包管理器(
flatpak
、……) - "25" 用于工具链更新器
- "35" 用于特定语言的包管理器
- "45" 用于您自己用 git 更新的工具
- 没有排名是最后执行的。 根据实现方式,这个排名可能会在未来消失
注意:目前排名只是一种建议,未来我们期望能够并行启动所有具有相同 <RANK>
的包。因此,步骤之间的空间:您可能不想同时运行多个CPU密集型的打包器。
安装
cargo install --locked system-updater
您还需要一些配置,以便程序知道要执行什么。您可以在git仓库中找到最新的配置示例 在这里。
cd /tmp
curl -O "https://framagit.org/Zykino/system-updater/-/archive/master/system-updater-master.tar.gz?path=example_packagers"
tar -xzf system-updater-master.tar.gz\?path=example_packagers
# On most systems:
mv system-updater-master-example_packagers/example_packagers/ $HOME/.config/systemupdater/packagers
变更日志
在0.1.0版本中
- 运行不同配置文件中找到的命令
- 在升级前后执行预/后命令
- 完成所有安装,并在最后总结成功和错误
- 改进错误 ^^'
- 打包器的执行者需要按顺序执行,并且只有在所有前一个执行失败时才执行
- 在尝试执行之前,是否可以用
which
(该包?)测试命令是否存在?(特别是具有管理员权限时)
- 在尝试执行之前,是否可以用
- 文档
- README
路线图
这是无序的。遵循我的动机和PR?
- 测试
- 添加一个
--no-continue -K
参数,在第一个错误时停止 - 添加选项以显示完整配置(所有执行者和它们是否可用或找不到),以及计算配置(仅包含将要使用的执行者)。
- 防止使用
sudo
和等效的,添加一个配置来指定 "需要管理员权限" 或 "以...执行" ==sudo <username>
- 命令的并行执行
- 显示通用进度条和正在执行的任务列表(包括它们的步骤号):"helix PostInstall (1/2)"
- 应防止所有输入(甚至请求
sudo
的密码) - 所有输出(标准和错误)需要重定向到文件。可能像这样:/tmp/system-updater/--<executorName?/stepNumber??>.log
- 我认为每个命令或执行者都有一个单独的文件,其中包含stdout和stderr是最佳的,可能在每个行前加上 "stdout: "
- 为人类立即检查日志,一个临时文件夹很棒,但我们可能想要一种方法来存档日志(至少提供一个选项来选择其他目标文件夹)
- 在远程计算机上执行
- 具有与并行执行相同的子任务,用于UI
- 从远程机器检索日志(包括正常和错误日志)
- 文档
- 代码
- 添加CI
- 找到一种方法来分发 "example_packagers" 配置文件夹。使用 cargo parcel?一个
--dump
选项?其他什么?
想要拥有的功能
- 作为一个库使用(我在main.rs中设置了可能的最小值,但接口还没有设计出来)
- 给出一个目录和/或文件列表
- 给出一个已经填充的
Updater
结构体
- 有子命令以交互方式对打包器的配置进行操作
- 列表
- 显示
- 创建
- 删除
- 更新?(糟糕的方法:显示 + 删除 + 创建? ^^')
- 更多配置示例
- 为所有/大多数著名的系统提供系统执行者(openSUSE,Fedora,Arch,…)
- 至少提供一个二进制文件下载示例(curl或wget)
- 以更合理的方式启动自身和子命令(不确定是否在所有系统上或以相同的方式进行)
依赖关系
~4–14MB
~182K SLoC