如何在GitHub Actions工作流程中轻松安装?


86

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


2
sudo apt-get install libxml2-utils
runwuf

4
文件说:“在Linux和MacOS的虚拟机都运行使用无密码sudo”,这样简单地做sudo apt-get应该工作,为@runwuf建议。
rmunn19年

哦,没想到。随时将其发布为答案。
尼克拉斯

@runwuf-您是否想要代表答案?继续并发布答案。我将自己张贴一个答案,以便该问题在搜索列表中看起来像是一个答案,但是如果您发布答案,Niklas应该接受它,然后我将删除我的答案。
rmunn19年

1
@rmunn不用担心,您的答案有别于我的一本班轮:)干杯!很高兴它为您工作@Niklas!
runwuf

Answers:


129

文件说:

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

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

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

2
如果有人可以提供为什么这样做的真知灼见,那就太好了……
MichaelChirico

2
@ Mike'Pomax'Kamermans:对此的一种解释sudo: command not found是,您PATH在操作文件中创建了一个环境变量,该环境变量将覆盖用于定位命令的系统路径。问我怎么知道...
Martin Liversage

10
但是在这种情况下不是-我正在使用 act离线测试,并act显然使用没有图像sudo的,它漂亮的废话(它缺少lsb-release,也和一个whoooole一堆其他的事情,使测试你的GitHub的行动基本上无意义)
Mike'Pomax'Kamermans

sudo这里不需要。
Naved Khan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.