Mac M2芯片运行Mongo run-rs报错Unknown system error -86求助
M2芯片Mac运行run-rs报错Unknown system error -86的解决思路
我在搭载M2芯片的Mac设备上运行run-rs -v 5.0.13 --shell时遇到错误,此前在Intel芯片设备上使用相同版本的Node.js(v16.13.1)可正常运行,错误信息如下:
% run-rs -v 5.0.13 --shell Purging database... Running '/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/5.0.13/mongod' [ 27017, 27018, 27019 ] Starting replica set... Error: spawn Unknown system error -86 at ChildProcess.spawn (node:internal/child_process:412:11) at spawn (node:child_process:698:9) at /Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/mongodb-topology-manager/lib/replset.js:94:18 at Promise._execute (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/bluebird/js/release/debuggability.js:384:9) at Promise._resolveFromExecutor (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/bluebird/js/release/promise.js:518:18) at new Promise (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/bluebird/js/release/promise.js:103:10) at ReplSet.discover (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/mongodb-topology-manager/lib/replset.js:93:12) at /Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/mongodb-topology-manager/lib/replset.js:159:33 at Generator.next (<anonymous>) at onFulfilled (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/co/index.js:65:19) at /Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/co/index.js:54:5 at new Promise (<anonymous>) at co (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/co/index.js:50:10) at /Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/mongodb-topology-manager/lib/replset.js:146:7 at Promise._execute (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/bluebird/js/release/debuggability.js:384:9) at Promise._resolveFromExecutor (/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/node_modules/bluebird/js/release/promise.js:518:18)
解决思路
错误根源:System error -86是Apple Silicon芯片的架构不兼容错误,run-rs下载的MongoDB 5.0.13是Intel(x86_64)架构版本,无法在ARM64的M2芯片上直接运行。
方案1:Rosetta 2转译运行
- 未安装Rosetta 2时先执行:
softwareupdate --install-rosetta - 切换到x86架构shell:
arch -x86_64 zsh - 重新执行run-rs命令:
run-rs -v 5.0.13 --shell
- 未安装Rosetta 2时先执行:
方案2:升级run-rs与MongoDB版本
- 卸载旧版run-rs:
npm uninstall -g run-rs - 安装最新版run-rs:
npm install -g run-rs - 使用支持ARM64的MongoDB版本运行,例如:
run-rs -v 5.0.14 --shell(5.0.14及以上的5.x版本,或6.x/7.x全系列均支持Apple Silicon)
- 卸载旧版run-rs:
方案3:手动替换ARM架构mongod文件
- 下载对应ARM64架构的5.0.x版本mongod二进制文件
- 替换run-rs目录下的mongod:将下载文件替换到
/Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/5.0.13/路径下 - 赋予执行权限:
chmod +x /Users/mattkuhns/.nvm/versions/node/v16.13.1/lib/node_modules/run-rs/5.0.13/mongod - 重新执行run-rs命令
内容的提问来源于stack exchange,提问作者Matt Kuhns
相关产品推荐
相关产品推荐

