17、【Agent】【OpenCode】源码构建(Bun安装方式)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Agent】【OpenCode】源码构建(Bun介绍)

下载了 OpenCode 源码,并提供了 Gitee 快速下载的地址,接着分析了 package.json 的头部信息,可以看出来 OpenCode 是个典型的 JavaScript/TypeScript 的项目,并且规定了必须使用 Bun 包管理器进行安装,然后介绍了 Bun 是一个超快的 JavaScript 运行时(runtime)和工具集,可以替代 Node.js + npm 等传统前端工具链,并且其速度特别快(包括启动速度和包安装速度),最后对比了 Node.js/npm 和 Bun 的基本信息,下面继续分析

OpenCode

上篇 blog 介绍了 OpenCode 项目使用 Bun 工具集进行管理,下面来安装 Bun 工具集

终端输入

bash 复制代码
curl -fsSL https://bun.sh/install | bash

即可使用安装脚本进行安装,这种安装方式之前 blog 【Agent】【OpenCode】介绍 已经安装 OpenCode 的时候已经使用过,但之前没详细讲,这种命令是现代开源工具中非常常见且标准化的安装方式,下面来分析下

首先要注意,curl -fsSL https://bun.sh/install 这个命令是下载一个安装脚本,而不是 Bun 工具集本身 ,这里的 curl 选项含义如下

  • -f:失败时静默退出,不输出 HTML 错误页
  • -s:静默模式,不显示进度条
  • -S:如果出错的话,仍然显示错误信息(一般和 -s 搭配使用)
  • -L:跟随 HTTP 重定向(比如从 http → https)

结合 curl 选项,这一步只是安静地下载一个 shell 脚本,其内容类似

bash 复制代码
#!/bin/bash
# 安装脚本(简化版)
OS=$(uname -s)
ARCH=$(uname -m)
URL="https://github.com/oven-sh/bun/releases/latest/download/bun-linux-x64.zip"
curl -L "$URL" -o /tmp/bun.zip
mkdir -p ~/.bun/bin
unzip /tmp/bun.zip -d ~/.bun/
chmod +x ~/.bun/bin/bun
echo 'export PATH="$HOME/.bun/bin:$PATH"' >> ~/.bashrc

可以看到,https://bun.sh/install 返回的是 install.sh 文本脚本,而不是 Bun 二进制文件

然后是第二步 | bash把下载到的脚本内容直接传给 bash 执行,相当于

bash 复制代码
curl -fsSL https://bun.sh/install > install.sh
bash install.sh
rm install.sh

但这里用管道更简洁,也不会留下临时文件

https://bun.sh/install 安装脚本看起来很复杂,但其内部主要做三件事:

  • 检测系统(Linux / macOS / Arch / x64 / ARM 等)
  • 下载对应平台的预编译 Bun 二进制包(从 Github Releases)
  • 解压并配置环境变量

这些安装过程都是脚本自动化执行,从安全角度看

  • 脚本只操作 home 目录的相关内容,比如 ~/.bun~/.bashrc
  • Bun 的源码完全公开:https://github.com/oven-sh/bun/blob/main/install.sh

看起来都还安全,但此类安装方式也有风险点(通用风险)

  • 首先用户需要信任 bun.sh 域名,如果域名被劫持,可能下发恶意脚本
  • 安装脚本有权限执行任意命令,但 Bun 是知名项目,可信度高

对比 npm install -g 命令,同样也会执行 postinstall 脚本,其风险类似,谨慎点的话,可以先查看脚本内容后,再决定是否运行,比如只输入

bash 复制代码
curl -fsSL https://bun.sh/install

这里不加 | bash,只看内容,确认无害后再执行完整命令

安装脚本执行完后,有几个可预见的变化

文件/目录 变化
~/.bun/ 新建,包含 bin/bun 的二进制文件
~/.bashrc 末尾追加一行:export PATH="$HOME/.bun/bin:$PATH"
which bun 能找到 bun 命令路径

下次再打开终端时,bun 命令就可用了


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】源码构建(Bun&node速度对比)

相关推荐
机器人猎头David3 分钟前
VLA、世界模型、强化学习,在机器人里分别解决什么问题?
人工智能·机器人·机器人猎头·机器人猎头公司
dianziyao_4 分钟前
第 4.1 篇:让 Codex 理解你的双链——AI 辅助发现笔记间的关联
人工智能·笔记
围炉聊科技4 分钟前
网站把自己变成 MCP server:OpenAI 第一个用上 WebMCP
人工智能
葡萄城技术团队14 分钟前
一句话生成数据透视表?SpreadJS AI 如何把分析需求变成行、列和值
人工智能
米小虾15 分钟前
给 AI 生成的内容发一张身份证:C2PA 到底能证明什么,又证明不了什么
人工智能
芯片人00721 分钟前
纯硬件一键开关机ASIC芯片,为什么比 MCU 方案更适合更可靠
人工智能·单片机·嵌入式硬件·物联网·芯片
北岛贰41 分钟前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
冬奇Lab42 分钟前
一天一个开源项目(第212篇):OpenMAIC —— 清华出品的多智能体交互式课堂
人工智能·开源·资讯
乐迪信息43 分钟前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
leoZ2311 小时前
第 1 篇:为什么不该再让 AI 画页面
人工智能·神经网络·机器学习·自然语言处理·cnn·word2vec·mllib