之所以需要将Windows运行的好好的OpenCode迁移到Wsl主要是为了解决Skill在运行过程中,部分调用工具命令Git Bash命令行与Windows目录盘符以及执行程序环境之间的不兼容问题,索性直接切换到仿Linux环境,保证文件目录体系的运行一致性,降低OpenCode的使用难度。
前置准备
Wsl2
Windows中已经安装了Wsl并升级到了Wsl2,具体安装教程可以查看微软文档,本文不再进行介绍。
子系统镜像
这里使用的是Ubuntu22.04,是Ubuntu官方网站针对Wsl对应版本的镜像文件。这里是Ubuntu2404-250130_x64.wsl下载地址,可以自行下载。
既有经验
在Windows中已经成功运行安装过OpenCode,并熟悉./config/opencode目录以及./local/share/opencode目录。
迁移步骤
下载分发版镜像
Ubuntu2404-250130_x64.wsl下载地址
安装分发版镜像
对应Ubuntu2204-250130_x64.wsl这个镜像文件来说,使用高版本wsl有两种加载方式。
方式一(推荐)
使用--import指令,导入过程中,需要设置wsl对应的分发版名称以及导入之后本地磁盘文件的物理输出路径,同时首次导入需要设置默认的用户账户以及密钥。
>wsl --import[wsl_name][out_dir]./Ubuntu2404-250130_x64.wsl方式二
先安装挂载,退出并停止会话后,再移动到指定目录。
进行安装。
wsl --install --from-file ./Ubuntu2404-250130_x64.wsl --version2--name[name]输出如下:
正在安装: Ubuntu2404-250130_x64.wsl 已成功安装分发。可以通过 “wsl.exe -d ubuntu2204-opencode” 启动它输入账户和密钥。
正在启动 ubuntu2204-opencode... Provisioning the new WSL instance ubuntu2204-opencode This might take a while... Create a default Unix user account:[username]New password: Retype new password: passwd: password updated successfully To run acommandas administrator(user"root"), use"sudo <command>".See"man sudo_root"fordetails.退出并关闭。
wsl -d[wls_name]--shutdown此处wsl_name为ubuntu2204-opencode。
wsl -d ubuntu2204-opencode --shutdown移动分发版系统到指定目录(因为默认安装,对应镜像磁盘文件在C盘),移动成功后就可以在目标路径文件夹看到一个<wsl_name>.vhdx文件。
wsl --manage[name]--move[绝对路径文件夹]安装OpenCode
进入目标子系统,并输入安装时,设置的密钥。
wsl -d[wsl_name]切换到用户根目录。
cd~这里为了简化过程,采用在线脚本安装方式,默认安装到当前用户.opencode文件夹中,也可以通过设置环境变量OPENCODE_HOME=/usr/local/bin进行处理。
curl-fsSL https://opencode.ai/install|bash之后就是静静等待下载和安装。
安装完成后,当前会话需要注意,直接查找whereis opencode可能不会看到对应命令,而是会看到宿主机中的opencode目录,类似如下:
$whereisopencode opencode: /mnt/d/nvm/v20.19.5/opencode这个时候,不要认为是安装失败,exit当前会话,重新使用wsl -d [wsl_name]进入会话。
exit重新进入会话。
wsl -d[wsl_name]查看指令。
whereisopencode输出如下,表示安装成功:
opencode: /home/llr/.opencode/bin/opencode /mnt/d/nvm/v20.19.5/opencode安装oh-my-opencode
这里也是用在线安装,但是需要注意的是安装oh-my-opencode之前,需要系统中包含unzip指令,以及bun。如果没有unzip,将导致bun在线脚本无法正常执行。
apt-getinstallunzip-y安装成功后,执行bun在线安装脚本。
curl-fsSL https://bun.sh/install|bash安装成功后,当前会话如果需要立即生效,需要执行source加载执行当前会话,添加环境变量,此处user为llr。
source./home/[user]/.bashrc查找bun是否添加环境变量。
whereisbun输出如下,表示环境变量添加成功:
bun: /home/[user]/.bun/bin/bun开始安装oh-my-opencode,其中--claude=yes --chatgpt=yes --gemini=yes如果都没有可以设置为no。
bunx oh-my-opencodeinstall--no-tui --claude=yes --chatgpt=yes --gemini=yes安装成功后,进行验证。
cat~/.config/opencode/opencode.json|grep"oh-my-opencode"输出如下,表示安装成功:
"oh-my-opencode"找到一个目录,打开运行命令,第一次需要下载依赖,会比较缓慢出现黑屏,需要耐心等待。
opencode运行正常如下:
迁移Windows配置
基础配置安装好之后,就可以迁移Windows中的配置到wsl分发系统中。
拷贝Windows中C:/Users/ll/.local/share/opencode/auth.json到/home/[user]/.local/share/opencode/目录下。
拷贝Windows中./config/opencode/下的配置oh-my-opencode.json和opencode.json到wsl的用户目录/home/[user]/.config/opencode/。
迁移之后,退出opencode,再重新进入,如果提示配置错误,就按照错误提示进行问题修复,一般都是缺少插件,按照之前的逻辑进行重新安装即可。
注意事项
唯一需要注意的是,此时使用的npm和node.js实际是使用的Windows主系统的,虽然大多数时候不会存在问题,架不住有那么个意外,建议重新安装nodejs以及npm。
验证方式如下:
whereisnpm输出结果如下,表示实际还是使用的主系统的:
npm: /mnt/d/nvm/v20.19.5/npm迁移总结
以上为Windows迁移到Wsl中的整个过程,基本上没有太多的问题,主要还是考验读者对两个操作系统的应用下层环境变量部分的熟悉程度,在linux下能避免不少跨操作系统带来的文件目录层面的干扰问题。