depot_tools问题记录 - 执行fetch/gclient命令无响应

news2024/11/14 18:44:04

文章目录

  • 前言
  • 开发环境
  • 问题描述
  • 问题分析
  • 解决方案
  • 最后


前言

在研究将Dart dill文件序列化为可读文本时遇到的问题。

开发环境

  • macOS: 13.4

问题描述

之前使用depot_tools中的fetch/gclient命令还是正常的,今天想实测--no-history参数时突然遇到命令无响应的情况。

fetch命令在终端中无响应无任何输出,gclient命令在终端中输出Updating depot_tools...后也无响应。

问题分析

首先想到会不会是网络问题,检查一番发现网络是正常的,代理什么的也是正常的,而且如果是网络问题应该会有网络链接超时之类的报错。

尝试重新获取depot_tools

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

获取成功没报错,再次执行fetch/gclient命令,发现有下载东西,对比前后大小差了大概600MB。对比文件主要是增加一些可执行文件,特别是新增的.cipd_bin目录,有400多MB大小,不过应该是正常的。

折腾了一番没什么头绪,不过执行fetch --no-history dart命令时提前终止后输出了一个错误:

failed to install infra/tools/luci/vpython/mac-arm64: context canceled

咦?这个错误虽然不确定是否和当前问题有关系,但是看到vpython我想到fetch/gclient命令本质都是python脚本,会不会问题出在python脚本的执行呢?暂时不好做出判断,仔细想了想昨天和今天的操作真没什么区别,等等,depot_tools的版本好像变了,每次执行fetch/gclient命令会自动更新depot_tools

depot_tools没有明确的发行版本,本质是Git项目,每一个提交就是一个版本。找到历史提交记录:

screenshot1

看到刚提交不久的记录增加了新的vpython,结合前面的猜测,严重怀疑问题就是这个提交导致的,新的vpython导致python脚本执行不正常,接下来就是验证怀疑。

depot_tools切换到可能有问题版本的上一个版本,在depot_tools项目根目录路径下执行:

git checkout d0b85e47dc0a142bb7f2c3c40f5c4956e6f87227

再次执行fetch/gclient命令,结果还是先自动更新到最新版本,看来得先禁止自动更新。

Updating depot_tools...当作关键词搜索可以快速定位自动更新调用的是depot_tools中的update_depot_tools,这个本质是一个shell脚本,所以可以用文本工具打开。关键部分:

# Update git checkouts.
if [ "X$DEPOT_TOOLS_UPDATE" != "X0" ]; then
  echo "Updating depot_tools..." 1>&2
  if [ -e "$base_dir/.git" ]; then
    cd "$base_dir"
    update_git_repo
    UPDATE_RESULT=$?
    cd - > /dev/null
    if [[ $UPDATE_RESULT -ne 0 ]]; then
      exit $UPDATE_RESULT
    fi
  else
    echo "Warning: Your depot_tools directory does not appear to be a git repository, and cannot be updated." 1>&2
    echo "Consider deleting your depot_tools directory and following the instructions at https://www.chromium.org/developers/how-tos/install-depot-tools/ to reinstall it." 1>&2
  fi
  ...
fi

从源码可知,当环境变量DEPOT_TOOLS_UPDATE等于0时将不会继续往下执行更新操作,至于X$DEPOT_TOOLS_UPDATE中拼接X的作用是避免当DEPOT_TOOLS_UPDATE环境变量未定义时出现报错。关于禁用自动更新官方文档也有说明:

screenshot2

搞清楚了怎么禁止自动更新,接下来就是设置环境变量。在~/.bashrc~/.zshrc文件中加上:

export DEPOT_TOOLS_UPDATE=0

当然,你也可以直接在命令行窗口中输入export DEPOT_TOOLS_UPDATE=0设置临时的环境变量。设置后可以通过printenv命令查看环境变量是否设置成功。

将版本重新切换为d0b85e47dc0a142bb7f2c3c40f5c4956e6f87227,再次执行fetch --no-history dart命令,没有自动更新,一切正常🎉。

那一定是那个版本的问题吗?将版本切换为怀疑有问题的版本:

git checkout ae21f6a5ec30b63e4b8405fc5a783eb242ef10c5

再次执行fetch --no-history dart命令,问题重现了!

解决方案

在问题修复之前,可以按以下步骤操作暂时解决这个问题:

  1. 禁用自动更新

~/.bashrc~/.zshrc文件中加上:

export DEPOT_TOOLS_UPDATE=0

当然,你也可以直接在命令行窗口中输入export DEPOT_TOOLS_UPDATE=0设置临时的环境变量。设置后可以通过printenv命令查看环境变量是否设置成功。

  1. 指定depot_tools版本

depot_tools项目根目录路径下执行:

git checkout d0b85e47dc0a142bb7f2c3c40f5c4956e6f87227
  1. 继续执行原先的fetch/gclient等命令

最后

如果这篇文章对你有所帮助,请不要吝啬你的点赞👍加星🌟,谢谢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 删除 key用 del 和 unlink 有啥区别?

问题 del 和 unlink 有啥区别啊?为什么String类型删除不会做异步删除? 彬彬回答 DEL 和 UNLINK 都是同步的释放 key 对象,区别是怎么释放后面的 value 对象 DEL 每次都是同步释放 value 部分,如果 value 很大,例如一…

