moon,apt和yum之外linux系统命令安装新选择

在服务器上装软件,目前有两条路。

一条是系统包管理器,Debian 系用 apt,CentOS 系用 yum。

一条是语言生态的包管理器,比如 Node.js 的 npm,Rust 的 cargo。

MoonBit 的 moon 属于后者,但它的能力,又比一般的包管理器多走了一步。

什么是 moon?

它是 MoonBit 的包管理器,地位相当于 Node.js 里的 npm,Rust 里的 cargo。

它把一个软件的 下载、编译、安装、升级,做成了一条龙闭环。

你要装一个 MoonBit 写的工具,只需要一条命令,它自己会去下载源码,自己编译,自己把编译好的二进制放到指定目录。

安装 bm2

bm2 是基于 MoonBit 实现的Node.js & Bun 的进程管理器,用来替代 pm2。

它在 mooncakes 上发布之后,服务器上安装只需要三步。

第一步,安装 MoonBit

arduino 复制代码
curl -fsSL https://cli.moonbitlang.cn/install/unix.sh | bash

第二步,更新索引

bash 复制代码
moon update
# Registry index cloned successfully
# Symbols updated successfully

第三步,安装 bm2

shell 复制代码
moon install chensuiyi/bm2/... --bin ~/.local/bin


# Downloading chensuiyi/bm2@0.2.1
# Downloading moonbitlang/x@0.4.41
# Downloading bobzhang/toml@0.4.2
# Finished. moon: ran 17 tasks, now up to date
# Success: Installed `bm2` to `/root/.local/bin/bm2`
# Success: Installed `bm2d` to `/root/.local/bin/bm2d`

然后 bm2 version,就能看到装好的版本了。

整个流程,前后不到一分钟。

两条路各自的特点

apt 和 yum 装的是编译好的二进制包,直接下载解压到系统目录。

好处是安装快,不需要编译环境,而且包和系统深度集成,依赖关系由系统统一管理。

moon 装的是源码包,在本地服务器上现场编译。

好处是产物天然适配当前机器的架构和系统版本,不需要维护多套预编译产物。

还有一个差异是版本时效。

apt 和 yum 仓库里的软件版本,一般比官方发布晚一些,因为仓库维护需要时间,稳定性优先。

mooncakes 上的版本,作者发布后就能装到,时效性更强。

这两种方式没有谁好谁坏,定位不同而已。

更新的方式也不同

apt 和 yum 的更新,走的是系统统一的升级流程,apt upgrade 一把梭,把所有软件包一起更新。

好处是省心,系统里所有包的状态一目了然。

moon 的更新,是重跑一遍安装命令。

bash 复制代码
moon install chensuiyi/bm2/... --bin ~/.local/bin

它会自动检测新版本,只编译有变化的部分,然后原子替换旧文件。

速度怎么样

现场编译,听起来比下载二进制慢,但 moon 有增量缓存机制。

第一次安装,要全量编译,也就几十秒。

第二次更新,只编译变化的部分,基本是秒级。

而且编译好的产物有缓存,装多个项目时,公共依赖编译一次,后面全部复用。

什么场景适合moon

分析下来,moon 适合的应用场景,其实比较明确。

首先是架构敏感的工具。

服务器从 x86 换到 arm,或者反过来,apt 和 yum 的预编译包可能没有对应版本,moon 的本地编译则不存在这个问题。

其次是追求版本时效的场景。

有些工具需要尽快用上新版特性,mooncakes 发版即所得,比等系统仓库更新更快。

再次是语言生态内的工具。

MoonBit 写的工具,天然在 mooncakes 上分发,用 moon 安装是顺理成章的路径。

那 apt 和 yum 呢?

系统内核、系统库、基础服务,这些依然离不开系统包管理器。

它们的依赖和系统深度绑定,moon 也不具备替代的条件。

所以更准确的说法是,moon 在应用层工具这个范围内,可以部分替代 apt 和 yum,系统层的东西,还是各司其职。

未来会怎样

MoonBit 生态还在早期,mooncakes 上的工具数量还不多,但方向是明确的。

语言生态成熟之后,应用层的命令行工具,用 moon install xxx 安装,会成为常态。

到时候,装一个进程管理器,一条命令,装一个抓包工具,一条命令,装一个日志分析工具,还是一条命令。

系统包管理器管系统,语言包管理器管应用,两条路并行,各干各的。

你觉得这个分工合理吗?

欢迎在评论区聊聊你的看法。

相关推荐
独泪了无痕5 小时前
Spring Data Redis 快速上手
spring boot·redis·后端
变与不变8068 小时前
jQuery怎么使用
前端·javascript
神膘护体小月半8 小时前
flex 布局的 order 属性
前端·css
paopaokaka_luck8 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
仰望.8 小时前
vue 表格组件 vxe-table 树表格懒加载支持拖拽排序的详细用法
前端·javascript·vue.js·vxe-table
前端 贾公子8 小时前
vite-plugin-uni-manifest 升级指南
前端
小码哥_常8 小时前
iPhone 用户传了张 HEIC,我的前端崩了
前端
小码哥_常8 小时前
你发的原图可能暴露你家地址——聊聊图片 EXIF 隐私
前端
java1234_小锋8 小时前
【技术专题】CSS3 网页技术 - CSS3 优先级
前端·css·css3
m0_639906949 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端