repo sync fail: unable to read sha1 file of ...

本文解决了一个常见的Repo Sync问题,即在使用Gradle进行同步时出现的SHA1文件读取错误。通过删除特定的Gradle相关目录并重新同步,成功修复了错误。
【转】http://highaltitudeoolong.blogspot.com/2016/09/repo-sync-fail-unable-to-read-sha1-file.html
百度搜不到,转到这……

error: unable to read sha1 file of gradle-1.4-all.zip (25ee925013e572af4735884757af1e2228c103b0)
Traceback (most recent call last):
  File "/home/charles-chang/px3sdk_raw/.repo/repo/main.py", line 500, in 
    _Main(sys.argv[1:])
  File "/home/charles-chang/px3sdk_raw/.repo/repo/main.py", line 476, in _Main
    result = repo._Run(argv) or 0
  File "/home/charles-chang/px3sdk_raw/.repo/repo/main.py", line 155, in _Run
    result = cmd.Execute(copts, cargs)
  File "/home/charles-chang/px3sdk_raw/.repo/repo/subcmds/sync.py", line 675, in Execute
    project.Sync_LocalHalf(syncbuf)
  File "/home/charles-chang/px3sdk_raw/.repo/repo/project.py", line 1170, in Sync_LocalHalf
    self._InitWorkTree()
  File "/home/charles-chang/px3sdk_raw/.repo/repo/project.py", line 2230, in _InitWorkTree
    raise GitError("cannot initialize work tree")
error.GitError: cannot initialize work tree

可能是因為常常Ctrl-C 來中斷/resume repo sync , 所以最後 repo sync checkout 的時候, git 內容有錯了。

無稐怎樣 gc, fsck, 都沒辦法修復。
單獨,參考 manifest.xml 的 gradle project 去 clone 出來,checkout 也 OK

所以,只好...到 .repo/ 下 search 所以 gradl*:
有關的是:

./projects/tools/external/gradle.git
./project-objects/platform/tools/external/gradle.git


把這兩個刪掉。
整個 bsp 也刪掉,留下 .repo 這個 folder

然後再做 repo sync..就 OK了

 

如果仍然报错,再将gradle相关的所有上一级目录删除。

