如何在 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 文件中)在我的工作流程中可用