如何在 GitHub Actions 工作流程中进行 apt-get install?

Posted

技术标签:

【中文标题】如何在 GitHub Actions 工作流程中进行 apt-get install?【英文标题】:How to apt-get install in a GitHub Actions workflow? 【发布时间】:2020-01-18 19:57:07 【问题描述】:

在新的 GitHub Actions 中,我正在尝试安装一个包,以便在后续步骤之一中使用它。

name: CI

on: [push, pull_request]

jobs:
  translations:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: Install xmllint
      run: apt-get install libxml2-utils
    # ...

然而这失败了

Run apt-get install libxml2-utils
  apt-get install libxml2-utils
  shell: /bin/bash -e 0
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
##[error]Process completed with exit code 100.

最好的方法是什么?我需要接触 Docker 吗?

【问题讨论】:

sudo apt-get install libxml2-utils docs 说“Linux 和 macOS 虚拟机都使用无密码 sudo 运行”,因此只需执行 sudo apt-get 即可,正如 @runwuf 建议的那样。 【参考方案1】:

docs 说:

Linux 和 macOS 虚拟机都使用无密码 sudo 运行。当您需要执行命令或安装需要比当前用户更多权限的工具时,您可以使用sudo,而无需提供密码。

因此,只需执行以下操作即可:

- name: Install xmllint
  run: sudo apt-get install -y libxml2-utils

【讨论】:

如果有人能提供关于为什么可能会这样做的见解,那就太好了... @Mike'Pomax'Kamermans:对sudo: command not found 的一种解释是,您在操作文件中创建了一个名为PATH 的环境变量,覆盖了用于定位命令的系统路径。问我怎么知道... 在这种情况下不是——我使用act 进行离线测试,而act 显然使用了一个没有 sudo 的图像,这很无稽之谈(它也缺少lsb-release,还有一大堆其他的东西让测试你的 github 操作基本上毫无意义) @NavidKhan 没有 sudo:Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) 如果只使用这一行,没有设置环境自动确认安装,是行不通的。请考虑编辑以将-y 选项添加到sudo apt-get install

以上是关于如何在 GitHub Actions 工作流程中进行 apt-get install?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GitHub Actions 工作流程中进行 apt-get install?

GitHub Actions:如何通过终端访问当前构建的日志

如何将降价页面附加到 GitHub Actions 工作流程运行摘要?

Github Actions - 如何使我的 env 变量(存储在 .env 文件中)在我的工作流程中可用

如何使用 Github Actions 发布对 Docker 镜像的更改

如何在 GitHub Actions 中使用最新发布标签?