BitBucket Pipeline执行apt-get报错:bash: apt-get: command not found
解决BitBucket Pipeline中
apt-get: command not found问题 问题分析
从错误日志bash: apt-get: command not found能定位两个核心问题:
- 命令前的多余空格:换行转义后,
apt-get install前出现了多余空格,bash将带前导空格的apt-get识别为未知命令。 - 权限不足:BitBucket Pipelines默认以非root用户执行步骤,而
apt-get需要root权限才能运行——这和你本地Docker环境默认使用root用户的情况不同,所以本地能正常执行但Pipeline里报错。
解决方案
修改你的bitbucket-pipelines.yml配置,同时解决空格和权限问题:
image: ruby:3.0.3 pipelines: default: - step: name: Run minitests user: root # 指定以root用户执行步骤,获取apt-get操作权限 script: # Dependencies - apt-get update && \ apt-get install -y \ fonts-liberation \ libasound2 \ libatk-bridge2.0-0 \ libatk1.0-0 \ libatspi2.0-0 \ libcups2 \ libdbus-1-3 \ libdrm2 \ libgbm1 \ libgtk-3-0 \ libnspr4 \ libnss3 \ libu2f-udev \ libvulkan1 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxkbcommon0 \ libxrandr2 \ xdg-utils && \ rm -rf /var/lib/apt/lists/* # 对齐命令,移除多余前导空格 # Configure chrome and chromedriver - dpkg -i driver/117.0.5938.132/google-chrome.deb - export CHROMEDRIVER_PATH=driver/117.0.5938.132/ - export PATH="${CHROMEDRIVER_PATH}:${PATH}" - export BROWSER=:chrome - export LOAD=eager - gem install bundler - bundle install - rake runner:run_tests
关键修改说明
- 添加
user: root:让整个步骤以root用户运行,避免权限不足导致的apt-get执行失败,无需再使用sudo。 - 清理换行后的多余空格:确保每个换行后的命令(如
apt-get install、rm -rf...)前没有多余空格,避免bash识别错误命令。
额外验证
如果问题仍存在,可以在步骤开头添加which apt-get命令,确认apt-get的路径是否存在,验证镜像环境的一致性:
- which apt-get # 正常输出应为/usr/bin/apt-get
内容的提问来源于stack exchange,提问作者Cesar Chavana
相关产品推荐
相关产品推荐

