You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行serverless upgrade时出现EXDEV跨设备链接不允许错误该如何处理?

解决Serverless升级时报EXDEV跨设备链接错误

问题根因补充

即便/tmp和根目录挂载在同一磁盘分区,只要两者属于不同文件系统(比如/tmp是内存挂载的tmpfs类型,属于虚拟文件系统,和磁盘文件系统不属于同一类),rename系统调用就会触发该错误。这是Serverless官方升级脚本的逻辑限制:它默认使用/tmp作为临时下载目录,再尝试直接重命名移动到用户目录下的目标路径。

解决方案

  • 方法1:指定同分区临时目录升级
    直接在升级命令前添加环境变量,指定Serverless使用用户目录下的路径作为临时目录,避免跨文件系统操作:
    SERVERLESS_TMP_DIR=~/.serverless/tmp npm install -g serverless
    
    如果你使用yarn作为包管理器,对应命令为:
    SERVERLESS_TMP_DIR=~/.serverless/tmp yarn global add serverless
    
  • 方法2:手动替换二进制文件
    如果你已经触发报错,说明临时二进制文件已经下载完成,直接手动复制替换即可,绕过重命名逻辑:
    1. 复制文件到目标路径:cp /tmp/serverless-binary-tmp ~/.serverless/bin/serverless
    2. 赋予执行权限:chmod +x ~/.serverless/bin/serverless
    3. 清理临时文件:rm /tmp/serverless-binary-tmp
      操作完成后执行serverless -v验证版本即可。
  • 方法3:卸载后全新安装
    如果上述方法都不生效,可先卸载旧版本再全新安装,全新安装逻辑不会触发跨文件系统重命名操作:
    npm uninstall -g serverless
    npm install -g serverless
    

注意事项

不要使用sudo权限安装/升级Serverless,否则会导致用户目录下的.serverless目录权限异常,后续升级仍然会触发同类报错。如果你已经用sudo操作过,先执行sudo chown -R $(whoami) ~/.serverless修复目录权限后再尝试升级。

内容的提问来源于stack exchange,提问作者Adam Smooch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:09:02