abdulfarhath/ButterUp

GitHub: abdulfarhath/ButterUp

一款基于 Tauri 的原生 Linux 桌面应用,将 apt、snap、flatpak 更新以及系统健康检查、故障修复和深度清理整合到一个无需终端操作的图形界面中。

Stars: 7 | Forks: 0

ButterUp icon # ButterUp **像黄油般顺滑的系统更新 —— 在一个窗口中搞定 apt、snap 和 flatpak。** *源自印地语俗语“makkhan jaisa chalna” —— 运行如黄油般顺滑。* 🧈 [![最新发布](https://img.shields.io/github/v/release/abdulfarhath/ButterUp?color=ffa116)](https://github.com/abdulfarhath/ButterUp/releases/latest) [![下载量](https://img.shields.io/github/downloads/abdulfarhath/ButterUp/total?color=2cbb5d)](https://github.com/abdulfarhath/ButterUp/releases) [![许可证:GPL-3.0](https://img.shields.io/github/license/abdulfarhath/ButterUp)](LICENSE) ![Platform](https://img.shields.io/badge/platform-Ubuntu%20%7C%20Debian%20%7C%20deb%20·%20rpm%20·%20AppImage-e95420) ![Arch](https://img.shields.io/badge/arch-amd64%20%7C%20arm64-8a2be2) ButterUp — apt, snap and flatpak updates side by side
## 你的更新崩溃了。现在怎么办? `dpkg was interrupted, you must manually run…`(dpkg 被中断,你必须手动运行……)—— 如果这句话曾经毁掉 你的午后时光,那么 ButterUp 就是为你而生的。保持基于 Debian 的系统健康意味着 要同时应付 apt、snap 和 flatpak;当更新出错时,你最终只能从十年前的论坛帖子里 复制粘贴各种终端咒语。 ButterUp 将这一切整合到一个友好的窗口中:查看所有待处理的内容, 一键更新所有内容(或仅更新安全修复),**检测并修复 经典的损坏状态**,并回收隐藏在缓存、旧内核和被遗忘的 snap 修订版本中的数 GB 空间。 无需终端 —— 提权操作通过系统原生的密码对话框(polkit)完成。 ## 安装 从[最新发布](https://github.com/abdulfarhath/ButterUp/releases/latest)中获取安装包 —— 每个版本都提供 **amd64**(Intel/AMD)和 **arm64**(Raspberry Pi 4/5,ARM 笔记本电脑)版本: | 你的系统 | 文件 | 安装方式 | |---|---|---| | Ubuntu 22.04+, Debian 12+, Mint, Pop!\_OS 等 | `ButterUp_*.deb` | `sudo apt install ./ButterUp_*.deb` | | Fedora, openSUSE, RHEL | `ButterUp-*.rpm` | `sudo dnf install ./ButterUp-*.rpm` | | 其他任何系统(无需安装) | `ButterUp_*.AppImage` | `chmod +x` 并运行 | 大功告成 —— 从你的应用菜单中启动 **ButterUp** 即可。 完整体验(健康修复、清理、历史记录)专为 apt/dpkg 系统打造。 在非 Debian 发行版上,PackageKit 更新、snap 和 flatpak 功能仍然有效; 而 apt 专属的工具则会自动隐藏。 建议在标准桌面上使用预装的 PackageKit 和 pkexec。 ## 功能特性 | | | |---|---| | 🔄 **更新一切** | 并排显示 apt(通过 PackageKit)、snap 和 flatpak —— 可更新全部、部分更新或**仅更新安全修复**,并预先显示实时进度和下载大小 | | 🩺 **健康检查** | 8 项针对导致系统崩溃状态的检查:dpkg 被中断、依赖损坏、保留的包、`/boot` 空间将满、内核堆积、过时的软件包列表、待重启 | | 🔧 **一键修复** | 每个问题都附带引导式的、由 polkit 授权的修复方案 —— 就是论坛上会建议你运行的那些命令,但你不再需要去翻论坛 | | 🧹 **深度清理** | autoremove + 旧内核、apt 缓存、被取代的 snap 修订版本、systemd 日志 —— 在你确认执行前会显示可清理的大小 | | 📜 **历史记录** | 系统上的每一次软件包变更,均从 apt 自身的事务日志中解析得出:时间、内容,以及操作发起者 | | 🪶 **轻量级** | 原生 Tauri 2 应用(使用系统 WebKit,不含 Electron)—— .deb 包仅约 4 MB |
Health checks with one-click repairs

Cleanup — old kernels, caches, snap revisions and journals
## 为什么不直接使用内置的更新程序? Ubuntu 的更新程序只为你展示更新 —— 仅此而已。当更新*失败*时, 你就只能自求多福了。ButterUp 的健康检查能够捕获经典的失败状态, 并通过一次授权点击即可修复它们。而且与老旧的清理工具(如 Stacer 等)不同的是, 它建立在系统原生且规范的接口之上 —— 通过 D-Bus 通信的 PackageKit、polkit、snapd —— 而不是粗暴抓取命令行结果,因此它能与你的包管理器保持可靠一致。 它以 root 身份运行的所有操作都是一个简短、固定的白名单,你可以在[这个文件](src-tauri/src/privileged.rs)中进行审计。 ## 从源码构建 系统依赖项(Ubuntu/Debian): ``` sudo apt install build-essential curl wget file pkg-config \ libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev \ librsvg2-dev nodejs npm rustc cargo ``` 在开发环境中运行: ``` npm install npm run tauri dev ``` 构建发布版 `.deb`: ``` npm run tauri build ``` 针对你的在线系统运行(只读)冒烟测试: ``` cd src-tauri && cargo test --test smoke -- --nocapture ``` ## 路线图 - [x] 统一更新:apt(通过 D-Bus 的 PackageKit)、snap、flatpak - [x] 仅安全更新 + 下载大小预览 - [x] 健康检查,支持一键 polkit 授权修复 - [x] 清理:autoremove、旧内核、包缓存、snap 修订版本、日志 - [x] 更新历史(apt 事务日志) - [x] .deb 打包 + CI 发布 - [ ] 托盘图标 + 后台更新通知 - [ ] Flatpak 未使用运行时清理 - [ ] PPA / apt 仓库发布 欢迎贡献代码 —— 代码库小巧且易读(Rust + React), 上述路线图是一个很好的入手点。 ## 技术栈 - **前端:** React + TypeScript + Vite - **外壳:** [Tauri 2](https://v2.tauri.app)(系统 WebKitGTK,非 Electron) - **后端:** Rust —— 使用 `zbus` 处理 PackageKit/D-Bus,调用 snap 和 flatpak CLI,通过 pkexec 进行 polkit 授权 ## 许可证 [GPL-3.0-or-later](LICENSE)
标签:可视化界面, 通知系统