AWS EC2 Linux实例升级Dart SDK至3.5.0版本遇阻求助
问题:AWS EC2 Linux实例无法升级Dart SDK至3.5.0
我用Serverpod和Terraform部署到AWS服务器,pubspec.yaml要求必须使用Dart SDK 3.5.0,但部署后出现502网关错误,提示:
当前Dart SDK版本为3.1.0(EC2 Linux实例上的版本)。
因_server要求SDK版本3.5.0,版本解析失败。
尝试过的安装脚本
echo "Installing dart" wget -q https://storage.googleapis.com/dart-archive/channels/stable/release/3.5.0/sdk/dartsdk-linux-x64-release.zip unzip -q dartsdk-linux-x64-release.zip sudo mv dart-sdk/ /usr/lib/dart/ sudo chmod -R 755 /usr/lib/dart/ echo 'export PATH="$PATH:/usr/lib/dart/bin"' >> /etc/profile.d/script.sh
遇到的错误
执行脚本时提示:
无法将dart-sdk移动至/usr/lib/dart/,文件已存在。
尝试删除/usr/lib/dart/下的dart-sdk目录时,提示:
无法删除该目录。
当前EC2实例上Dart版本仍为3.1.0,需要升级至3.5.0。
解决方案
1. 强制替换现有SDK目录
直接用rsync同步新SDK覆盖原有文件,避免移动/删除失败的问题:
# 下载并解压3.5.0版本 wget -q https://storage.googleapis.com/dart-archive/channels/stable/release/3.5.0/sdk/dartsdk-linux-x64-release.zip unzip -q dartsdk-linux-x64-release.zip # 强制同步新SDK到目标目录,覆盖所有原有内容 sudo rsync -av --delete dart-sdk/ /usr/lib/dart/ # 修复目录权限 sudo chmod -R 755 /usr/lib/dart/
2. 调整环境变量优先级
确保新SDK的bin目录在PATH最前端,避免系统优先调用旧版本:
# 当前会话临时生效 export PATH="/usr/lib/dart/bin:$PATH" # 永久生效(覆盖原有配置) echo 'export PATH="/usr/lib/dart/bin:$PATH"' | sudo tee /etc/profile.d/dart.sh sudo chmod +x /etc/profile.d/dart.sh
3. 解决无法删除目录的权限问题
如果必须删除旧目录,先检查权限和挂载状态:
# 查看目录所属和权限 ls -ld /usr/lib/dart # 强制删除目录(root权限执行) sudo rm -rf /usr/lib/dart # 若提示只读,重新挂载为读写 sudo mount -o remount,rw /usr/lib
删除成功后再执行mv dart-sdk/ /usr/lib/dart/完成替换。
4. 验证安装结果
执行以下命令确认版本:
dart --version
正常输出应为Dart SDK version: 3.5.0 (stable) (...)
内容的提问来源于stack exchange,提问作者Husain Nahar
相关产品推荐
相关产品推荐

