• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sn0wdr1am
V2EX  ›  程序员

UniRTM,一个统一环境和工具管理软件(致敬 mise)

  •  
  •   sn0wdr1am · 8h 33m ago · 350 views
    UniRTM Logo

    UniRTM

    GitHub GitHub Workflow Status Continuous Integration Continuous Delivery

    集开发工具、环境变量和任务管理于一体的 CLI (内置安全扫描)。
    灵感来源于出色的 mise 项目,在此向其致敬。

    快速开始官方文档开发工具环境变量任务系统


    [!TIP] UniRTM 强大的任务编排能力让你能够极其轻松地将 Trivy 、Syft 等安全工具无缝集成到你的日常构建和部署流程中。

    介绍

    UniRTM (Universal Runtime Manager) 能够在每次执行命令前自动准备好你的开发环境。它将项目所需的工具版本、环境变量和常用任务统一集中在 .unirtm.toml 文件中进行管理,确保每次打开新终端、切换分支或运行 CI 任务时,环境配置都绝对一致。

    • 安装并在诸如 node, python, go 等各类 开发工具 之间无缝切换。
    • 基于不同目录加载隔离的 环境变量,支持读取 .env 以及 SOPS 加密数据。
    • 编写并运行项目的构建、测试、代码检查及部署 任务

    虽然在概念上我们深受伟大的 mise 启发(在此致敬),但 UniRTM 在架构上引入了几个独特的选择:

    • 纯 Go 引擎: 底层完全由 Go 语言编写,利用 goroutines 实现了极致的并发下载能力。
    • 轻量级 Go 垫片 (Lightweight Shims): 彻底抛弃了缓慢的 Bash 垫片。所有的命令均由高性能的单一 Go 引擎拦截并极速路由,既避免了环境变量( PATH )无限制爆炸,又保证了极致的执行性能。
    • 任务无缝集成安全工具: 虽然保持了引擎本身的极致精简,但你能在项目中利用 UniRTM 的任务系统,丝滑地串联 Trivy 、Syft 等安全漏洞扫描工作流。
    • 强制版本锁定: 自动生成 unirtm.lock 锁文件,不仅锁定版本号,还精确锁定所有下载包的校验和,从而保障团队环境的绝对可复现。

    支持的操作系统 (Supported Platforms)

    完全支持 macOS (Apple Silicon / Intel)、Linux (glibc & musl/Alpine) 以及 Windows 平台。

    演示 (Demo)

    以下演示展示了如何使用 UniRTM 全局安装指定版本的 go。 请注意安装的速度以及内置的安全漏洞扫描功能!

    demo

    快速入门

    安装 UniRTM

    你可以通过多种方式安装 UniRTM ,详见 快速开始

    $ curl -sL https://raw.githubusercontent.com/snowdreamtech/UniRTM/main/install.sh | bash
    $ ~/.local/bin/unirtm --version
    UniRTM v0.1.0 macos-arm64 (2026-05-28)
    

    将 UniRTM 挂载到你的 Shell 中(请选择与你对应的 Shell ):

    # 假设 unirtm 被安装在默认的 ~/.local/bin/unirtm 下
    echo 'eval "$(~/.local/bin/unirtm env)"' >> ~/.bashrc
    echo 'eval "$(~/.local/bin/unirtm env)"' >> ~/.zshrc
    echo '~/.local/bin/unirtm env | source' >> ~/.config/fish/config.fish
    

    单次执行指定版本的工具

    $ unirtm exec node@20 -- node -v
    unirtm [email protected] ✓ installed
    v20.x.x
    

    全局安装开发工具

    $ unirtm use --global node@22 [email protected]
    $ node -v
    v22.x.x
    $ go version
    go version go1.22.x macos/arm64
    

    查看 开发工具指南 获取更多示例。

    管理环境变量

    # .unirtm.toml
    [env]
    SOME_VAR = "foo"
    
    $ unirtm set SOME_VAR=bar
    $ echo $SOME_VAR
    bar
    

    此外,UniRTM 同样可以自动读取本地的 .env 文件

    运行任务

    # .unirtm.toml
    [tasks.build]
    description = "编译项目"
    run = "echo building..."
    
    $ unirtm run build
    building...
    

    查看 任务系统指南 获取更多高级用法。

    UniRTM 综合实战配置

    下面是一个综合的 .unirtm.toml 示例,展示了如何在一个项目中同时管理开发工具、环境变量,并使用内置的安全扫描执行高级的部署任务编排:

    # .unirtm.toml
    [tools]
    terraform = "1"
    aws-cli = "2"
    node = "20"
    
    [env]
    TF_WORKSPACE = "development"
    AWS_REGION = "us-west-2"
    NODE_ENV = "production"
    
    [tasks.plan]
    description = "运行带有工作区配置的 terraform plan"
    run = """
    terraform init
    terraform workspace select $TF_WORKSPACE
    terraform plan
    """
    
    [tasks.validate]
    description = "验证 AWS 凭据与 terraform 配置"
    run = """
    aws sts get-caller-identity
    terraform validate
    """
    
    [tasks.audit]
    description = "执行深度的底层安全扫描"
    run = """
    trivy fs --format cyclonedx --output sbom.json .
    gitleaks detect --source . --no-banner
    """
    
    [tasks.deploy]
    description = "在验证和安全扫描后正式部署基础设施"
    depends = ["validate", "audit", "plan"]
    run = "terraform apply -auto-approve"
    

    你可以这样运行:

    unirtm install # 安装所需要的所有开发工具
    unirtm run deploy # 在部署前,将自动按顺序并行执行校验和安全审查任务
    

    官方文档

    完整的架构解析与高级配置指南请前往官网:snowdreamtech.github.io/UniRTM

    多维度深度对比 (Architecture & Environments)

    为了满足现代企业级和高并发容器化环境的严苛要求,UniRTM 在底层架构上做出了极具针对性的设计抉择。以下是我们在多个关键维度上与优秀的生态前辈 (mise, asdf) 的深度对比:

    1. 核心架构与执行路径

    对比维度 asdf (Bash) mise (Rust) UniRTM (Go) 核心优势与意义
    命令执行路径 Bash 垫片 Rust 垫片 / PATH 轻量级 Go 垫片 使用 Go 编译的单一入口代理,彻底解决 Bash 垫片的性能低下问题,且完美解决跨平台兼容性。
    并发下载模型 操作系统线程 原生 Goroutines 依托 Go 语言极其轻量的协程机制,在海量工具链下载更新时实现极致的并发吞吐量。
    配置层级 .tool-versions mise.toml .unirtm.toml 使用标准化的 TOML 文件统一管理项目的工具、环境和任务。

    2. 环境变量与上下文管理

    功能特性 asdf mise UniRTM 详细说明
    统一管理范畴 仅开发工具 工具+环境+任务 工具+环境+任务 根据当前所在目录,自动且无缝地切换整体上下文环境。
    .env 文件解析 原生支持 原生支持 告别额外的环境变量加载器,内置完美解析传统 .env 文件。
    密钥加密管理 插件集成体系 内置 SOPS 原生支持 将基于 SOPS 的加密环境变量作为一等公民,提供开箱即用的敏感信息保护。

    3. 跨平台兼容与系统韧性

    功能特性 asdf mise UniRTM 详细说明
    Windows 原生支持 依赖 WSL/MSYS 支持 自底向上原生设计 从设计之初就兼顾 Windows 与 Cygdrive ,提供极其丝滑的原生跨平台体验。
    Alpine / Musl 兼容 部分支持 支持 硬核底层兼容 完美无缝运行在没有任何 glibc 依赖的极简 Alpine 容器环境之中。
    版本与校验锁定 仅版本号 mise.lock (支持) unirtm.lock (默认) 锁定版本的同时严格校验所有底层文件的 Hash ,保障团队环境的一致性。

    4. 生态亲和度与极简主义

    功能特性 asdf mise UniRTM 详细说明
    混合路径解析 部分支持 深度支持 (Cygdrive) 对 Windows Git Bash / MSYS2 的原生路径转换进行了专项优化。
    外部依赖要求 依赖 Bash 生态 极少 绝对零依赖 核心插件直接编译入独立二进制,丢进任意极简系统开箱即用。
    垫片开销 常规 (Bash 脚本) 已优化 (Rust 二进制) 极速 (Go 二进制) 所有工具软链回 unirtm 引擎进行毫秒级极速路由,彻底杜绝 PATH 爆炸问题。
    DevOps 集成 自定义脚本 良好 原生级无缝集成 Go 语言血统,天生匹配云原生基础设施,极其适合企业内部自研平台的二次集成。

    致谢鸣谢

    本项目在架构设计和开发者体验上深受伟大的 mise 的启发。

    开源协议

    本项目基于 MIT 许可证开源。版权所有 (c) 2026-至今 SnowdreamTech Inc 。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1172 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 18:02 · PVG 02:02 · LAX 11:02 · JFK 14:02
    ♥ Do have faith in what you're doing.