Openssh升级方法详解

项目组linux服务器被绿盟扫描出openssh 1.0.2版本有漏洞,需要升级到7.5版本,以下是升级过程: 第一步 安装Telnet服务 先下Openssh软件包 看你需要什么版本http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ 1.查看当前的ssh服务版本 …

【前端】网页开发精讲与实战 HTML Day 2

🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:前端 💬总结:希望你看完之后,能对你有…

看完这篇 教你玩转渗透测试靶机Vulnhub——The Planets:Mercury

Vulnhub靶机The Planets:Mercury渗透测试详解 Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:Vulnhub靶机漏洞详解:①:信息收集:②:漏洞发现:③:SSH登入:…

架构师进阶之路 - 微服务怎么划分

目录 微服务划分目标 业务、技术、团队导向规划服务 领域检查 依赖DAG检查 分布式事务检查 性能分布检查 稳定(易变)性检查 调用链检查 微服务划分目标 我们常说服务的合理划分是微服务成功的重中之重,一个合理的服务划分应该符合一下…

SQL中如何用快照,恢复被误删的数据?

什么是快照 数据库快照是sql server 2005的一个新功能。MSDN上对它的定义是: 数据库快照是数据库(称为“源数据库”)的只读静态视图。在创建时,每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库…

THREE.JS镜头随鼠标晃动效果

为了让动画更灵活并且简单 借助gsap让其具有更多可能,在未来更容易扩充其他动效 gsap Dom跟随鼠标移动 gsap.quickTo() 首先要监听鼠标移动,并且将移动的值转换到 -1 和 1 之间 方便处理 private mousemove(e: MouseEvent) {const x (e.clientX / inner…

spring10-配置数据元

他的作用是提高我们程序性能的:我们怎么用呢!先创建我们数据源对象:创建初始化对象之后,创建数据源对象之后,会给我们一些初始化资源。 使用完后还给他 ,这是一种环保的思想。 常见的数据源:底…

干货-卷起来,企业级web自动化测试实战落地(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 WebDriver的基本使…

毫米波雷达 TI IWR1443 测试官方程序(Out Of Box Demo)

IWR1443 windows 文章目录 1、准备工作1.1、mmWave SDK1.2、Code Composer Studio(CCS)1.3、Uniflash1.4、TI Cloud Agent 2、导入工程3、烧录3.1、先将 IWR1443 调到 Flashing Mode3.2、使用 UniFlash 软件 4、运行GUI4.1、IWR1443 调到 Functional Mo…

【计算机组成与体系结构Ⅰ】实验0 Logisim 入门实验

一、实验目的 1:掌握加减法器工作原理。 2:能够设计出一个n位加减法器。 3:熟悉Logisim软件使用。 二、实验环境 (1)Logisim 2.7.1 (2)Microsoft Windows 10 三、实验内容 1:设…

FastAPI中如何正确理解和使用:async和await

1 缘起 项目需要, 技术选型使用FastAPI。 开发过程中,遇到需要异步操作的场景, 查阅相关FastAPI异步信息的过程中,发现了async和await组合技, 通过阅读官方文档和实际测试,发现,async和await并不是传统意义上的异步(如线程池异步执行任务), async和await的融合技是应…

SEGA: Semantic Guided Attention on Visual Prototype for Few-Shot Learning

方法比较简单,利用语义改进prototype,能促进性提升

如何系统学习分布式?

关键词:想要走存储/数据库方向的话,具体路线是啥?重点需要掌握精通哪些知识? 回答 那我简单说一下走存储/数据库这块的学习路线吧。 目前做存储比较热门的是分布式存储方向,有NoSQL的也有关系型数据库的&#xff0c…

21.DAC数模转换

1.STM32 DAC介绍: DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。 DAC主要特性: 2个DAC转换器,每个转换器对应1个输出通道;8位或者12位单调输出;12位模式下数据左…

Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测

Coggle 30 Days of ML(23年7月)任务五:XGBoost训练与预测 任务五:使用TFIDF特征和XGBoost完成训练和预测 说明:在这个任务中,你需要使用TFIDF特征和XGBoost算法完成训练和预测,进一步提升文本…

Matlab数学建模实战——(Lokta-Volterra掠食者-猎物方程)

1.题目 问题1 该数学建模的第一问和第二问主要是用Matlab求解微分方程组,直接编程即可。 求解 Step1改写 y(1)ry(2)f Step2得y的导数 y(1).2y(1)-ay(1)*y(2)y(2).-y(2)a*y(1)*y(2) Step3编程 clear; a0.01; F(t,y)[2*y(1)-a*y(1)*y(2);-y(2)a*y(1)*y(2)]; […

【Mac】Mac 通过路径找到对应的文件夹

mac 的快捷键 复制文件夹或文件全路径 命令:command Option C 跳转文件夹或文件 命令:command shift G 其他待补充

hexo #02 基本操作

本篇主要步骤 1、创建博客 1、创建博客 使用 $ hexo new [layout] <title>命令创建一篇新的博客。 PS hexo> npx hexo new post "test" Debugger attached. Debugger attached. INFO Validating config INFO Created: D:\hexo\source\_posts\test.md Wa…

MySQL表单查询以及多表查询

1.单表查询 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT NULL, hi…