You need to enable JavaScript to run this app. iOS项目执行Carthage bootstrap更新Cartfile报错无法创建工作目录怎么办
优惠活动
大模型
产品
解决方案
定价
更多

iOS项目执行Carthage bootstrap更新Cartfile报错无法创建工作目录怎么办

报错根因定位

你遇到的Not a directory(POSIX错误码20)并非磁盘权限导致,核心矛盾是文件系统路径冲突:Carthage需要在目标项目路径下创建Carthage目录时,发现同路径下已存在同名的普通文件而非目录,无法完成工作目录创建流程。
从日志路径异常可以看到两个不匹配的路径:

  • 报错尝试写入的路径:/Users/alijaber/Documents/dgapp2-ios/Carthage
  • 前期拉取依赖的工作路径:/Users/alijaber/Documents/myApp/Carthage/Checkouts
    也侧面说明存在跨路径的配置错位问题。
分步修复操作
  • 第一步:定位路径冲突对象
    执行如下命令检查目标项目路径下的Carthage对象类型:
    ls -la /Users/alijaber/Documents/dgapp2-ios/ | grep Carthage
    输出如果是-rw-r--r-- ... Carthage(开头为-,代表普通文件),就是触发报错的直接原因,通常是之前误操作生成了无后缀的同名文件。
  • 第二步:清理冲突文件
    备份该文件内需要留存的内容后,删除这个冗余文件:
    rm /Users/alijaber/Documents/dgapp2-ios/Carthage
  • 第三步:修正工作目录错位问题
    确认你执行Carthage命令的路径和存放Cartfile、Cartfile.resolved的项目根目录完全一致,不要跨项目执行bootstrap命令,避免路径引用混乱。
  • 第四步:手动重建Carthage标准目录结构
    在项目根目录执行命令创建Carthage运行所需的基础目录,并修正目录权限:
    mkdir -p ./Carthage/{Checkouts,Build}
    chmod -R 755 ./Carthage
    
  • 第五步:重跑命令验证
    重新执行Carthage bootstrap --platform iOS --use-ssh,确认依赖拉取流程正常。
补充排查场景
  • 如果执行ls检查时发现Carthage条目被Git跟踪(即路径出现在git ls-files的输出中),说明你之前误将该路径配置为Git子模块,生成了无实际内容的文件指针,需要执行git rm --cached Carthage移除错误的跟踪记录后,再创建对应目录即可。
  • 如果清理完上述问题仍然报错,检查当前用户对项目根目录的写入权限,执行ls -ld /Users/alijaber/Documents/dgapp2-ios确认目录所有者是当前登录用户,权限位不限制写入操作。

注意:已经给Xcode开启的完全磁盘访问权限可以保留,该配置不会影响修复流程,仅在项目路径位于受系统保护的目录(如下载、桌面、文稿目录)时提供必要的写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 04:27:03