新功能:更新现在直接在界面内运行

一条命令。
153 个来源
全部保持最新。

别再逐个折腾 winget、brew、npm、pip、cargo 和 helm 了。gup 并行扫描所有来源,列出哪些已过时,再在界面内嵌的终端里实时更新你选中的软件包。

npm install -g @charles_lindecker/gup --allow-scripts=node-pty

在 GitHub 上查看
  • MIT · 开源
  • Node ≥ 26
  • Windows · macOS · Linux
  • 零遥测
  • 无守护进程 · 定时更新按需开启
gup 运行演示

gup v0.5.147 detected5 updatesnormal mode

Menu

  • Scan
  • Packages5
  • Schedules1
  • Providers
  • Journal
  • Options
  • Quit

Packages

SelectionPackageCurrentLatest
partly checkedHomebrew2/3
checkedripgrep14.1.0→ 14.1.1
checkedfzf0.54.0→ 0.55.0
not checkedscheduledbat0.24.0→ 0.25.0
partly checkednpm (global)1/2
checkedtypescript5.5.4→ 5.6.2
not checkedpnpm9.6.0→ 9.12.1

● 3 of 5 checkedEnter Update (3)

space check · / filter · p schedule · a check all · ↑↓ navigate · r rescan · enter update (3) · tab menu · q quit

界面默认为英语,运行 gup language fr 即可切换为法语。命令、参数和 JSON 输出在任何语言下都一样。

01 / 功能

一切都在同一个界面中完成。

扫描、选择、更新、定时、回顾——gup 让你始终停留在一个全屏终端应用中。

  • 新

    无需离开 gup 即可更新

    安装程序在界面内嵌的终端面板中运行,进度条、交互提示和颜色都原样保留。更新完成的软件包随即从列表中移除,无需重新扫描。如果内嵌终端不可用,gup 会说明原因,改在你自己的终端中更新。

  • 多选,一次启动

    按 空格 勾选软件包,按 a 全选,按 回车 启动。一个队列,一份汇总。

  • 新

    按软件包定时更新

    勾选软件包后按 p:ripgrep 每周自动更新,node 保持不动。定时任务只针对软件包,从不针对整个 provider;操作系统的任务计划程序会短暂启动 gup,执行到期的任务,没有任何常驻进程。

  • 活动日志

    每次扫描和更新都会记录在本地。终端图表展示你的活动以及哪些软件包更新最频繁;还可以导出日志用于排查问题。

  • 新

    HTML 报告

    gup report(或在活动日志中按 o)会在浏览器中打开一份清晰、可导航的历史报告——单个离线文件,人人都能看懂,不只是终端用户。

  • 始终清晰可读的主题

    十个内置主题,或使用你自己的颜色:gup 会按 WCAG AA 检查每一种(文字 4.5:1,边框 3:1,选择 AAA 时为 7:1),并修正不达标的颜色。

  • 了解你的操作系统

    无法在你的系统上运行的 provider 会显示为灰色,而不是被隐藏:在 Mac 上,仅限 Windows 的工具会如实标明,反之亦然。

  • 为脚本和 CI 而生

    gup list --json、稳定的退出码、用 -y 跳过确认,以及绕过扫描的 provider:package 目标。

02 / 覆盖范围

153 个来源。三个系统。一个二进制文件。

Windows、macOS 和 Linux 上运行的是同一个可执行文件——相同的 provider 契约,相同的 JSON。变化的只是 gup 能驱动的操作系统层。

  • 主要平台

    Windows

    支持的 provider
    139 / 153
    • winget
    • scoop
    • chocolatey
    • WSL

    WSL 桥接:在你的发行版中驱动 apt、dnf、pacman、Flatpak、Nix 和 Linuxbrew。

  • 原生支持

    macOS

    支持的 provider
    132 / 153
    • Homebrew
    • Homebrew Casks
    • MacPorts
    • Mac App Store

    Apple Silicon 和 Intel · 自动解析 brew Cellar 符号链接 · mas 可选。

  • 原生支持

    Linux

    支持的 provider
    126 / 153
    • Homebrew / Linuxbrew
    • Nix
    • apt · 委托
    • dnf · 委托

    通过 dpkg -S 或 rpm -qf 找到二进制文件的归属,再把更新交还给对应的包管理器。

各平台一致

  • npm
  • pnpm
  • yarn
  • bun
  • pip
  • pipx
  • uv
  • cargo
  • rustup
  • gem
  • composer
  • dotnet tools
  • helm
  • kubectl
  • terraform
  • VS Code
  • JetBrains
  • gh extensions
  • pwsh modules
  • asdf
  • mise
