Databricks集群安装Google Chrome遇404错误,循环重试逻辑失效
解决Databricks集群中Google Chrome间歇性安装失败的问题
问题根源分析
- 原安装脚本语法错误:
apt-get update与apt-get install被错误合并在同一行,缺少分隔符,导致命令执行逻辑混乱。 - Ubuntu源包归档问题:报错中
udev_245.44ubuntu3.18_amd64.deb返回404,说明集群使用的旧版Ubuntu对应包已从主归档源移除,需切换至旧版本归档源。 - 重试脚本语法逻辑错误:while循环结构完全错误,且未处理
apt-get失败时的脚本终止问题,导致安装失败后直接退出循环。
修正后的基础安装脚本
先修复源配置与命令语法,确保单次安装逻辑正确:
# 导入Google签名密钥(修复原命令缺少的输入参数) sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - # 添加Chrome官方源(明确架构) sudo echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list # 替换Ubuntu主源为旧版本归档源,解决旧包404问题 sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list # 正确分隔更新与安装命令 sudo apt-get -y update && sudo apt-get -y --fix-missing install google-chrome-stable
正确的重试脚本
修复循环结构并添加错误捕获,确保安装失败后自动重试:
#!/bin/bash # 禁用脚本错误自动终止,避免安装失败直接退出 set +e # 设置最大重试次数,防止无限循环 MAX_ATTEMPTS=5 ATTEMPT=1 while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do echo "第 $ATTEMPT 次尝试安装Google Chrome..." # 执行完整安装流程 sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - sudo echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo apt-get -y update && sudo apt-get -y --fix-missing install google-chrome-stable # 检查安装状态 if google-chrome --version | grep -q "Google Chrome"; then echo "Google Chrome安装成功!" exit 0 else echo "第 $ATTEMPT 次安装失败,10秒后重试..." sleep 10 ATTEMPT=$((ATTEMPT + 1)) fi done echo "已尝试 $MAX_ATTEMPTS 次,安装失败。" exit 1
关键说明
- 源替换逻辑:旧版Ubuntu的软件包会被迁移至
old-releases.ubuntu.com,替换源可解决特定包404的问题。 - 错误处理:
set +e确保apt-get安装失败时脚本不会直接终止,保证重试逻辑正常运行。 - 冗余操作清理:移除了原重试脚本中与Chrome安装无关的
ppa:vikoadi/ppa操作,避免无效步骤干扰流程。
内容的提问来源于stack exchange,提问作者user3769597
相关产品推荐
相关产品推荐

