编译Code-OSS后生成.deb文件报错:spawn /bin/sh ENOENT
spawn /bin/sh ENOENT错误 问题场景
已完成VSCode官方《How to Contribute》指南中的所有步骤,$ npm run gulp vscode-linux-x64编译成功,但执行$ npm run gulp vscode-linux-x64-build-deb生成.deb文件时触发以下错误:
code-oss-dev@1.97.0 gulp
node --max-old-space-size=8192 ./node_modules/gulp/bin/gulp.js vscode-linux-x64-build-deb
[22:09:08] Using gulpfile /workspaces/vscode/gulpfile.js
[22:09:08] Starting 'vscode-linux-x64-build-deb'...
[22:09:08] 'vscode-linux-x64-build-deb' errored after 6.99 ms
[22:09:08] Error: spawn /bin/sh ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
解决方案
1. 检查并修复/bin/sh路径
ENOENT错误表示系统找不到/bin/sh,先执行命令确认路径状态:
ls -l /bin/sh
若文件不存在,可通过软链接指向系统已有的shell(如bash):
sudo ln -s /bin/bash /bin/sh
Debian/Ubuntu系默认sh指向dash,也可安装dash修复:
sudo apt update && sudo apt install dash
2. 安装生成.deb所需的依赖工具
生成deb包依赖fakeroot、dpkg-dev等工具,确保这些组件已安装:
sudo apt update && sudo apt install build-essential fakeroot dpkg-dev
3. 验证环境shell配置
确认当前用户的默认shell路径有效:
echo $SHELL
输出应指向存在的shell文件(如/bin/bash或/bin/dash),若路径错误,可通过chsh命令修改默认shell。
4. 重新执行deb生成命令
完成上述修复后,重新运行生成命令:
npm run gulp vscode-linux-x64-build-deb
内容的提问来源于stack exchange,提问作者Muhammad Ozair

