You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab 15.0升级后CI作业sudo失效、apt源连接超时排查

故障原因

sudo: command not found 根因

GitLab 15.0版本升级后,官方共享CI Runner默认使用的容器基础镜像从预装了全套常用工具的标准Debian镜像,切换为了Debian精简镜像:

  • 这类精简镜像默认没有预装sudo组件
  • CI作业容器本身默认以root用户运行,本来就不需要sudo提权,旧版本镜像里的sudo属于冗余预装内容,升级后被裁剪掉了
  • 未修改CI配置、重跑历史作业仍复现故障,完全符合平台侧默认运行环境变更的特征,和仓库内的代码、配置改动无关

apt连接超时、找不到软件包根因

这个问题和sudo报错属于同一轮平台环境变更引发的连锁问题:

  • apt执行update时无法连接Debian官方源,本地包索引没有拉取成功,后续安装包时自然会报「Unable to locate package」类错误
  • 你之前尝试加的docker build --network host配置无效,是因为这个参数仅对docker in docker模式下的镜像构建操作生效,普通CI作业容器不支持直接调用宿主机网络,对apt等普通命令的网络连通性没有任何改善作用
修复步骤

所有操作都可以直接通过GitLab Web UI编辑.gitlab-ci.yml完成,不需要操作底层服务器或Runner配置:

  • 移除所有脚本里的sudo前缀,容器内默认root权限完全可以直接执行apt等命令
  • 在执行apt update前先替换系统默认的软件源为平台网络可达的镜像源,避免直连Debian官方源超时
  • 可选:显式指定使用稳定的旧版标准Debian镜像作为作业运行环境,彻底规避默认精简镜像的兼容问题

修改后的完整.gitlab-ci.yml参考配置如下:

stages:
  - deploy
variables:
  RA_NAME: "My_project"
  DEBIAN_FRONTEND: noninteractive
  image: debian:bullseye
default:
  before_script:
    - sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
    - sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
    - apt-get update -qq
    - apt-get install -y latex209-bin texlive-latex-base texlive-latex-extra ant zip unzip
    
deploy_Default:
  stage: deploy
  script:
    - sh -x deploy.sh "$RA_NAME" "$(cat RA_VERSION)"
  artifacts:
    paths:
      - "${RA_NAME}_$(cat RA_VERSION).zip"
  only:
    - master
    - dev
    - tags

配置里的DEBIAN_FRONTEND: noninteractive变量是为了屏蔽apt安装过程中的交互式提示,避免作业意外卡住。如果替换源后仍有连通性问题,可以换其他可用的软件源地址,不需要固定用示例里的源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:21:41