如何在GitHub Actions工作流程中使用apt-get install命令?

286
在新的 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 吗?


9
安装libxml2-utils库:在终端输入sudo apt-get install libxml2-utils - runwuf
12
文档中提到,“Linux和macOS虚拟机都使用无需密码的sudo运行”,因此只需要像@runwuf建议的那样简单地执行“sudo apt-get”即可。 - rmunn
2个回答

409

文档中描述:

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

所以只需要简单地执行以下操作即可:

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

4
希望有人能够提供一些见解,解释为什么会这样做... - MichaelChirico
8
"sudo: command not found" 的一个解释是,您在操作文件中创建了一个名为 PATH 的环境变量,覆盖了系统用于定位命令的路径。问我怎么知道... - Martin Liversage
22
但这种情况并非如此。我正在使用 act 进行离线测试,而 act 显然使用的是一个没有 sudo 的镜像,这相当荒谬(它也缺少 lsb-release,以及一大堆其他使测试 GitHub Actions 基本无意义的东西)。 - Mike 'Pomax' Kamermans
11
没有使用sudo命令:无法打开锁定文件/var/lib/dpkg/lock-frontend - open (13: Permission denied) - 030
5
如果您仅使用这一行命令,而没有设置环境以自动确认安装,则无法正常工作。请考虑编辑该命令,并在 sudo apt-get install 后添加 -y 选项。 - user
显示剩余4条评论

18
请查看这里的答案:https://dev59.com/cVIH5IYBdhLWcg3wh_On#73500415 cache-apt-pkgs-action 可以安装和缓存apt软件包,因此您的后续构建将更快。它也更容易配置,只需添加您想要的软件包即可:
      - uses: awalsh128/cache-apt-pkgs-action@latest
        with:
          packages: dia doxygen doxygen-doc doxygen-gui doxygen-latex graphviz mscgen
          version: 1.0

1
这就是梦想的实现。谢谢! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接