Azure DevOps自托管RHEL9代理Python工具缓存目录匹配错误求助
解决方案及工具目录要求
问题排查与修复步骤
1. 确认AGENT_TOOLSDIRECTORY环境变量的正确性
Linux环境变量区分大小写,确保代理机器上设置的是大写的AGENT_TOOLSDIRECTORY,值与报错中显示的路径一致(即/home/<user>/myagent/_work/_tool)。执行以下命令验证:
echo $AGENT_TOOLSDIRECTORY
若路径不符,重新设置环境变量并重启代理。
2. 补全核心识别文件Python.json
UsePythonVersion@0任务依赖版本目录下的Python.json文件识别版本信息,这是你可能遗漏的关键步骤:
进入/home/<user>/myagent/_work/_tool/Python/3.9目录,创建该文件:
cat > Python.json <<EOF { "version": "3.9.18", "architecture": "x64" } EOF
3. 构造符合要求的Python工具目录结构
任务需要工具目录内有标准Python安装的完整结构(可执行文件、库、头文件),直接软链接系统预装的Python即可:
# 创建必要目录 mkdir -p /home/<user>/myagent/_work/_tool/Python/3.9/x64/{bin,lib,include} # 链接可执行文件 ln -s /usr/bin/python3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/bin/python ln -s /usr/bin/python3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/bin/python3 ln -s /usr/bin/python3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/bin/python3.9 ln -s /usr/bin/pip3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/bin/pip ln -s /usr/bin/pip3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/bin/pip3 ln -s /usr/bin/pip3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/bin/pip3.9 # 链接库和头文件 ln -s /usr/lib/python3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/lib/python3.9 ln -s /usr/include/python3.9 /home/<user>/myagent/_work/_tool/Python/3.9/x64/include/python3.9 # 创建完成标记文件(空文件即可) touch /home/<user>/myagent/_work/_tool/Python/3.9/x64/x64.complete
4. 重启自托管代理
修改目录结构后,重启代理让其重新加载工具目录:
cd /home/<user>/myagent ./svc.sh stop ./svc.sh start
工具目录的具体要求
- 目录层级:必须严格遵循
${AGENT_TOOLSDIRECTORY}/<工具名>/<版本号>/<架构>/的结构,例如/home/<user>/myagent/_work/_tool/Python/3.9/x64/。 - 核心识别文件:版本号目录下必须存在
<工具名>.json(如Python.json),需包含version(具体版本号,如3.9.18)和architecture(如x64)两个字段,用于任务匹配版本规格。 - 完成标记文件:架构目录下的
<架构>.complete空文件,用于告知代理该版本工具已安装完成。 - 工具内容:架构目录内需要有标准Python安装的完整结构,包括
bin(可执行文件)、lib(依赖库)、include(头文件)等,确保任务能从该目录独立调用Python,不依赖系统路径。
内容的提问来源于stack exchange,提问作者Lbits
相关产品推荐
相关产品推荐