<think>我们正在解决用户在使用Repo命令时遇到的"manifest url is required"错误。这个错误通常发生在没有正确初始化Repo工作目录的情况下。根据引用[3]中的资料,使用Repo工具的第一步是进行`repo init`操作,指定manifest仓库的URL。 用户的问题描述是:"Repo command failed UpdateManifestError manifest url is required",这意味着用户尝试运行Repo命令(很可能是`repo sync`)之前没有运行`repo init`,或者`repo init`没有成功完成,导致没有正确的manifest配置。 解决步骤: 1. **确保已执行`repo init`**:这个命令用于初始化Repo工作目录,它会创建一个`.repo`目录,其中包含manifest仓库。如果没有执行这一步,或者执行失败,就会出现上述错误。 2. **正确使用`repo init`命令**:根据引用[3],`repo init`的基本格式是: ```bash repo init -u <manifest仓库的URL> -b <分支名> ``` 例如,使用清华镜像源初始化Android源码的示例: ```bash repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-14.0.0_r1 ``` 3. **检查网络连接**:引用[1]中提到了网络问题可能导致连接失败。如果初始化时无法访问manifest仓库的URL,也会导致失败。请确保网络畅通,能够访问manifest仓库的URL(如https://aosp.tuna.tsinghua.edu.cn/platform/manifest)。 4. **检查Repo工具安装**:引用[2]中提到了安装Repo工具的命令。请确保已经正确安装了Repo工具。在Linux上,可以通过以下命令安装(但注意,官方推荐的方法是下载repo脚本): ```bash sudo apt-get install repo # 但注意,有些系统可能通过这种方式安装的repo并不适合下载AOSP,最好按照官方方法下载 ``` 更推荐的方法是按照引用[3]中所示,下载repo脚本: ```bash mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo ``` 5. **如果已经初始化过,但出现错误**:可以尝试删除`.repo`目录(注意:这会重置初始化状态),然后重新初始化。 6. **验证manifest仓库URL**:确保你使用的manifest仓库URL是正确的,并且分支名存在。 具体步骤: 步骤1:安装Repo工具(如果尚未安装) 按照引用[3]的方法: ```bash mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo ``` 步骤2:设置PATH(如果还没有设置) 将以下内容添加到`~/.bashrc`或`~/.zshrc`中,然后执行`source ~/.bashrc`(或相应shell的配置文件): ```bash export PATH=~/bin:$PATH ``` 步骤3:初始化Repo仓库 进入你的工作目录(比如你要下载Android源码,就创建一个目录并进入): ```bash mkdir aosp cd aosp ``` 执行初始化命令(以清华镜像为例): ```bash repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-14.0.0_r1 ``` 注意:这里的分支名`android-14.0.0_r1`可以替换成你想要的分支。 步骤4:如果初始化成功,再执行同步 ```bash repo sync ``` 如果初始化过程中出现网络问题,可以尝试使用代理或者更换镜像源。 如果已经初始化过,但出现错误,可以尝试: ```bash rm -rf .repo # 注意:这将会删除之前的初始化信息,需要重新初始化 ``` 然后再次执行`repo init`。 错误原因总结: - 没有执行`repo init`就直接执行`repo sync` - 执行`repo init`时没有提供`-u`参数指定manifest仓库URL - `repo init`执行失败(如网络问题、URL错误等) 因此,请确保按照上述步骤正确初始化Repo工作目录。 §§相关问题§§ 1. 如何查看Repo支持哪些manifest分支? 2. 使用Repo时如何设置代理? 3. 如何解决Repo初始化过程中的证书验证失败问题? 4. Repo初始化失败后如何清理并重新开始?</think>### 解决 "manifest url is required" 错误 当使用 Repo 工具时出现 `manifest url is required` 错误,通常是因为未正确初始化 Repo 工作目录或缺少关键配置。以下是完整解决方案: #### 🔧 根本原因分析 1. **未执行 `repo init`**:Repo 需要 manifest 仓库才能工作 2. **环境变量未配置**:`REPO_URL` 环境变量缺失 3. **网络问题**:无法访问 manifest 仓库(参考引用[1]的网络问题) 4. **Repo 安装不完整**:工具未正确安装(参考引用[2]的安装问题) #### ✅ 完整解决步骤 1. **初始化 Repo 工作目录** ```bash # 创建项目目录 mkdir myproject && cd myproject # 初始化 Repo (使用清华镜像源) repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-14.0.0_r1 ``` 2. **检查环境变量** ```bash # 设置 REPO_URL (必需) export REPO_URL='https://gerrit.googlesource.com/git-repo' # 验证环境变量 echo $REPO_URL ``` 3. **修复网络连接问题** ```bash # 测试基础网络(参考引用[1]) ping www.baidu.com # 测试 Repo 服务器连接 curl -v https://gerrit.googlesource.com/git-repo # 若遇网络问题,重启网络服务 sudo systemctl restart network-manager ``` 4. **重新安装 Repo 工具** ```bash # 卸载旧版本 sudo apt remove repo -y # 安装最新版(参考引用[3]) mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo # 添加到 PATH echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` 5. **验证 Repo 安装** ```bash repo version # 应输出类似: repo launcher version 2.37 ``` #### ⚠️ 常见错误处理 1. **证书错误**: ```bash # 忽略 SSL 验证 (临时方案) export GIT_SSL_NO_VERIFY=1 ``` 2. **权限问题**: ```bash # 修复 .repo 目录权限 sudo chown -R $USER:$USER .repo/ ``` 3. **代理配置**: ```bash # 设置 HTTP 代理 export http_proxy=http://proxy.example.com:8080 export https_proxy=http://proxy.example.com:8080 ``` #### 🌐 推荐镜像源(参考引用[3]) | 镜像源 | 初始化命令 | |--------|------------| | 清华大学 | `repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest` | | 官方源 | `repo init -u https://android.googlesource.com/platform/manifest` | > **重要提示**:首次同步需使用 `repo sync` 而非直接操作 `.git` 目录,Repo 会自动管理所有子仓库的 Git 配置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值