全部 153 个 provider,按领域分类
系统包管理器
brew · brew-cask · choco · cygwin · fink · macports · mas · msys2 · nix · npackd · pkgin · pkgx · scoop · sparkle · winget
WSL
wsl · wsl-apt · wsl-brew · wsl-dnf · wsl-flatpak · wsl-nix · wsl-pacman
Node.js
bun-g · corepack · deno · fnm · npm-g · nvm · nvm-windows · pnpm-g · volta · yarn-g
Python
conda · pdm · pip · pipx · poetry · pyenv · pyenv-win · rye · uv-tools
.NET 与 PHP
composer-g · composer-self · dotnet-sdk · dotnet-tools · nuget · phive · symfony-cli
JVM
coursier-cs · jbang
Rust
cargo · rustup
其他语言
R-packages · cabal · flutter · gem · hex · julia-pkg · luarocks · mint · mix-archive · nimble · opam · pub-global · stack · vcpkg
版本管理器
asdf · goenv · mise · proto · sdkman · swiftly
云平台 CLI
aws-cli-v2 · az · doctl · flyctl · gcloud · hcloud · heroku · linode-cli · oci-cli · railway · scw · supabase
基础设施即代码
boundary · consul · nomad · opentofu · packer · pulumi · terraform · terragrunt · tflint · vault
Kubernetes
argocd · flux · helm · helm-plugins · helm-repo · k3d · kind · krew · kubectl · kustomize · minikube · skaffold · tilt
容器
dive · docker-desktop · nerdctl · oras · podman-desktop · rancher-desktop
安全工具
cosign · gitsign · grype · nuclei · nuclei-templates · pdtm · rekor · semgrep · syft · trivy
开发者 CLI
delta · gh-ext · git-for-windows · glab · jj · lazydocker · lazygit · tea
IDE 与编辑器
cursor-ext · jetbrains · visual-studio · vscode-ext · vscodium-ext · windsurf-ext
编辑器插件
nvim-lazy · nvim-mason · nvim-packer · vim-plug
嵌入式与移动开发
android-sdk · arduino-cli · expo · fastlane · platformio · xcodes
Shell 与提示符
nerd-fonts · oh-my-posh · psresource · pwsh-modules · starship
gup 自身
self
浏览完整的 provider 目录

03 / 工作原理

它是编排器,而不是又一个包管理器。

gup 并行调用各个工具自己的命令,再把结果整齐汇总。没有包注册表,没有缓存,也不会留下任何后台进程。

  1. 扫描

    每个检测到的 provider 响应 listOutdated(),每次并发四个。某个出错只会影响它自己那一行。

  2. 选择

    按 provider 分组查看软件包,筛选、勾选——或者用 gup update brew:fzf 直接跳过扫描。

  3. 更新

    原生命令以参数向量的形式运行,从不经过 shell。每一次尝试都会记入本地日志。

架构详解

04 / 安全

它会运行特权命令,所以设计上格外严谨。

唯一的 shell 调用入口、严格的参数向量、由测试锁定的允许列表——每次提交还要经过三款静态分析工具。

  • 执行

    子进程以严格的 argv 向量运行,从不使用 shell: true,且只经由一个经过审计的入口。

    • execa
    • argv
    • no shell
  • 供应链

    仅通过 HTTPS 下载,每次构建都审计依赖,每周审查依赖更新。

    • audit-ci
    • Dependabot
    • gitleaks
  • 静态分析

    每次提交都运行 CodeQL、Semgrep 和 eslint-plugin-security,另有一套专门验证安全不变量的测试。

    • CodeQL
    • Semgrep
    • eslint-security

05 / 常见问题

问题解答。

gup 会取代 winget、brew 或 npm 吗?

不会。gup 在同一个界面背后编排各工具的原生命令(winget upgrade、brew outdated、npm update -g、pip list --outdated……)。没有自创协议,也没有版本缓存。

支持 macOS 和 Linux 吗?

支持。在 macOS 上原生运行:Homebrew 的 formula 与 cask、MacPorts 以及 Mac App Store,Apple Silicon 和 Intel 均支持。在 Linux 上,系统层由 Homebrew/Linuxbrew 和 Nix 负责,发行版安装的二进制文件会交还给 apt 或 dnf 处理。系统层之上的一切——npm、pip、cargo、helm、VS Code……——在三个系统上的表现完全一致。

如何安装 gup?

运行 npm install -g @charles_lindecker/gup --allow-scripts=node-pty,然后用 gup doctor 查看检测到了哪些 provider。需要 Node.js 26.9.0 或更高版本。--allow-scripts=node-pty 允许 node-pty 的安装脚本运行,内嵌终端正是依靠 node-pty:不加这个参数,npm 11 会发出警告,npm 12 则会跳过这些脚本。

可以在 CI 中使用 gup 吗?

可以。gup list --json --fast 提供机器可读的输出,gup update --all -y 会跳过所有确认。退出码保持稳定:0 表示成功,1 表示部分失败,2 表示参数无效。

gup 支持多少个包管理器?

153 个 provider,每个都是独立模块:winget、scoop、chocolatey、Homebrew、MacPorts、npm、pnpm、pip、uv、cargo、gem、composer、dotnet 工具、helm、kubectl、terraform、VS Code 扩展、JetBrains IDE、WSL 发行版等等。

运行它安全吗?

每个子进程都经由唯一的入口,以严格的参数向量运行——从不经过 shell——并受测试锁定的允许列表约束。CodeQL、Semgrep、gitleaks、audit-ci 和 Dependabot 持续运行。gup 不发送任何遥测数据。

它和 topgrade 有什么不同?

topgrade 直接执行更新;gup 会先回答“哪些已过时,从哪个版本到哪个版本”。扫描是独立的一步,支持 JSON 输出、逐个软件包选择、provider:package 目标、按软件包定时更新,以及可随时查看的本地历史记录。

界面是什么语言?

默认为英语。gup language fr 会将界面切换为法语并保存这一选择;GUP_LANG=fr 则只对单个 shell 生效,并优先于该选择。命令、参数和 JSON 输出与语言无关,本站提供八种语言版本。

06 / 安装

三十秒,一切了然。

一次 npm 安装,一条命令,就能看到你机器上所有过时内容的完整清单。

npm install -g @charles_lindecker/gup --allow-scripts=node-pty

  • gup全屏界面
  • gup list --fast过时内容,快速扫描
  • gup update --all -y全部更新,无需确认(CI)
  • gup update brew:fzf单个软件包,跳过扫描
  • gup doctor检测到了什么,以及如何安装其余部分