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

Flutter启动锁占用问题求助:无法执行flutter pub get等命令

Flutter启动锁错误(错误代码69)解决方案

问题描述

执行flutter pub get或flutter doctor时,系统提示需等待另一个Flutter命令释放启动锁,最终以错误代码69退出,常规方案(杀进程、删锁文件、重装Flutter)无效。

针对性解决方案

  • 排查残留进程
    执行以下命令列出所有Dart/Flutter相关进程:

    ps aux | grep dart
    ps aux | grep flutter
    

    从输出中找到所有关联进程的PID,执行kill -9 <PID>强制终止,注意需先关闭所有IDE(如Android Studio、VS Code)实例,避免后台进程占用锁资源。

  • 修复目录权限
    若Flutter目录权限异常,会导致锁文件无法正常释放,执行:

    sudo chown -R $USER:staff <你的Flutter安装路径>
    

    例如Flutter安装在~/flutter,则命令为sudo chown -R $USER:staff ~/flutter。

  • 修正锁函数完整逻辑
    仅修改_lock函数不足以解决问题,需同步调整_unlock函数并切换为目录锁:

    1. 打开<Flutter目录>/bin/internal/shared.sh
    2. 替换_lock和_unlock函数为:
      function _lock () {
        if hash shlock 2>/dev/null; then
          shlock -f "$1" -p $$
        else
          mkdir "$1" 2>/dev/null
        fi
      }
      
      function _unlock () {
        if hash shlock 2>/dev/null; then
          shlock -u -f "$1" -p $$
        else
          rmdir "$1" 2>/dev/null
        fi
      }
      
    3. 找到文件开头的LOCKFILE定义,替换为目录路径:
      LOCKDIR="$FLUTTER_ROOT/bin/cache/lockdir"
      
    4. 全局替换所有_lock "$LOCKFILE"为_lock "$LOCKDIR",_unlock "$LOCKFILE"为_unlock "$LOCKDIR"
  • 替换系统锁工具
    Mac原生flock可能存在兼容性问题,通过Homebrew安装兼容版本:

    brew install coreutils
    

    随后修改shared.sh中依赖flock的逻辑,将所有flock调用替换为gflock(coreutils提供的兼容锁工具)。

内容的提问来源于stack exchange,提问作者Damien Beauducel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:07:02