bash:apt-get:在 bitbucket 管道中找不到命令

问题描述 投票:0回答:1

我一直在尝试构建一个管道来测试我在 bitbucket 中的部署,但我不断遇到这个问题

+ 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/*
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 http://security.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Get:3 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:4 http://security.debian.org/debian-security bullseye-security/main amd64 Packages [271 kB]
Get:5 http://deb.debian.org/debian bullseye/main amd64 Packages [8068 kB]
Get:6 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [18.8 kB]
Fetched 8565 kB in 1s (6690 kB/s)
Reading package lists...
bash:  apt-get: command not found

做了一些研究,问题可能出在我使用的图像中,但是在 docker 中使用相同的图像效果很好,所以我真的不知道问题出在哪里

这是我的 yml 文件

image: ruby:3.0.3

pipelines:
  default:
    - step:
        name: Run minitests
        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

欢迎任何帮助

我尝试使用 sudo ,这实际上是同样的问题,还尝试使用另一个数据包管理器并得到相同的结果

ruby docker pipeline bitbucket-pipelines apt-get
1个回答
0
投票

您可以去掉脚本行末尾的反斜杠。

反斜杠用于声明由 Bash 直接解释的多行命令。

但是在 YAML 中您所看到的并不是您所得到的。多行被转置为单行,反斜杠在应为转义字符时被解释为常规字符。例如以下 YAML:

script:
    - apt-get update \
    && apt-get install foo

将有以下 JSON 输出:

{
  "script": [
    "apt-get update \\ && apt-get install foo"
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.